Classi di complessità per casi diversi da "Peggior Caso"


10

Abbiamo classi di complessità rispetto, per esempio, alla complessità del caso medio? Ad esempio, esiste una classe di complessità (denominata) per i problemi che richiedono il tempo polinomiale previsto per decidere?

Un'altra domanda considera la migliore complessità del caso , esemplificata di seguito:

Esiste una classe di problemi (naturali) la cui decisione richiede almeno un tempo esponenziale?

Per chiarire, prendere in considerazione alcune EXP lingua -Complete . Ovviamente, non tutti i casi di richiedono tempo esponenziale: ci sono casi che possono essere decisi anche in tempi polinomiali. Quindi, la complessità del caso migliore di non è il tempo esponenziale.LLL

EDIT: Poiché sono sorte diverse ambiguità, voglio provare a chiarire ancora di più. Per complessità "nel migliore dei casi", intendo una classe di complessità la cui complessità dei problemi è limitata da alcune funzioni. Ad esempio, definire BestE come la classe di lingue che non può essere decisa in un tempo inferiore a un esponenziale lineare. Simbolicamente, lascia che denoti una macchina di Turing arbitraria, e , e siano numeri naturali:Mcn0n

LBestE (c)(M)[(L(M)=L)(n0)(n>n0)(x{0,1}n)[T(M(x))2c|x|]]

dove indica i tempi necessari prima che fermi sull'ingresso .T(M(x))Mx

Accetto che definire tale classe di problemi sia molto strano, dal momento che lo stiamo richiedendo, ogni macchina di TuringM , indipendentemente dalla sua potenza, non possa decidere la lingua in tempo meno di un esponenziale lineare.

Si noti tuttavia che la controparte del tempo polinomiale ( BestP ) è naturale, poiché ogni macchina di Turing richiede tempo |x|per leggere almeno il suo input.

PS: Forse, invece di quantificare come "per tutte le macchine di Turing ", dobbiamo limitarlo ad alcune classi di macchine di Turing predefinite, come le macchine di Turing a tempo polinomiale. In questo modo, possiamo definire classi come B e s t ( n 2 ) , che è la classe di linguaggi che richiedono almeno un tempo quadratico da decidere su macchine Turing a tempo polinomiale.MBest(n2)

PS2: si può anche considerare la controparte della complessità del circuito, in cui si considera la minima dimensione / profondità del circuito per decidere una lingua.


Solo perché ci sono casi di SAT che sono facili, ciò non significa che il suo tempo previsto sia polinomiale. Non sono sicuro di aver capito la tua domanda ..
Lev Reyzin

@Lev Reyzin: non intendevo dire che SAT è nei tempi previsti. Intendevo dal momento che SAT ha esempi semplici, non possiamo dire che la complessità del "caso migliore" sia difficile.
MS Dousti,

Oh, vedo, la complessità media del caso e la complessità del caso migliore sono due domande separate! In qualche modo mi è mancato questo nella mia prima lettura - il mio errore.
Lev Reyzin

Non riesco ad analizzare la tua definizione di BestE. M e x sono fuori dalla loro quantificazione ... inoltre, non vuoi che rifiuti gli input che non sono in L ? ML
Ryan Williams,

@Ryan: Grazie per aver sottolineato il difetto. L'ho corretto.
MS Dousti,

Risposte:


13

Anche se non riesco ad analizzare le tue definizioni, dovresti sapere che sono note gerarchie temporali molto più forti, in particolare gerarchie temporali "quasi ovunque".

Ecco l'affermazione formale: per ogni tempo legato , esiste un linguaggio L T I M E [ T ( n ) ] con la proprietà che ogni algoritmo deterministico che riconosce correttamente L deve eseguire nel tempo asintoticamente maggiore di t ( n ) su tutti gli input tranne finitamente molti, per un tempo sufficientemente piccolo t ( n ) . T(n)LTIME[T(n)]Lt(n)t(n)

"Sufficientemente piccolo" significa .t(n)logt(n)o(T(n))

Supponiamo che scegliamo per un esempio, e otteniamo un linguaggio duro L . Quindi, qualsiasi algoritmo che riconosce correttamente L deve impiegare almeno 2 n / n 2 volte su tutti gli input oltre una certa lunghezza. Questo sembra essere quello che stai cercando nella tua classe BestE.T(n)=2nLL2n/n2

Riferimento:

John G. Geske, Dung T. Huynh, Joel I. Seiferas: una nota sugli insiemi quasi complessi ovunque e sulla separazione delle classi deterministiche-temporali Inf. Comput. 92 (1): 97-104 (1991)


Molto bene grazie. Penso che tu abbia capito abbastanza bene la mia domanda, e la tua frase introduttiva "Non riesco proprio ad analizzare le tue definizioni" è solo un segno della tua modestia :)
MS Dousti,

2
Se ho indovinato correttamente, la tua definizione dovrebbe essere simile a: "L \ in BestE \ iff (\ exist c) (\ forall M) [(L (M) = L) \ Rightarrow (\ exist n_0) (\ forall n > n_0) (\ forall x \ in \ {0,1 \} ^ n) [T (M (x))> 2 ^ {c | x |})]. "
Ryan Williams,

Sì, hai ragione. Ho modificato la definizione all'ultimo minuto e ho smarrito alcuni dei quantificatori. Ho corretto la domanda in base alla tua definizione.
MS Dousti,

12

Esistono diverse classi che tentano di affrontare varie nozioni di complessità nel caso medio. Nello zoo di complessità, alcune classi che potrebbero interessarti sono:

AvgP

HeurP

DistNP

(NP, P-campionabili)

Arora / Barak copre molte classi simili (in Ch 18), che definiscono distP, distNP e sampNP.

L'esatta relazione tra tutte queste classi è caratterizzata dai Cinque mondi di Impagliazzo, che in precedenza era stato chiesto in un'altra domanda .

Per quanto riguarda la domanda sulla complessità del "caso migliore", non sono sicuro di aver capito bene cosa intendi. Stai cercando EXP ?

Se intendi le classi di complessità definite in termini di tempo di esecuzione del caso migliore in tutte le istanze, questa non è una misura di complessità molto buona a priori, dato che guarderesti solo i casi banali di un dato problema.


Molto ben fatto! Questo è ciò di cui avevo bisogno per la parte relativa alla complessità del caso medio della domanda. Per quanto riguarda la parte "best-case", ho notato che la dichiarazione originale della domanda era vaga. Colpa mia! L'ho modificato molto, quindi per favore considera di leggerlo di nuovo.
MS Dousti,

5

TIME[T(n)]CLCLLLCLCLL¯=ΣLCBestEE

(A parte la storia: la nozione di immunità fu sviluppata per la prima volta da Post nel 1944 nella teoria della computabilità, molto prima ancora che P fosse definita. Post in realtà considerava "set semplici" - un set è semplice se il suo complemento è immune. Per un teorico della calcolabilità, la parola "immune" in genere significa "immune a insiemi calcolabili". In tale contesto, l'immunità equivale a "immune a insiemi di ce" poiché ogni set di ce infinito ne contiene uno calcolabile infinito. Credo che l'articolo di Post sia stato anche il primo a introdurre nozione di riduzione di molti-uno, ma non potrei giurarlo.)


MLLM(x)=1

LLC

1
@Sadeq: risolto, grazie. @Ryan: Vero (o è stato un paio d'ore fa: da allora ha aggiornato la definizione). Quindi sarebbe l'immunità anziché la bi-immunità. Ad ogni modo, principalmente volevo solo sottolineare la parola chiave "immunità".
Joshua Grochow,

2

Casi diversi hanno più senso quando si parla di algoritmi, non di problemi. D'altra parte, le classi di complessità riguardano problemi, non algoritmi. Pertanto, la classe di complessità essendo sempre il caso peggiore per qualsiasi algoritmo è dovuta alla definizione.

Nella complessità, il tuo obiettivo è conoscere il numero di risorse necessarie per risolvere qualsiasi istanza di un determinato problema. Pertanto, sai che per ogni data istanza e algoritmo, avrai bisogno di quelle risorse e niente di più.

Nell'analisi dell'algoritmo, l'obiettivo è garantire che l'algoritmo abbia un limite superiore per una risorsa, in qualsiasi istanza del problema. Un limite banale è la classe di complessità del problema, dal momento che nessun algoritmo utile (che fa passi non obbligatori) richiede più tempo di quello. Tuttavia, è possibile migliorare tale limite in base alle specifiche dell'algoritmo.

Θ

Come nel migliore dei casi, è banale per ogni problema trovare il minor numero di risorse necessarie. Supponiamo che l'ingresso sia di lunghezza O (n) e che sia di lunghezza O (m). Quindi la seguente TM M funziona sempre in O (n) + O (m) nel migliore dei casi:

M {Input, grado, Soluzione}

  1. Confronta l'istanza data con l'istanza codificata nella macchina.
  2. Se sono uguali, restituisce la soluzione codificata.
  3. Altrimenti, fai una ricerca di forza bruta.

-1

O(1)


1
Non penso che questo contenga come un algoritmo corretto per il problema. Tuttavia, il tuo algoritmo può essere modificato in modo da verificare prima che l'input sia uguale alla particolare istanza che hai predeterminato (in tempo O (1)). In tal caso, restituisce la risposta precalcolata. In caso contrario, risolvi l'istanza data con qualsiasi mezzo. Pensandoci, ogni algoritmo corretto viene eseguito in tempo O (1) per ogni istanza, se possiamo prendere diverse costanti dietro la notazione O per istanze diverse. Ecco perché la "complessità del caso migliore" in senso letterale non è utile.
Tsuyoshi Ito,

Se stai parlando di un calcolo deterministico, non probabilistico, ci vorrebbe tempo lineare (O (n) tempo) per verificare se due codifiche di istanze sono equivalenti: scansiona gli n bit della codifica di input e verifica che sia la stessa come codifica programmata, no?
Daniel Apon,

2
@Daniel: Sì, ma se una delle istanze è fissa, ci vuole solo tempo costante, dove la costante dipende dalla lunghezza dell'istanza fissa.
Tsuyoshi Ito,
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.