Vajon létrehozható a világ összes képe egy adott méretben?

írta: pIIrash, 14 éve

Épp a Modellek és algoritmusok ZH-ra készülök. Ez a téma olyannyira sokkolt, hogy eszembe jutott egy elmebeteg ötlet.
Valahol olvastam, hogy a Windows jelszó nem biztonságos, mert állítólag könnyen törhető.
Ez igaz is. Lásd OphCrack (lesz róla szó az egyik címlapos cikkben).
Ebben le van generálva az összes lehetséges 16 hosszú (0..9,a..b,A..B) jelszó HASH kódja.
De minket most nem ez érdekel, hanem a nyers erő módszere. Amikor végigpróbáljuk (Brute-Force) az összes lehetséges jelszót a kiválasztott karakterekből a megadott hosszúságig.

Eszembe jutott, hogy mi lenne, ha le tudnánk generálni az összes lehetséges képet egy adott méretben.

Gondoljunk csak bele. Egy kép sok képpontból tevődik össze. Ha legeneráljuk az összes lehetséges módon egy 1024*768 méretű kép pontjait, akkor megkapjuk a világ összes 1024*768 méretű képét.

EZ PERSZE CSAK EGY ELMÉLETI FELVETÉS!

Mielőtt valaki lelkesen nekiesne a feladatnak, nem árt tisztázni, hogy mégis hány művelettel hajtható végre mindez.

1024*768 a kép mérete.

Egy képpont színét (tartalmát) leírhatjuk 3 byte-on (24 bit).
1. byte: R (Red, piros): 0..255
2. byte: G (Green, zöld): 0..255
3. byte: B (Blue, kék): 0.255

1024 * 768 * 3 Byte = 2.359.296 Byte = 2304 KB = 2,25 MB

255 * 255 * 255 = 16.581.375 lehetséges szín.

1024 * 768 = 786.432 képpont.

16.581.375 lehetséges színt kell a 786.432 ponton az összes lehetséges módon elhelyezni.
Ami pedig n (16.581.375) elem k-ad (786.432) osztályú ismétléses variációinak a száma.
Az pedig n^k = 16.581.375^786.432 = (ehhez GHC kell :D )

main = writeFile "H:\\eredmeny.txt" (show [16581375^786432])

Az eredmeny.txt tartalma itt megtekinthető: eredmeny.txt

Mint az látható is ez egy 5.677.742 számjegyből álló szám.

Tegyük fel, hogy valami giga teljesítményű géppel le tudnánk generálni 1.000.000.000 (1 milliárd) képet másodpercenként. (Azért érezzük, hogy erre mennyi esély van :DDD )
Ebben az esetben is egy 5.677.742 számjegyű szám fejezné ki, a legeneráláshoz szükséges időt másodpercben.
Arról pedig már ne is beszéljünk, hogy ez a számot még meg kell szorozni 2.359.296 byte-al és megkapjuk, hogy mekkora tárterület szükségeltetne ezek tárolásához.

Gondoljunk bele, hogy benne lenne az egész életünk képekben. Minden lehetséges nézőpontból.
Persze, hogy mindent ábrázolni tudjunk nem elég 1024*768. Vegyük csak a számokat. Ha a számegyenesen tetszőleges számot tudunk ábrázolni, akkor azt nyilván csak végtelen számú képen tudnánk megjeleníteni. Következésképp ezen a felbontáson csupán egy része tudjuk megjeleníteni az egésznek.

Felmerült, hogy kisebb méretben vizsgáljuk a kérdést, kevesebb színnel. Nézzük mi lenne ha 320*240-ben, 256 szín felhasználásával tennénk ugyanezt.

Képméret: 320*240 = 76.800 = k. Egy képpont színe 256 = n féle lehet.
Így a lehetséges változatok száma: 256^76.800 (n^k).

A kapott szám itt megtalálható: eredmeny2.txt
Ez a szám már csak 184.553 jegyből áll. De érezzük azért, hogy esély nem lenne rá, hogy ezt bárki kivitelezze.