Důležité upozornění!

Policie České republiky a šéfcensor Ústavu pro studium totalitních režimů Jaroslav Čvančara varují: citovat jakékoli texty z tohoto blogu způsobuje vážné risiko trestního stíhání! Četba na vlastní nebezpečí!

Někdejší profesor Fakulty pozemního stavitelství Českého vysokého učení technického Radim Servít byl podle všeho skutečně vůl. Na rozdíl od císaře pána; v jeho případě, jak se ukázalo v běhu času, byl naopak vůl každý, kdo si to myslel.

Proč ale hovoříme o Servítovi: představme si řadu N kabinek, u každé z nich dveře, a na dveřích nápis, že Servít je vůl. V případě, že tento nápis bude na všech dveřích, nenese uspořádaná N-tice žádnou další informaci. Pokud tam arci nápis být může a nemusí, mají záchodky informační hodnotu právě N bitů, tedy, příkladmo, půjde-li o zařízení osmikabinkové, jeden byte. Je arci možné představit si záchodky, které by měly neceločíselný, případně záporný počet kabinek, a tedy informační nosič obsahující neceločíselný a/nebo záporný počet bitů?

Z hlediska Shannonovy entropie, která se v theorické informatice pro měření obsahu informace používá, je odpověď nasnadě. Informační obsah je vyjádřen počtem stavů, který může určitý systém mít, a vyjadřuje se binárním logarithmem tohoto počtu: tedy, příkladmo 256 stavů dává log2 256 = 8 bitů informace. Nosič třístavový bude mít neceločíselný počet bitů, protože log2 3 ≈ 1,585 bitů (neboli jeden trit). Jeden bit nám pro vyjádření takové hodnoty nestačí, ovšem dva bity jsou na druhé straně zbytečně moc.

K těmto úvahám jsem dospěl, když se mne na sociálních sítích kdosi zeptal, proč nechci ze svého systém vymazat právě ani bit, a nikoli ani byte, a další požádal, zda by bylo možné nějak pro laiky srozumitelně vysvětlit, co znamená např. půl bitu.

Zamyslel jsem se, a zjistil, že věc je méně jednoduchá, než se na první pohled jeví. Nejprve mne napadlo, že bychom mohli bit rozdělit na dvě poloviny, řekněme, levou a pravou, a výsledek z nich skládat aplikací operace XOR: tedy b = b1 ⊗ b2. K určení výsledku by nám nestačil ani levý, ani pravý půlbit, ale museli bychom znát oba dva.

Jenže to není ono, protože ve skutečnosti se jedná o celé bity, a jejich složením dostáváme víc informace, než kolik je b: 0 ⊗ 0 je sice rovno 1 ⊗ 1, ale není to jedno a totéž. Tudy tedy cesta nepovede.

Zkusme to jinak. Co kdyby půlbit nesl informaci, zda je ve výsledku aspoň jedna jednička, případně nula. Jeden nám opět nestačí, k výsledku se dobereme až složením dvou takových informací: je-li v b aspoň jedna jednička a aspoň jedna nula, musí to být jednička, pokud tam je aspoň jedna jednička a žádná nula, je to nula, je-li tam nula jedniček a aspoň jedna nula, je to také nula, a není-li tam ani jedna jednička a ani jedna nula, máme něco špatně a měli bychom se nad sebou zamyslet.

To už je lepší, ale pořád tu máme nadbytečnou informaci, protože pro výsledek nula existují dvě varianty. Takhle to tedy nepůjde, řekl jsem si: bude potřeba vyzkoušet jiný přístup.

Informace o obsahu jednoho bitu znamená, že jednu věc víme určitě. Půl bitu musí tedy znamenat, že víme méně než něco, tedy, přesněji řečeno, půl něčeho.

Pokud bychom věděli, že b je s pravděpodobností 0,5 nula a s pravděpodobností 0,5 jedna, věděli bychom přesně tolik, co Plato, tedy vůbec nic. Řekněme tedy, že to budeme vědět s pravděpodobností 0,5 < p < 1. Stačí stanovit p a máme kýžený půlbit. Ale ouha, taková informace se nám neskládá aditivním způsobem, protože dva probabilistické půlbity s pravděpodobností p nám výsledek pouze zpřesní: příkladmo, bylo-li by p = 4/5 a dostali bychom dva půlbity, znali bychom b s pravděpodobností 24/25. My ale musíme trvat na tom, že dva půlbity jsou přesně rovny jednomu bitu.

Nakonec jsem na to šel z opačného konce. Máme-li třístavovou informaci a použijeme k jejímu zakodování dva bity, vyplýtvali jsme 1 – log2 3 ≈ 0,415 bitů, a do těch můžeme zakodovat další informaci. Řekněme tedy, že budeme-li kodovat 0 → [0,0], 1 → [0,1], 2 → [1,0] nebo [1,1], dává nám každá dvojka na vstupu další bit, který můžeme využít pro přenos další informace. A jestliže naše kodování upravíme tak, že kombinaci [1,1] nahradíme [1,0], odebrali jsme z informace přibližně 0,415 bitu.

Takže ano, ze svého systému bych mohl smazat i méně než jeden bit, ale musel bych k tomu použít jiné než běžné kodování informace, a vážně nevím, zda by si tím databasový systém PostgreSQL, na kterém moje právnické výpočty běží, uměl poradit.

A pokud se týká Servíta, záchodky se záporným počtem dveří si asi za bdělého stavu představit nelze, nicméně informace, které nesou záporný obsah, se vyskytují poměrně běžně: zkuste si přečíst třeba Aeronet a pochopíte, co tím myslím: předtím jste věděli víc než potom. A vzhledem k tomu, že logarithmus záporného čísla je imaginární, docela nám to sedí i mathematicky.

Komentovat články mohou pouze registrovaní uživatelé; prosím, zaregistrujte se