Paradoxer om datakomprimering

Paradoxer om datakomprimering Problemet med datakomprimering, i sin enklaste form, kan relatera till siffror och deras notationer. Siffror kan betecknas med siffror ("elva" för talet 11), matematiska uttryck ("tvÄ i den tjugonde" för 1048576), strÀnguttryck ("fem nior" för 99999), egennamn ("odjurets nummer" för 666, "Turings dödsÄr" för 1954), eller godtyckliga kombinationer dÀrav. Varje beteckning Àr lÀmplig genom vilken samtalspartnern tydligt kan bestÀmma vilket nummer vi pratar om. SjÀlvklart, berÀtta för din samtalspartner "faktor av Ätta" effektivare Àn motsvarande notation "fyrtio tusen tre hundra tjugo". En logisk frÄga uppstÄr hÀr: vad Àr den kortaste notationen för ett givet tal?

Filosofen Bertrand Russell publicerade 1908 "Berrys paradox", som berör frÄgan om nummernotation frÄn motsatt sida: Vilket Àr den minsta siffran som inte krÀver Ättio bokstÀver?
Ett sÄdant nummer mÄste finnas: frÄn Ättio ryska bokstÀver och mellanslag kan du bara skapa 3480 beteckningar, vilket innebÀr att du med Ättio bokstÀver kan beteckna högst 3480 siffror. Detta innebÀr att det Àr omöjligt att ange ett visst antal högst 3480 pÄ detta sÀtt.

Detta innebĂ€r att detta nummer kommer att motsvara beteckningen "den minsta siffran för vilken Ă„ttio bokstĂ€ver inte rĂ€cker", som bara har 78 bokstĂ€ver! Å ena sidan mĂ„ste detta nummer finnas; Ă„ andra sidan, om detta nummer finns, sĂ„ motsvarar dess beteckning inte det. Paradox!

Det enklaste sÀttet att avfÀrda denna paradox Àr att hÀnvisa till det informella i verbala notationer. Som, om bara en specifikt definierad uppsÀttning uttryck tillÄts i notationen, dÄ "den minsta siffran för vilken Ättio bokstÀver inte rÀcker" skulle inte vara en giltig notation, medan praktiskt anvÀndbara notationer som "faktor av Ätta" skulle förbli acceptabelt.

Finns det formella sĂ€tt att beskriva sekvensen (algoritmen) av Ă„tgĂ€rder pĂ„ siffror? Det finns, och i överflöd – de kallas programmeringssprĂ„k. IstĂ€llet för verbala notationer kommer vi att anvĂ€nda program (till exempel i Python) som visar de nödvĂ€ndiga siffrorna. Till exempel, för fem nior passar programmet print("9"*5). Vi kommer att fortsĂ€tta att vara intresserade av det kortaste programmet för ett givet nummer. LĂ€ngden pĂ„ ett sĂ„dant program kallas Kolmogorov komplexitet tal; det Ă€r den teoretiska grĂ€nsen till vilken ett givet tal kan komprimeras.

IstÀllet för Berrys paradox kan vi nu övervÀga en liknande: Vilket Àr det minsta antal som ett kilobyteprogram inte rÀcker för att mata ut?

Vi kommer att resonera pÄ samma sÀtt som tidigare: det finns 2561024 kilobyte texter, vilket innebÀr att inte mer Àn 2561024 nummer kan matas ut av kilobyteprogram. Detta innebÀr att ett visst antal som inte Àr större Àn 2561024 inte kan hÀrledas pÄ detta sÀtt.

Men lÄt oss skriva ett program i Python som genererar alla möjliga kilobytetexter, kör dem för exekvering, och om de matar ut ett nummer, lÀgger vi till det hÀr numret i ordboken över tillgÀngliga. Efter att ha kontrollerat alla 2561024 XNUMX XNUMX möjligheter, oavsett hur lÄng tid det tar, letar programmet efter det minsta nummer som saknas i ordboken och skriver ut det numret. Det verkar uppenbart att ett sÄdant program kommer att passa in i en kilobyte kod - och kommer att mata ut just det antal som inte kan matas ut av ett kilobyteprogram!

Vad Àr haken nu? Det kan inte lÀngre tillskrivas notationens informalitet!

Om du Àr förvirrad av det faktum att vÄrt program kommer att krÀva en astronomisk mÀngd minne för att fungera - en ordbok (eller bitarray) med 2561024 element - sÄ kan du göra samma sak utan det: för vart och ett av de 2561024 numren i sin tur , gÄ igenom alla 2561024 möjliga program, tills det inte finns nÄgot lÀmpligt. Det spelar ingen roll att en sÄdan sökning kommer att pÄgÄ vÀldigt lÀnge: efter att ha kontrollerat mindre Àn (2561024)2 par frÄn numret och programmet, kommer den att sluta och hitta det mycket omhuldade numret.

Eller kommer det inte att sluta? Det kommer faktiskt att finnas bland alla program som kommer att prövas while True: pass (och dess funktionella analoger) - och saken kommer inte att gÄ lÀngre Àn att testa ett sÄdant program!

Till skillnad frÄn Berrys paradox, dÀr haken lÄg i notationens informalitet, har vi i det andra fallet en vÀl förtÀckt omformulering "stoppa problem". Faktum Àr att det Àr omöjligt att bestÀmma dess produktion frÄn ett program pÄ en begrÀnsad tid. I synnerhet Kolmogorov komplexitet oberÀkningsbar: det finns ingen algoritm som skulle tillÄta, för ett givet nummer, att hitta lÀngden pÄ det kortaste programmet som skriver ut detta nummer; vilket betyder att det inte finns nÄgon lösning pÄ Berrys problem - att hitta lÀngden pÄ den kortaste verbala beteckningen för ett givet nummer.

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster