Friday, December 15, 2017

Još jedan odgovor na Python meetup komentar

> Svih source kodova u bilo kojem programskom jeziku koji implementiraju neku funkciju sa Z u Z ima prebrojivo mnogo (alef_0).

Ova mi uopće nije očito. Imaš neki dokaz?


Fkors. Unicode je, usprkos svim nastojanjima da se postigne suprotno:-P, još uvijek konačan (a čak i da nije, ideja da je code point prirodan broj znači da bi morao biti prebrojiv, pa bi tvrdnja svejedno vrijedila, samo bi dokaz bio kompliciraniji). Dakle, mogućih znakova ima konačno mnogo (u).

Mogućih nizova od 2 znaka sada također ima konačno mnogo (u^2, jer prvi i drugi možemo nezavisno birati svaki na u načina). Mogućih nizova od 3 znaka također ima konačno mnogo (u^3), i tako dalje, za svaki n, mogućih nizova znakova duljine n ima konačno mnogo (u^n).

To znači da ako poredamo sve stringove prvo po duljini, pa onda po code pointima (leksikografski, kao što strcmp radi samo na širem skupu), možemo ih redom enumerirati i svaki će doći na red, jer onih manje duljine od njega ima samo konačno mnogo (1+u+u^2+...+u^(|w|-1)=(u^|w|-1)/(u-1)), a ovih iste duljine kao on samo leksikografski manjih od njega također ima konačno mnogo (svakako manje od u^|w|).

Naravno, mnogi od njih bit će sintaksno neispravni, te neće imati nikakvu suvislu semantiku, ali oni koji hoće će pokrivati sve što se uopće može implementirati. Dakle, ima ih prebrojivo mnogo.

1 comment:

Alan Curtis said...
This comment has been removed by a blog administrator.