středa 26. září 2018

Zajímavost: Telnet

Někteří z vás možná znají příkaz telnet, dostupný na většině operačních systémů, který se občas používá na textovou komunikaci pomocí protokolu TCP. Jeho původní účel byla nicméně podpora protokolu telnet (standardně na portu 23), který byl vytvořen za účelem vzdáleného přístupu k terminálům (jako jeden z nejstarších).

Telnet umožňuje přenášet proud jakýchkoliv dat, ale obsahuje také příznaky pro řízení komunikace, které mohou být obsaženy mezi datovými bajty. Pro jejich nastavení se používají čtyři typy zpráv: WILL, DO, WON'T, DON'T. Zajímavé je, že tyto zprávy mohou být použity jak v požadavku, tak i v odpovědi na něj a občas ani nemusí být jasné, o jakou pozici se jedná.

Telnet je diplomatický protokol – obě strany komunikace jsou si rovnocenné a musejí se vzájemně dohodnout na parametrech přenosu pomocí výše zmíněných zpráv. Příklad takové úvodní komunikace mezi zařízeními A a B může být třeba:

A: DO ECHO
B: WILL ECHO

V této komunikaci A požaduje po B, aby vracel zpět přijaté znaky (příznak ECHO), protože A je zobrazovat nebude. Všimněte si ale, jak se změní komunikace po malé úpravě:

B: WILL ECHO
A: DO ECHO

V tomto případě B informuje A, že bude opakovat přijaté znaky zpět. A s tímto návrhem souhlasí a svou zprávou to potvrzuje.

Tento systém komunikace je sice zajímavý, ale není z něj úplně patrné, jak se má zařízení chovat, pokud druhá strana odmítne spolupracovat. Komunikace by mohla probíhat například i takto (z pohledu A):

A: DO ECHO
B: WON'T ECHO
A: DON'T ECHO

A se nejspíš bude muset smířit, že B nedokáže jeho požadavku vyhovět a tak si zadané znaky bude opakovat sám, což poraženecky potvrdí. Jenomže vzápětí přijde od B zpráva WILL ECHO. Člověku může připadat, že B to asi nemá úplně jasno v obvodech, ale podívejme se, jak komunikaci pozoruje B:

B: WON'T ECHO
A: DO ECHO
B: WILL ECHO
A: DON'T ECHO

B napřed naznačí, že nechce opakovat znaky, ale A to nepotvrdí, a tak B nakonec souhlasí. V důsledku duplexní komunikace jsou totiž dvojice zpráv prohozeny, a tak B vnímá jako odpověď to, co A chtělo jako požadavek. Záměna těchto zpráv způsobí, že oběma zařízením asi musí připadat, že se to druhé zbláznilo, protože nesouhlasí ani s jednou ze dvou jediných možných variant. Komunikace takhle může probíhat donekonečna, pokud to síťové podmínky dovolí a ani jedna strana není natolik pokročilá, aby tomu zabránila.

Telnetový vtip

Už jsem slyšel vtip o TCP i o UDP, takže se pokusím o vtipnou konverzaci v telnetu. Příkazy jsou obdařené popisky:

A: DO ECHO (opakuj po mně)
B: WON'T ECHO (nechci)
A: DO ECHO (musíš po mně opakovat)
B: WON'T ECHO (nebudu)
A: DO ECHO (opakuj, nebo uvidíš)
 B: WON'T ECHO (nehodlám opakovat)
A: WILL SUBLIMINAL-MESSAGE (tak budu zobrazovat podprahové zprávy)
 B: DON'T SUBLIMINAL-MESSAGE (prosím, nedělej to)
 A: DO ECHO
 B: WILL ECHO

Docela rád bych viděl zařízení, se kterým by se takhle muselo komunikovat.

pátek 7. září 2018

Nekonečna

Nekonečno bylo něco, co mě fascinovalo už od dětství. Již okolo třetí třídy jsem se ptal učitelek na základní škole, jestli nekonečno je číslo, a pokud je, zdali existuje kupříkladu ∞ + 1. Žel bohu, jejich kvalifikace nedostačovala na to, aby mohly uspokojit moji touhu po poznání, a tak mi trvalo skoro 10 let, než jsem si byl schopen na tuto otázku odpovědět sám.

Vzhledem k tomu, za jak fascinující toto téma v matematice považuji, jsem se rozhodl lehce přiblížit různé způsoby, jak lze na nekonečno nahlížet, v tomto článku (a taky je čas, abych konečně napsal něco matematického).

Začneme překvapivým zjištěním... 

Nekonečno neexistuje

Jak můžu vyprávět o něčem, co neexistuje? Zatím nemohu, ale v matematice si stačí nějakou věc vymyslet, definovat, a už existuje. Tak to opravdu je; není potřeba mít nějakou analogii v reálném světě, stačí definovat nějaký objekt a už o něm můžeme hovořit. Dokud nedefinuji, co vlastně nekonečno je, otázky jako "Kolik je ∞ – ∞?" apod. nemají smysl (jednak nikam nevedou, druhak se na ně nedá odpovědět).

Zatím máme pouze intuitivní představu o tom, co je číslo, tedy posloupnost číslic (stačí nám celá čísla). Taktéž mohu předpokládat chápaní pojmů konečnost/nekonečnost, protože už pracujeme s nekonečnými množinami (všech čísel). Pokud bychom chtěli vytvořit nekonečno jako číslo, mohli bychom například říci, že se jedná o nekonečnou posloupnost číslic (směrem doleva). Tím nám vzniká hromada nekonečen (podle naší nové definice), ale taky hromada problémů. Pokud použijeme standardní porovnávání čísel, největší možné číslo by bylo ...999,999..., což je ...999 + 1 (patrně sudé číslo), ale to podle našeho nového systému stále nejsme schopni vyjádřit (a mluvit o něm jako o 1000...0 by bylo jako mluvit o poslední číslici pí). Navíc tento systém je příliš pevně vázán na zvolený základ číselné soustavy (10), neboť třeba ve trojkové soustavě by největší číslo bylo ...222 + 1, což je ale zase liché číslo.

Tento navržený systém má mnoho chyb a nakonec se ani nedá dobře využít (nicméně existují takzvaná p-adická čísla, která jsou vyjádřena nekonečnou posloupností před desetinnou čárkou, ale o těch se zase nedá mluvit jako o nekonečnech). Čistě numericky se na nekonečno dobře jít nedá; ve většině systémů nemůžeme mluvit o jeho číslicích, ani s ním provádět standardní aritmetické operace, ale přesto je zavedeno jako prvek rozšiřující běžné číselné množiny. Nyní se podíváme na první z nich.

Rozšířená osa reálných čísel

Budiž nekonečno, respektive dvě nekonečna (+∞ a –∞). K reálným číslům stačí přidat dvě nová, "nevlastní" čísla, ke kterým se dostaneme, půjdeme-li nekonečně dlouho jedním ze dvou možných směrů. To se hodí v matematické analýze pro popis funkcí, počítání limit, derivací apod. Operace s nekonečny jsou odvozeny od limit. Roste-li například nějaká funkce nade všechny meze, říkáme, že v nekonečnu (tedy pro zvětšující se x) dosáhne nekonečna (tedy má nekonečnou limitu, neustále zvětšující se y).

Tím jsme schopni popsat výrazy jako ∞ + ∞, ∞ × ∞ (součet a součin dvou neomezeně rostoucích funkcí je neomezeně rostoucí funkce), ∞ + 1 apod., což je všechno rovno nekonečnu. Také výraz 1 / ∞ má jasnou hodnotu, 0. Samotné nekonečno dostaneme třeba z výrazu 1 / 0 (což ale může být i záporné nekonečno, pokud ta nula je "záporná"). Problém nastává v momentě, kdy nekonečno není dostačující informace k tomu, abychom mohli určit chování rozdílu či podílu dvou funkcí. Výrazy ∞ × 0, ∞ / ∞ či ∞ – ∞ jsou neurčité, můžou být to či ono v závislosti na tom, odkud vzešly, a k dalšímu počítání se nám už nijak nehodí. Možná to vypadá jako nedostatek, že některé výrazy nemají jasnou hodnotu, ale bez nekonečna by ji neměl ani výraz 1 / 0 a koneckonců 0 / 0 ji nemá ani s nekonečnem.

Z této aritmetiky vychází taky způsob digitálního ukládání desetinných čísel (standard IEEE 754). V něm se zvlášť ukládá řád čísla a pevný počet číslic na nejvyšším místě, ale dvě speciální hodnoty jsou označeny jako nekonečno a velký rozsah speciálních hodnot jsou nečísla, která vzniknou používáním neurčitých výrazů. Tento standard zná navíc i zápornou nulu.

Projektivní roviny

Pokud si z geometrie vezmeme přímky a body, ale odstraníme jakékoliv ponětí o vzdálenostech a tvarech, dostáváme se zavedením několika axiomů (mezi každými body je jedna přímka, každé přímky se protnou v jednom bodě apod.) projektivní rovinu. V takové rovině tedy neexistují rovnoběžky.

Pokud chceme stejnou konstrukci aplikovat na standardní reálnou rovinu, dostáváme reálnou projektivní rovinu. Problém s rovnoběžností stále zůstává; musíme tedy říct, že (nekonečné) rovnoběžky se protnou v nekonečnu, které je pouze jediné a je dosažitelné nekonečnou cestou v jakémkoliv směru (a půjdeme-li dál, vyjdeme z opačného směru). V určitém ohledu se tedy jedná o geometrický protiklad nuly, který může vzniknout například transformací povrchu koule na rovinu (jeden pól se transformuje na nulu, druhý na nekonečno).

Homogenní souřadnice

Při promítání prostoru pomocí perspektivy je často výhodné reprezentovat souřadnice pomocí homogenního systému souřadnic, kde navíc ke standardním třem prostorovým souřadnicím přibude jedna nová, označovaná jako váha. Takové souřadnice mají některé hezké matematické vlastnosti, které umožňují snazší výpočty (posun pomocí matice). Chceme-li homogenní souřadnice převést na standardní, stačí všechny prostorové souřadnice vydělit vahou (kanonická váha je 1).

Tak kupříkladu homogenní bod [4; 6; 8; 2] je kartézský bod [2; 3; 4], jehož kanonická homogenní reprezentace je [2; 3; 4; 1]. Z tohoto příkladu je také patrné, že homogenní souřadnice lze vynásobit či vydělit libovolnou hodnotou, aniž by se tím změnila pozice bodu samotného. Jakému bodu by ale odpovídaly souřadnice [4; 6; 8; 0]? Dělení nulou v tomto systému není definováno, ale přesto může být užitečné používat body s nulovou vahou pro reprezentaci směrů. Zatímco úsečka mezi body s nenulovými vahami vypadá geometricky tak, jak bychom očekávali od úsečky, úsečka směřující do bodu [a; b; c; 0] je vlastně polopřímka se směrem daným vektorem (a; b; c). A tím se zase vracíme k projektivním rovinám, neboť nám tu vlastně pro každý směr vzniká jeden bod v nekonečné vzdálenosti od počátku.

Toto geometrické pojetí nekonečna je i víceméně intuitivní vzhledem k polopřímkám z příkladu. Snižujeme-li váhu bodu, geometricky ho tím posouváme dále od počátku, a tedy úsečka spojující tento bod s jiným bodem se stále více blíží rovnoběžce.

Součet řady

Dá se ukázat, že řada 1 + 1/2 + 1/4 + 1/8 + 1/16 + ... se hodnotou blíží číslu 2. V takovém případě řada konverguje, tedy se blíží k nějakému konečnému číslu. Řada 1 + 1 + 1 + ... naopak diverguje, a pokud si vypůjčíme hodnoty z rozšířené reálné osy, můžeme říct, že částečné součty se blíží k (nám již známému) nekonečnu. Jako třetí exemplář vezměme řadu 1 – 1 + 1 – 1 + 1 – 1 + ..., která taktéž diverguje, ale neblíží se ani k nekonečnu (částečné součty nemají limitu).

V některých případech nám nemusí stačit nekonečno jako "hodnota" divergující řady. Existují určité metody, které udávají vlastnost některých řad, která je v případě konvergentních řad shodná s normálním součtem, ale u divergentních řad mohou mít konečnou hodnotu. Nejznámější metoda je od indického matematika Ramanujana, pomocí které vychází 1 + 2 + 3 + 4 + 5 + ... "=" –1/12, ale dokonce i 1 – 1 + 1 – 1 + ... "=" 1/2. Nejedná se samozřejmě o skutečný součet, ale získaná čísla se v některých případech mohou uplatnit tam, kde je potřeba součet řady (například v kvantové fyzice).

V případě řad blížících se k nekonečnu se tedy ono "nekonečno" dá blíže popsat užitečnou hodnotou. Je věc pohledu, zdali je tato hodnota vlastnost daného nekonečna či vlastnost dané řady, ale nám bude stačit, že (alespoň zápisem) je s nekonečnem spojená.

Fraktály

Fascinující kategorii geometrických objektů představují fraktály. Jedná se o nekonečně detailní tvary, které sice (třeba v rovině) zabírají konečnou plochu, ale jejich obvod může být nekonečný. Přiblížením částí fraktálů se vždy začnou objevovat další tvary, které jsou sice menší, ale stále stejně detailní.

Studium fraktálů se dá využít i k popsání horizontální a vertikální členitosti zemského povrchu, neboť ten také vykazuje fraktálovou povahu.


Mohutnost množin

Už na začátku jsem zmínil nekonečné množiny, ale ani jeden z ukázaných konceptů se nedá použít pro popis velikosti těchto množin. Setkali jsme se s množinami přirozených čísel, celých čísel, racionálních čísel a reálných čísel, o nichž můžeme tvrdit, že jsou nekonečné, ale pokud bychom označili nekonečno za jejich velikost (mohutnost, kardinalitu), nemáme způsob, jak ho popsat.

Napřed zkusíme určit, co znamená, pokud jsou dvě množiny stejně velké. Máme-li dvě konečné množiny, prostě spočítáme počet prvků v obou z nich a porovnáme. To může mít u velkých množin tu nevýhodu, že si musíme pamatovat velké číslo (a dvakrát). Proto můžeme zkusit jinou metodu, kterou používaly v minulosti mnohé národy, kde známá čísla byla jen 1, 2, 3 a "více". Opakovaně vybíráme jeden prvek z jedné množiny a jeden prvek z druhé množiny a jakmile nám prvky v jedné množině dojdou, jedná se o menší množinu. Hledáme tedy párování (bijekci) mezi oběma množinami.

Tento postup se dá uplatnit i u nekonečných množin. Ačkoliv člověku může přijít, že celých čísel je více než přirozených ("dvakrát" víc), obě množiny jsou v tomto pohledu stejně velké. Párování (0, 0), (1, 1), (2, –1), (3, 2), (4, –2), (5, 3), (6, –3) atd. nám nakonec vyčerpá obě množiny (každý prvek množiny je na konečné pozici). Dá se ukázat, že stejně velká je i množina racionálních čísel a v podstatě každá množina, jejíž prvky můžu umístit do řady (neboli do párů s přirozenými čísly).

Mohutnost těchto množin můžu definovat jako nekonečno a operace známé z rozšířených reálných čísel mají stejnou logiku (akorát nemáme záporné nekonečno, protože záporná mohutnost nemá smysl, respektive není definovaná). ∞ + 1 bude stále ∞, neboť přidáním jednoho prvku do nekonečné množiny se její velikost nezmění. ∞ – ∞ bohužel zůstává stále neurčitým výrazem, neboť záleží na tom, které prvky odebíráme.

U jednoho nekonečna ale nezůstane. Ještě jsem nezmínil množinu reálných čísel, která je prostě mnohem větší (za což můžou konkrétně transcendentní čísla). Dá se ukázat, že jakákoliv nekonečná posloupnost reálných čísel nemůže vyjmenovat všechna reálná čísla. Reálných čísel je tedy také nekonečně mnoho, ale je jich více (říkáme nespočetně nekonečně mnoho).

V tento moment opustíme symbol ∞, neboť se nám objevují nekonečna různých velikostí. Mohutnost množiny přirozených čísel označíme jako ℵ₀ (alef nula) a mohutnost reálných čísel jako 𝔠 (mohutnost kontinua). Kromě reálných čísel má mohutnost 𝔠 taky množina komplexních čísel, tedy i bodů v rovině, bodů v prostoru i ve vyšších rozměrech a všechny oblasti v nich.

Mezi těmito nekonečny je navíc jistý vztah. Protože interval od 0 do 1 má stejnou mohutnost jako všechna reálná čísla (oblast na reálné ose), může je všechna reprezentovat jako nekonečné posloupnosti číslic (za desetinnou čárkou). Takovou posloupnost mohu vyjádřit jako zobrazení z přirozených čísel na číslice. Pokud se omezím jen na dvojkovou soustavu, každé podmnožině přirozených čísel odpovídá zobrazení, kde se tato přirozená čísla mapují na 0 a ostatní na 1. Počet všech podmnožin přirozených čísel má tedy stejnou velikost jako počet všech reálných čísel.

U konečných množin platí, že pokud má množina velikost k, má právě 2k podmnožin. To lze rozšířit i do nekonečných množin a tím dostáváme vztah 2ℵ₀ = 𝔠. Navíc, jelikož mohutnost množiny všech podmnožin (takzvané potenční množiny) je vždy větší než velikost původní množiny, existuje i množina mohutnosti 2𝔠 (všech podmnožin množiny reálných čísel) a větší a větší množiny a tedy i větší a větší nekonečna. Těchto nekonečen je tím pádem nekonečně mnoho (zatím jsem jich ukázal jen spočetně mnoho, ale existují i jiná, která nemusí být druhou mocninou jiného).

Všem těmto číslům se říká kardinální čísla (označují kardinalitu). Existují také kardinální čísla ℵ₁, ℵ₂, ℵ₃ atd., ale pro jejich popis jsou potřeba další axiomy (vztah ℵ₁ = 2ℵ₀ může a nemusí platit, záleží na teorii).

Pořadí

Kardinální čísla dokáží popsat velikost množin, ale co kdybych chtěl popsat pořadí prvku v nějaké posloupnosti? Mohu použít přirozená čísla, ale pokud mluvím o nekonečné posloupnosti, kardinální čísla nestačí. Z tohoto důvodu existují ordinální čísla, která mohou vyjádřit pořadí prvku i v nekonečných (uspořádaných) množinách.

Nejmenší nekonečné ordinální číslo se značí ω (omega) a označuje prvek, který se nachází hned za nekonečnou (spočetnou) posloupností prvků. Za ním je prvek na pozici ω + 1, za ním prvek na pozici ω + 2 apod. Sčítání vychází ze spojování posloupností, takže výraz 1 + ω je vlastně totéž co ω (před spočetně nekonečnou posloupnost prvků mohu dát jeden jiný prvek a její délka se nezmění).

Za dvěma nekonečnými posloupnostmi se nachází prvek na pozici ω + ω, tedy ω × 2 (moje intuice by říkala 2 × ω, ale to je definováno jako ωkrát 2, tedy spočetně někonečněkrát opakované dvojice, za nimiž je opět prvek pouze na pozici ω). Půjdeme-li dále, dostaneme ω × ω a nakonec i ωω. Hezky to ilustruje následující obrázek:





Ale zastavit se nemusíme, existuje i ωωω, ωωωω, ωωωωω a další. Tahle posloupnost ordinálních čísel se blíží k dalšímu ordinálnímu číslu, které se nazývá ε₀. Všechna tato ordinální čísla se dají použít k popisu spočetných množin, ale za nimi se nachází ω₁, první nespočetné ordinální číslo.


Ukazuje se, že stále můžeme mluvit o větších a větších množinách (dokonce i ω) a větších a větších pozicích, ačkoliv všechny jsou stále nekonečné. I pro jakékoliv nekonečné kardinální i ordinální číslo můžeme pomocí jiných konstrukcí najít větší číslo. To možná neuspokojuje naše hledání skutečného nekonečna, které je zároveň i konečno, protože za ním není už nic. Potřebujeme něco tak obrovského, že nic většího už být nemůže. Taková věc v matematice svým způsobem taky existuje.

Vlastní třída

Pojem množina byl v matematice dlouhou dobu vágně definovaný termín. Používal se jako prvek přirozeného jazyka, aniž by bylo jasné, co přesně znamená. Než nastal rozvoj teorie množin, množina se dala popsat pomocí výroku, který určoval, co v ní je. Výrok "x je reálné číslo" vytvořil množinu reálných čísel; výrok "x je množina" vytvořil množinu všech množin. Tato definice ale vede k paradoxům, hlavně co se týče množiny všech množin. Množina všech podmnožin musí být vždy větší než původní množina, ale množina všech množin přece tyto množiny už musela obsahovat. Pokud to je množina, její velikost přesahuje všechny konečné i nekonečné meze natolik, že to už není množina.

Pro objekty definované výrokem se začal používat výraz třída. Někdy pojmy třída a množina splývají, například třída reálných čísel je množina, ale některé třídy nejsou množiny, těm se pak říká vlastní třídy.

Vlastní třída (mezi příklady patří třeba třída všech množin, ale i třída všech ordinálních i kardinálních čísel) nemá mohutnost definovatelnou stejně jako množina, ale podle mého názoru fakt, že je "větší" než jakákoliv jiná množina a v podstatě pro její nekonečnou velikost platí 2 = ∞, stačí k tomu, abychom velikost vlastní třídy mohli považovat za to pravé, největší, poslední nekonečno.