Algoritmisessa informaatioteoriassa objektin (kuten tekstin ) Kolmogorov - monimutkaisuus on mitta laskentaresursseista, joita tarvitaan kohteen tarkkaan määrittelyyn.
Kolmogorov-kompleksisuus tunnetaan myös nimellä deskriptiivinen kompleksisuus, Kolmogorov -Khaitin- kompleksisuus , stokastinen kompleksisuus , algoritminen entropia tai algoritminen kompleksisuus .
Ilmaisee fraktaalikuvauksen mahdollisuuden.
Harkitse esimerkiksi kahta merkkijonoa, jotka ovat 64 merkin pituisia ja sisältävät vain pieniä kirjaimia ja numeroita:
abababababababababababababababababababababababababababababababababab 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7uraqbjfdppa0q7nieieqe9noc4cvafzfEnsimmäisellä rivillä on yksinkertainen kuvaus luonnollisella kielellä, eli ab 32 kertaa , joka koostuu 10 merkistä. Toisella rivillä ei ole selkeää yksinkertaista kuvausta, jossa käytetään samaa merkistöä, paitsi itse rivi, joka on 64 merkkiä pitkä.
Muodollisemmin merkkijonon monimutkaisuus on merkkijonon kuvauksen pituus jollakin yleismaailmallisella kuvauskielellä . Monimutkaisuuden kykyä muuttua kuvauskielen valinnan suhteen käsitellään alla. Voidaan osoittaa, että minkään merkkijonon Kolmogorov-kompleksisuus ei voi olla enempää kuin muutama tavu suurempi kuin itse merkkijonon pituus. Merkkijonoja, joiden Kolmogorov-monimutkaisuus riippuu heikosti itse merkkijonon koosta, ei pidetä kompleksina.
Kolmogorovin monimutkaisuuden määrittelemiseksi meidän on ensin määritettävä merkkijonon kuvauskieli. Tällainen kuvauskieli voi perustua mihin tahansa ohjelmointikieleen , kuten Lisp , Pascal tai Java . Jos on ohjelma, jonka tulos on merkkijono , niin on kuvaus . Kuvauksen pituus on merkkijonon pituus. Pituutta määritettäessä selvitetään :ssä käytettyjen aliohjelmien pituudet . Minkä tahansa kohdassa esiintyvän kokonaislukuvakion pituus on bittien lukumäärä, joka vaaditaan esittämään , mikä on (karkeasti) .
Vaihtoehtoisesti voimme valita Turingin koneelle koodauksen , jossa koodaus on funktio, joka kuvaa jokaisen Turingin koneen bittijonoon . Jos on Turingin kone, joka antaa merkkijonon syötteenä , niin yhdistetty merkkijono on kuvaus . Tämä on teoreettinen lähestymistapa, joka soveltuu paremmin yksityiskohtaisten muodollisten todisteiden rakentamiseen ja jota suositaan tutkimuskirjallisuudessa. Binäärinen lambdalaskenta voi antaa yksinkertaisimman määritelmän monimutkaisuudesta. Tässä artikkelissa otamme epävirallisen lähestymistavan.
Jokaisella rivillä on ainakin yksi kuvaus, eli ohjelma
funktio GenerateFixedString() palauttaa sJos kuvaus , on minimipituinen, eli se käyttää vähiten merkkejä, niin sitä kutsutaan minimikuvaukseksi ja pituus , eli merkkien lukumäärä tässä kuvauksessa, on Kolmogorovin kompleksisuus , . Symbolisesti:
Tarkastellaan, miten kuvauskielen valinta vaikuttaa arvoon , ja osoitetaan, että kuvauskielen muuttamisen vaikutus on rajallinen.
Lause . Jos ja ovat monimutkaisuusfunktioita, jotka liittyvät kuvauskieliin ja , niin on olemassa vakio (riippuen vain kielistä ja ), joka
Todiste . Päinvastoin riittää osoittamaan, että on olemassa jokin vakio jokaiselle bittijonolle
Oletetaan, että kielellä on ohjelma, joka toimii tulkkina :
funktio TulkitseLanguage( merkkijono p )missä on kieliohjelma . Tulkille on ominaista seuraava ominaisuus:
Syötetietojen käsittelyn tuloksena saatu palautusarvo on InterpretLanguagetyön tulos .Jos siis on ohjelma kielellä , joka on minimikuvaus , niin ( ) palauttaa merkkijonon . Tämän kuvauksen pituus on summa: InterpretLanguage
Tämä todistaa vaaditun ylärajan.
Algoritminen informaatioteoria on tietojenkäsittelytieteen ala, joka tutkii Kolmogorovin kompleksisuutta ja muita monimutkaisia merkkijonojen (tai muiden tietorakenteiden ) mittareita.
Ajatus Kolmogorovin kompleksisuusteoriasta perustuu avainlauseeseen, jonka ensimmäisenä löysi Ray Solomonoff , joka julkaisi sen vuonna 1960 ja kuvasi sitä julkaisussa A Preliminary Report on a General Theory of Inductive Inference [1] osana hänen keksintöään algoritmisesta todennäköisyydestä. . Hän antoi täydellisemmän kuvauksen julkaisuissaan "A Formal Theory of Inductive Inference" , osissa 1 ja 2 lehdessä Information and Control [2] [3] , julkaistu vuonna 1964.
Myöhemmin A. N. Kolmogorov julkaisi tämän lauseen itsenäisesti lehdessä Information Transmission Problems [4] , Gregory Khaitin esitteli myös tämän lauseen lehdessä J. ACM" . Khaitinin paperi lähetettiin lokakuussa 1966, tarkistettiin joulukuussa 1968, ja siinä lainataan sekä Solomonoffin että Kolmogorovin papereita. [5]
Lauseen mukaan algoritmien joukossa, jotka palauttavat (dekoodaavat) merkkijonoja niiden kuvauksista (koodeista), on yksi optimaalinen. Tämä algoritmi kaikille merkkijonoille antaa samat lyhytkoodit kuin muiden algoritmien antamat, vakion erolla, joka riippuu algoritmista, mutta ei itse merkkijonosta. Solomonoff käytti tätä algoritmia ja sen antamia koodin pituuksia määrittääkseen merkkijonojen "universaalin todennäköisyyden", johon merkkijonon myöhempien merkkien induktiivinen päättely voi perustua. Kolmogorov käytti tätä lausetta määrittämään useita merkkijonofunktioita: kompleksisuuden, satunnaisuuden ja informaation.
Kun Kolmogorov sai tietää Solomonoffin työstä, hän tunnusti prioriteettinsa [6] . Useiden vuosien ajan Solomonoffin työ tunnettiin paremmin Neuvostoliitossa kuin lännessä. Tiedeyhteisössä on kuitenkin yleistä yhdistää tämän tyyppinen monimutkaisuus Kolmogoroviin, joka puhui sekvenssien satunnaisuudesta, kun taas algoritminen todennäköisyys on liitetty Solomonoffiin, joka keskittyi ennustamiseen käyttämällä universaalia ennakkotodennäköisyysjakaumaa.
Kolmogorovin monimutkaisuudesta tai algoritmisesta tiedosta on joitain muita muunnelmia. Yksi laajimmin käytetyistä perustuu itserajoittuviin ohjelmiin ja liittyy pääasiassa L. A. Leviniin (1974). M. Burgin (1982) esitteli aksiomaattisen lähestymistavan Kolmogorovin kompleksisuuteen, joka perustuu Bloomin (1967) aksioomeihin.
Jotkut ihmiset ajattelevat, että nimi "Kolmogorov-kompleksisuus" on esimerkki Matteuksen efektistä [7] .
Seuraavassa päättelyssä tarkoitamme merkkijonon monimutkaisuutta .
On helppo nähdä, että merkkijonon minimikuvaus ei voi olla suurempi kuin itse merkkijono: yllä oleva ohjelma GenerateFixedString, jonka tulos on kiinteällä määrällä suurempi .
Lause . On olemassa jatkuva sellainen
Ensimmäinen seuraus on, ettei ole tehokasta tapaa laskea .
Lause . on laskematon funktio .
Toisin sanoen mielivaltaisen merkkijonon algoritmisen monimutkaisuuden laskentaongelma on algoritmisesti ratkaisematon - ei ole ohjelmaa, joka ottaisi syötteenä ja tulostaisi kokonaisluvun . Osoitetaan tämä ristiriitaisesti luomalla ohjelma, joka luo merkkijonon, jonka voi luoda vain pidempi ohjelma. Oletetaan, että on olemassa ohjelma
funktio KolmogorovComplexity ( merkkijono )joka ottaa syötteenä ja palauttaa . Mieti nyt ohjelmaa
funktio GenerateComplexString( int n ) arvolle i = 1 äärettömään : jokaiselle merkkijonolle s , jonka pituus on täsmälleen i, jos KolmogorovComplexity( s ) >= n return s quitTämä ohjelma kutsuu aliohjelmaa KolmogorovComplexity. Ohjelma yrittää jokaista riviä alkaen lyhyimmästä, kunnes se löytää rivin, jonka monimutkaisuus on vähintään , jonka se palauttaa. Siksi, jos mikä tahansa positiivinen kokonaisluku , se tuottaa merkkijonon, jonka Kolmogorov-monimutkaisuus on vähintään . Tällä ohjelmalla on oma kiinteä pituus . Ohjelman syöte on kokonaisluku ja koko mitataan sen esittämiseen tarvittavien bittien lukumäärällä, joka on . Harkitse seuraavaksi seuraavaa ohjelmaa: GenerateComplexString
funktio GenerateParadoxicalString() return GenerateComplexString(n 0 )Tämä ohjelma kutsuu GenerateComplexStringkuin aliohjelma ja sillä on myös vapaa parametri . Tämä ohjelma tulostaa merkkijonon , jonka monimutkaisuus on vähintään . Parametrin suotuisalla valinnalla pääsemme ristiriitaan. Jos haluat valita tämän arvon, huomaa, että sen kuvaa ohjelma, jonka pituus ei ole suurempi kuin GenerateParadoxicalString
jossa vakio lisätään ohjelman takia . Koska se kasvaa nopeammin kuin , on olemassa sellainen arvo , että GenerateParadoxicalString
Mutta tämä on ristiriidassa sen määritelmän kanssa, että monimutkaisuus on vähintään . Eli määritelmän mukaan ( ) on sallittua, että GenerateParadoxicalString-ohjelman palauttama merkkijono voidaan luoda ohjelman avulla, jonka pituus on tai suurempi, mutta lyhyempi kuin . Joten ohjelma ei voi laskea satunnaisen merkkijonon monimutkaisuutta. GenerateParadoxicalStringKolmogorovComplexity
Tämä on todiste ristiriitaisuudesta, jossa ristiriita on samanlainen kuin Berryn paradoksi : "Olkoon pienin positiivinen kokonaisluku, jota ei voida kutsua alle kahdellakymmenellä englanninkielisellä sanalla." [8] On myös mahdollista osoittaa laskemattomuus vähentämällä laskemattomuus pysäytysongelmaksi , koska ja ovat Turingin ekvivalentteja. [9]
Ohjelmointiyhteisössä on seuraus, joka tunnetaan nimellä täyskäyttölause , jonka mukaan ei ole olemassa täydellisesti kokoon optimoitua kääntäjää.
Kolmogorovin kompleksisuuden ketjusääntö sanoo sen
Siinä todetaan, että lyhin ohjelma, joka toistaa ja on korkeintaan suurempi kuin toistava ohjelma , ja ohjelma, joka toistaa, on annettu . Tätä lauseketta käyttämällä voidaan määritellä keskinäisen informaation analogi Kolmogorovin kompleksisuudelle.
Ylärajan laskeminen on helppoa: sinun tarvitsee vain pakata merkkijono jollain menetelmällä, toteuttaa sopiva dekompressori valitulla kielellä, liittää dekompressori pakattuun merkkijonoon ja mitata tuloksena olevan merkkijonon pituus.
Merkkijono on pakattu, jos sillä on kuvaus, jonka pituus ei ylitä . Tämä vastaa lausuntoa . Jos tätä ei tehdä, sitä ei pakkaa . Merkkijonoa, joka ei ole pakattavissa luvulla 1, kutsutaan yksinkertaisesti pakkaamattomaksi; Dirichlet'n periaatteen mukaan kokoonpuristumattomia merkkijonoja on oltava, koska on olemassa bittijonoja, joiden pituus on , mutta vain merkkijonoja, joiden pituus on pienempi kuin [10] .
Samasta syystä useimmat merkkijonot ovat monimutkaisia siinä mielessä, että niitä ei voida merkittävästi pakata: ei paljon vähemmän kuin pituus bitteinä. Selvyyden vuoksi korjataan arvo . Siellä on pituisia bittijonoja . Tasainen todennäköisyysjakauma näiden bittijonojen avaruudessa määräytyy täsmälleen yhtä suurella painokertoimella jokaiselle pituudelle .
Lause . Todennäköisyys, että merkkijonoa ei pakata , on vähintään yhtä suuri kuin tasainen todennäköisyysjakauma pituisten bittijonojen avaruudessa .
Tämän lauseen todistamiseksi huomaamme, että pituuskuvausten määrä ei ylitä , joka saadaan geometrisesta progressiosta :
Jää ainakin
bittijonoja, joita ei voi puristaa . Määritä todennäköisyys jakamalla .
Tiedämme, että kaikkien mahdollisten merkkijonojen joukossa useimmat merkkijonot ovat monimutkaisia siinä mielessä, että niitä ei voida kuvata millään riittävän ytimekkäästi. Osoittautuu kuitenkin, että sitä tosiasiaa, että tietty merkkijono on monimutkainen, ei voida todistaa muodollisesti, jos merkkijonon monimutkaisuus ylittää tietyn kynnyksen. Tarkka formalisointi on esitetty alla. Aluksi korjaamme tietyn aksiomaattisen järjestelmän luonnollisille luvuille . Aksiomaattisen järjestelmän on oltava riittävän tehokas, jotta tarkka arvio merkkijonon monimutkaisuudesta voidaan kuvata aksiomaattisen järjestelmän kaavaan . Tällä vastaavuudella on oltava seuraava ominaisuus: jos se johdetaan aksioomista , niin vastaava lause on tosi.
Lause . On olemassa sellainen vakio (joka riippuu vain tietystä aksiomaattisesta järjestelmästä ja valitusta kuvauskielestä), että mille tahansa riville lause
sisällä ei voida todistaa .
Kuitenkin, kuten on helppo ymmärtää, lause pätee äärettömälle määrälle rivejä tai pikemminkin kaikille paitsi äärelliselle määrälle rivejä.
Lauseen todistus perustuu Berryn paradoksissa käytettyyn itseviittauskonstruktioon . Todistus ristiriidalla. Jos lause ei pidä paikkaansa, niin
Oletus (X) : Jokaiselle kokonaisluvulle on merkkijono , jolle on olemassa johdannainen kaavasta " " (jolle oletimme, että se voidaan formalisoida muodossa ).Harkitse ohjelmaa, joka toteuttaa tehokkaan kaikkien muodollisten todisteiden luettelon
funktio NthProof( int n )joka ottaa n :n syötteeksi ja tuottaa jonkin verran todisteita. Jotkut niistä todistavat kaavan, kuten " ", jossa s ja n ovat vakioita kielessä . On olemassa ohjelma, joka tarkistaa, vahvistaako n:s todistus kaavan " ":
toiminto NthProofProvesComplexityFormula( int n )Päinvastoin, merkkijono s ja luku L voidaan laskea ohjelmien avulla
funktio StringNthProof( int n ) funktio ComplexityLowerBoundNthProof( int n )Harkitse nyt seuraavaa ohjelmaa:
funktio GenerateProvablyComplexString( int n ) arvolle i = 1 äärettömään: jos NthProofProvesComplexityFormula(i) ja ComplexityLowerBoundNthProof(i) ≥ n palauttaa StringNthProof( i )Kun syötteenä on n , tämä ohjelma tarkistaa jokaisen todisteen, kunnes se löytää jonkin merkkijonon s ja todisteen kaavasta K ( s ) ≥ L jollekin L ≥ n :lle . Tämä ohjelma pysähtyy Arvaa (X) . Olkoon tämän ohjelman pituus U . On olemassa luku n 0 , jolloin U + log 2 n 0 + C < n 0 , missä C on ohjelman lisäpituus
toiminto GenerateProvablyParadoxicalString() return GenerateProvablyComplexString( n 0 )Huomaa, että myös numero n 0 on koodattu tähän ohjelmaan, mikä vaatii loki 2 ( n 0 ) -tiedot. GenerateProvablyParadoxicalString -ohjelma tuottaa merkkijonon s , jolle on olemassa L , joten K ( s ) ≥ L voidaan päätellä , missä L ≥ n 0 . Erityisesti K ( s ) ≥ n 0 on totta sille . Kuitenkin s voidaan kuvata ohjelmalla, jonka pituus on U + log 2 n 0 + C , joten sen kompleksisuus on pienempi kuin n 0 . Tuloksena oleva ristiriita todistaa oletuksen (X) virheellisyyden .
Samanlaisia ajatuksia käytetään todistamaan Chaitinin vakion ominaisuudet .
Sanoman vähimmäispituuden periaatteen tilastollisessa ja induktiivisessa päättelyssä ja koneoppimisessa kehittivät Wallace ( englanniksi CS Wallace ) ja Bolton ( englanniksi DM Boulton ) vuonna 1968. MDS-periaate on Bayesin (sisältää aiemmat todennäköisyydet) ja informaatioteoreettinen. Sillä on toivottavat ominaisuudet: tilastollinen invarianssi (päätelmämuunnos uudelleenparametrisoinnilla), tilastollinen liitettävyys (jopa erittäin vaikeassa ongelmassa periaate konvergoi taustalla olevaan malliin) ja tehokkuus (MDS-periaatteeseen perustuva malli konvergoi mihin tahansa pätevään taustalla oleva malli mahdollisimman nopeasti). Wallace ja Dowe ( eng. DL Dowe ) osoittivat muodollisen suhteen MDS-periaatteen ja algoritmisen informaatioteorian (tai Kolmogorov-kompleksisuuden) välillä.
Kolmogorovin satunnaisuuden (myös algoritmisen satunnaisuuden) määritelmän mukaan merkkijono sanotaan satunnaiseksi silloin ja vain, jos se on lyhyempi kuin mikään sen toistamiseen kykenevä tietokoneohjelma. Tämän määritelmän tarkentamiseksi yleistietokone (tai universaali Turingin kone ) on korjattava, jotta "tietokoneohjelma" tarkoittaisi tuon yleiskoneen ohjelmaa. Tässä mielessä satunnainen merkkijono on "pakkautumaton". Dirichlet-periaatteella on helppo osoittaa, että mille tahansa yleiskoneelle on olemassa minkä tahansa pituisia algoritmisesti satunnaisia merkkijonoja, mutta merkkijonon ominaisuus olla algoritmisesti satunnainen riippuu yleiskoneen valinnasta.
Tämä määritelmä voidaan laajentaa äärettömän aakkoston äärettömiin merkkijonoihin. Määritelmä voidaan ilmaista kolmella vastaavalla tavalla. Ensimmäinen tapa käyttää tehokasta mittateorian analogia; toinen käyttää tehokasta martingaalia . Kolmas tapa määritellä se on tämä: ääretön sekvenssi on satunnainen, jos sen alkusegmentin Kolmogorov-kompleksisuus kasvaa riittävän nopeasti — on olemassa vakio c siten, että minkä tahansa n pituisen alkusegmentin kompleksisuus on vähintään n − c . Osoittautuu, että tämä määritelmä, toisin kuin äärellisen merkkijonon satunnaisuuden määritelmä, ei riipu yleiskoneen valinnasta.
Brudnon lauseen mukaan dynaamisen järjestelmän entropia ja siinä olevien lentoratojen algoritminen monimutkaisuus liittyvät relaatioon lähes kaikille . [yksitoista]
Voidaan osoittaa [12] , että Markovin tietolähteen työn tuloksen Kolmogorov-kompleksisuus liittyy sen entropiaan . Tarkemmin sanottuna Markovin tietolähteen lähdön Kolmogorov-kompleksisuus, normalisoituna lähdön pituuksiin, konvergoi lähes aina lähteen entropiaan.
Sanakirjat ja tietosanakirjat |
---|