Utilizzo della complessità di Kolmogorov come "dimensione" di input


21

Supponiamo di avere un problema di calcolo, ad esempio 3-SAT, che ha una serie di istanze del problema (possibili ingressi) . Normalmente nell'analisi degli algoritmi o della teoria della complessità computazionale, abbiamo alcuni insiemi di tutti gli input di lunghezza e una funzione che fornisce il tempo di esecuzione di qualche algoritmo di soluzione sull'input . La sequenza temporale di esecuzione peggiore per è quindi I ( n ) = { w S : | w | = n } n T ( w ) A w A f n = max w I ( n ) T ( w ) .S

I(n)={wS:|w|=n}
nT(w)AwA
fn=maxwI(n)T(w).

Definiamo ora gli insiemi

IK(n)={wS:K(w)=n}
di tutti gli input con complessità n di Kolmogorov ne definiamo la sequenza
fnK=1|IK(n)|wIK(n)T(w).
Qui fK è la sequenza di tempo di esecuzione media per A , tranne dove la "dimensione" degli input è la loro complessità di Kolmogorov, non la loro lunghezza.

Esistono algoritmi per i quali fn è asintoticamente significativamente diverso da fnK ? In tal caso, ci sono problemi la cui complessità temporale cambia quando si utilizza questo diverso modo di analizzare gli algoritmi?


4
Ottima domanda! Uno di cui mi sono spesso chiesto: spero che abbia delle buone risposte. (Ho aggiunto il tag complessità parametrica b / c, puoi vederlo come la domanda della complessità parametrizzata di es. SAT, dove il parametro è la complessità di Kolmogorov.)
Joshua Grochow,

3
Le stringhe casuali, ovvero la maggior parte delle stringhe, hanno una complessità di Kolmogorov vicino alla loro lunghezza originale. Per la stragrande maggioranza degli input fn=fnK Potresti ottenere un risultato più interessante se chiedi della profondità computazionale invece della complessità di Kolmogorov. google.com/…
Chad Brewbaker,

2
Mescolando in alcune istanze di PARITY in un linguaggio duro per formare S (ad esempio prefissando ogni istanza con un bit che alterna la lingua da cui proviene l'istanza), allora fnK sarà più piccolo di fn . Quanto piccolo dipende dalla densità relativa.
András Salamon,

1
Un posto è nelle note della conferenza di Vadhan qui (19 febbraio): people.seas.harvard.edu/~salil/cs221/spring10/lectures.html
usul

1
@ AndrásSalamon, sì, spero di non essere troppo sciatto, ma penso chedovrebbe essere essenzialmente la funzione di beaver occupato. nmaxw:K(w)=n|w|
usul

Risposte:


14

Considera la funzione di parità (o qualsiasi altra funzione che dipende da tutti / la maggior parte dei bit dell'ingresso). Per la funzione di parità, . Quindi D'altra parte, f n = Θ ( n ) . f K n = Θ ( 1T(w)=Θ(|w|)

fn=Θ(n).
fnK=Θ(1|IK(n)|w:K(w)=n|w|)Ω(12nmaxw:K(w)=n|w|).

Notare che . Pertanto e . Allo stesso modo, ; quindi “cresce molto rapidamente”. Inoltre, non è difficile capire che non v'è alcun limite superiore calcolabile per .max w : K ( w ) = n | w | 2 2 Ω ( n ) f K n2 2 Ω ( n ) / 2 nK ( 2 2 2 n ) = O ( n ) f K nK(22n)=O(n)

maxw:K(w)=n|w|22Ω(n)
fnK22Ω(n)/2nK(222n)=O(n)f K nfnK222Ω(n)/2nfnK

9

Dato l'interesse per questa domanda, ho pensato che potesse essere utile sottolineare in modo più esplicito il motivo per cui non dovremmo essere affatto sorpresi dalla risposta e cercare di dare una direzione per i perfezionamenti della domanda. Questo raccoglie e si espande su alcuni commenti. Mi scuso se questo è "ovvio"!

Considera l'insieme di stringhe della complessità di Kolmogorov : Esistono al massimo tali stringhe, in quanto vi sono descrizioni di lunghezza . Ma nota che questo set è indecidibile per il generale (altrimenti, potremmo calcolare semplicemente ripetendo da a e controllando l'appartenenza a ). Inoltre, la funzione cresce indiscutibilmente velocemente. È una variante della funzione di castoro indaffarato: qual è l'output più lungo di una macchina di Turing della lunghezza della descrizioneJ K ( n ) = { w : K ( w ) = n } . 2 n 2 n n n K ( w ) n = 1 | w | J K ( n ) g K ( n ) = max w J K ( n ) | w | n M M Mn

JK(n)={w:K(w)=n}.
2n2nnnK(w)n=1|w|JK(n)
gK(n)=maxwJK(n)|w|
n? Se questo diventasse più lento di qualche funzione calcolabile, potremmo decidere il problema di arresto: dato un TM , costruisci che simula e stampa un ad ogni passo. Se la lunghezza della descrizione di è , allora: ferma al massimo a passi; o non si ferma.MM'MM n M g K ( n ) M1M'nMgK(n)M

Ora, alla domanda di Andrew, abbiamo che , dove è la lingua originale. Quindi l'unico modo per evitare che contenga input molto grandi in sarebbe se contiene solo stringhe molto non comprimibili. (Nota che, altrimenti, possiamo ignorare completamente la distinzione tra analisi del caso peggiore e dell'analisi del caso medio, perché abbiamo una media al massimo di stringhe ma la dimensione della stringa più grande sta crescendo più velocemente di qualsiasi funzione calcolabile di . )S I K ( n ) n S 2 n nioK(n)=SJK(n)SioK(n)nS2nn

Sento che è probabilmente impossibile costruire una non banale (cioè infinita) che contenga solo stringhe non comprimibili, eppure sia decidibile. Ma non lo so. Tuttavia, si spera che ciò dia intuizione sul perché non dovremmo sperare che la maggior parte delle lingue abbia più lento di una funzione calcolabile.f K nSfnK

Per fare un passo indietro, la domanda è di confrontare le prestazioni sugli input di lunghezza con le prestazioni sugli input che possono essere compressi alla lunghezza . Ma abbiamo nozioni di compressione che sono molto più trattabili (e meno potenti) della complessità di Kolmogorov. Un modo semplice è quello di dare un circuito di dimensione , che in ingresso il numero binario produce il bit di . Si noti che qui l'esplosione della dimensione dell'ingresso è al massimo esponenziale (un circuito di dimensione ha al massimo ingressi possibili).n n b b n n 2 nnnnBBwn2n

Quindi possiamo riformulare la domanda lasciando che E definire analogo. La ragione della speranza qui è che la maggior parte delle stringhe richiedono un circuito grande quasi quanto la stringa stessa e che nessuna stringa è più grande esponenzialmente del circuito richiesto. Forse in questo caso potremmo trovare lingue in cui e sono simili asintoticamente.

ioC(n)={wS:il circuito più piccolo che specifica implicitamente w ha dimensioni n}.
fnCfnfnC

Una domanda abbastanza strettamente correlata è la complessità di linguaggi impliciti come IMPLICIT_SAT è NEXP-completo e di solito la versione implicita dei problemi NP-completi è NEXP-completa. Decidere IMPLICIT_SAT è almeno facile quanto usare semplicemente il circuito per scrivere tutto , quindi eseguire un algoritmo per SAT su . Quindi, se per SAT, ciò sembra vicino alla prova che IMPLICIT_SAT nel caso medio è decidibile quasi altrettanto rapidamente di SAT nel caso peggiore. Ma non so come si possa confrontare direttamente la tua nozione con le lingue implicite perché la nozione di "circuito più piccolo per

ioMPLioCioT_SUNT={circuiti C:C specifica implicitamente w,wSUNT}.
wwfnC=Θ(fn)w"non entra in gioco per le lingue implicite.

Spero che questo sia utile / interessante!

Non sono sicuro di un libro di testo che menziona problemi impliciti, ma qui ci sono alcune note di lezione: http://people.seas.harvard.edu/~salil/cs221/spring10/lec8.pdf


|JK(n)|=2n

1
@AndrewMacFie, giusto, dovrebbe essere "al massimo". Risolverà.
usul

fnK

4

SSLn2nnfnK2fn


Si noti che la risposta di Yury comprende questo, e precisa anche che "può trovarsi nella regione di".
András Salamon,
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.