Varianti calcolabili in modo efficiente della complessità di Kolmogorov


28

La complessità del prefisso di Kolmogorov (ovvero è la dimensione del programma di auto-delimitazione minimo che genera ) ha diverse caratteristiche interessanti:xK(x)x

  1. Corrisponde all'intuizione di dare alle stringhe con schemi o struttura una complessità inferiore rispetto alle stringhe senza.
  2. Esso ci permette di definire la complessità condizionale , o, ancora meglio per un po 'oracolo .K ( x | O ) OK(x|y)K(x|O)O
  3. È il subadditivo .K(x,y)K(x)+K(y)

Tuttavia ha un aspetto negativo terribile: restituire dato è indecidibile.xK(x)x

Mi sono chiesto se esiste una variante della complessità di Kolmogorov usando un modello di calcolo limitato (o usando linguaggi più deboli delle TM, o usando TM limitati con risorse) che preserva le caratteristiche (1) e (2) (caratteristica ( 3) è un bonus, ma non un must) pur essendo calcolabile in modo efficiente?K(x)

La motivazione di questa domanda è da utilizzare negli studi di simulazione di vari modelli giocattolo di evoluzione. Pertanto è preferibile una risposta che è stata usata come "approssimazione approssimativa" per la complessità di Kolmogorov nel lavoro numerico. Tuttavia, l'obiettivo non è quello di andare completamente sperimentale, quindi è preferibile un linguaggio di descrizione / modello di calcolo relativamente semplice / pulito per , in modo che sia possibile dimostrare alcuni teoremi ragionevoli su quanto drasticamente differisce da e su che tipo di stringhe.K KKKK

Si riferisce alle domande

Complessità di Kolmogorov con linguaggi di descrizione deboli

C'è una nozione sensata di un algoritmo di approssimazione per un problema indecidibile?

Risposte:


10

Gzip. Cilibrasi e Vitanyi hanno un articolo davvero carino in cui usano gzip come approssimazione della complessità di Kolmogorov per fare il clustering. Clustering per compressione


1
come definiscono la complessità condizionale?
Artem Kaznatcheev

1
Sia A e B due documenti e AB i due concatenati. Guardano il rapporto tra DIMENSIONE (gzip (A) + gzip (B)) e DIMENSIONE (gzip (AB)).
Chad Brewbaker,

1
Bisogna essere consapevoli che ci sono degli svantaggi nell'uso di gzip (e simili) per approssimare la complessità di Kolmogorov: bactra.org/notebooks/cep-gzip.html . Ciò non dice che non sia utile per il clustering di set di dati della vita reale, ma dice che la sua utilità per set di dati della vita reale ci dice qualcosa su come questi set di dati sono diversi, diciamo, dall'output di un generatore di numeri pseudocasuali ...
Joshua Grochow,

3

Ho pensato di più alla mia domanda e sono arrivato alla possibile soluzione. Ha due limiti, è definito solo su stringhe di lunghezza (anche se ne parlerò più) e non parla di macchine di Turing universali, invece seguendo una domanda precedente e usando un modello alternativo di calcolo.n=2m


Fondamentalmente, possiamo interpretare una stringa con | x | = 2 m come funzione f x : { 0 , 1 } m{ 0 , 1 } . Quindi la nostra misura di complessità K ( x ) è la dimensione (numero di spigoli) del diagramma decisionale binario ordinato ridotto unico (ROBDD; con l'ordinamento standard fisso) che rappresenta f x . Questo soddisfa la condizione [1]. Inoltre, poiché i ROBDD possono essere calcolati nel polinomio temporale in 2 mx|x|=2mfx:{0,1}m{0,1}K(x)fx2m, abbiamo una misura efficiente.

Per soddisfare la condizione [2], dobbiamo modificare i BDD standard consentendo un tipo speciale sul nodo. Di solito i nodi sono etichettati con gli indici , includeremo un nodo oracolo speciale. Per K ( x | y ) dove | y | = 2 m consentiremo nodi speciali nei BDD come segue:i{1,...,m}K(x|y)|y|=2m

Se stiamo eseguendo un BDD sull'input ( | a | = m ), un normale nodo etichettato da i ci invia semplicemente lungo il bordo etichettato da i . Un nodo oracolo invece ci invierà lungo un bordo etichettato f y ( a ) . Pertanto, K ( x | x ) = 2 e con alta probabilità K ( x | y ) K ( x ) per una y scelta uniformemente a caso.a|a|=miaify(a)K(x|x)=2K(x|y)K(x)y

[Nota: non è chiaro se la complessità condizionale possa ancora essere calcolata in modo efficiente :(]

Convincentemente, abbiamo anche una sub-additività da quando abbiamo creato un OBDD per possiamo avere una query per il primo bit e su 0 andare su ROBDD per x e su 1 su ROBDD per y . Quindi, abbiamo K ( x . Y ) K ( x ) + K ( y ) .x.y0x1yK(x.y)K(x)+K(y)


K(x)x|x|=2m|y|=2lm>lK(x.y)=K(x)+K(y)

Sfortunatamente ci sono anche alcune limitazioni nel mio approccio. Non possiamo andare molto al di là degli OBDD, se consideriamo alberi decisionali minimi o solo BDD, allora affronteremo i problemi di intrattabilità affrontati in questa risposta . Anche per l'ordinamento variabile degli OBDD sembrano esserci risultati di intrattabilità . Quindi sembra che gli OBDD siano il limite di questo approccio non così simile allo standard di Kolmogorov.


2

Non sono un esperto, ma se hai bisogno di una misura di complessità pratica per le stringhe, puoi dare un'occhiata alla misura di complessità T di Titchener .

Vedere il sito Web di Titchener per una rapida introduzione; i suoi documenti possono essere scaricati in formato pdf .

Riassunto : viene presentata una nuova misura della complessità delle stringhe per stringhe finite basata su uno specifico processo di produzione gerarchica ricorsiva delle stringhe . Dal limite massimo deduciamo una relazione tra complessità e contenuto informativo totale. ..articolo completo ...

Ho trovato anche alcuni articoli su implementazioni pratiche (vedi ad esempio " Un algoritmo di decomposizione a T veloce ")


2

Fondamentalmente, quasi ogni metodo di apprendimento automatico o compressione è un'approssimazione della complessità di Kolmogorov:

  • p(x)logp(x)
  • nK(x)n+sCsCx

Pertanto, puoi semplicemente cercare modelli con qualsiasi compressore o distribuzione di probabilità e meglio comprimono i tuoi dati, migliore è il limite superiore per K (x). Assicurati di aggiungere la dimensione del compressore stesso alla dimensione dei dati compressi per ottenere la stima.

K(x)

K(x)K

Puoi anche usare un limite di tempo per definire la tua classe di modello, che ti porta alla risposta di Suresh. Fondamentalmente, se supponi che l'origine dati abbia una complessità temporale polinomiale e provi tutte le macchine polinomiali di Turing per comprimerla, puoi essere abbastanza sicuro di aver stimato con precisione la complessità di Kolmogorov. Questo potrebbe non essere ancora così pratico, ma per limiti di tempo inferiori, potresti essere in grado di calcolare l'intera miscela bayesiana, di una buona approssimazione ad esso.

Per dettagli tecnici consultare questo documento . Disclaimer: sono uno degli autori.

K(x)K(x)


-1

Cerchi complessità Kolmogorov limitata in termini di risorse. Puoi iniziare con questo documento e diramarti.


2
grazie per il link al documento, menziono la complessità limitata dalle risorse nella domanda, ma c'è davvero interesse in misure che sono calcolabili in modo efficiente. Sembra che il documento mostri che le "stringhe casuali" per questi modelli corrispondono a serie di elevata complessità. Ciò suggerisce che la decisione della complessità di una stringa in questi modelli non è calcolabile in modo efficiente, no?
Artem Kaznatcheev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.