Quali sono alcuni problemi in cui sappiamo di avere un algoritmo ottimale?


15

Quali sono alcuni problemi non banali in cui sappiamo che l'algoritmo attuale che abbiamo è quello asintoticamente ottimale? (Per macchine turing)

E come è dimostrato?


11
Una macchina turing è un modello complicato per limiti inferiori. Cambiare defn può cambiare il polinomio nel tempo di esecuzione, quindi devi essere un po 'più specifico.
Suresh Venkat,

Come si definisce non banale?
funkstar

1
Come dice Suresh, il tipo di TM che usi ha un'influenza. Immagino che per il linguaggio dei palindromi (parole che puoi leggere all'indietro), abbiamo una TM a 1 nastro ottimale che prende i passaggi di per decidere la lingua. E per le TM a 2 nastri, è decidibile in tempo lineare, quindi anche molto ottimale. O(n2)
Bruno,

Risposte:


18

Qualsiasi algoritmo che richiede tempo lineare e deve leggere l'intero input deve essere asintoticamente ottimale. Allo stesso modo, come commenta Raphael, qualsiasi algoritmo il cui runtime è dello stesso ordine delle dimensioni dell'output è ottimale.


10
Allo stesso modo, qualsiasi algoritmo il cui runtime è dello stesso ordine delle dimensioni dell'output è ottimale.
Raffaello,

9
Credo che questa risposta e il commento che segue siano lo stato dell'arte completo.
Jeffε

9
Bene, questo è stato deludente
sture

1
Per la cronaca, il commento di Jɛ ff E sembra riferirsi alla risposta di Shir di seguito.
András Salamon,

1
Mi riferivo alla risposta di Max, non a quella di Shir, e al commento di Raphael sulla risposta di Max.
Jeffε

8

Se la misura della complessità che si sta prendendo in considerazione è la complessità della query, ovvero il numero di volte in cui la macchina deve guardare l'input per risolvere un problema specifico, allora ci sono molti problemi per i quali abbiamo algoritmi ottimali. La ragione di ciò è che limiti più bassi per la complessità della query sono più facili da raggiungere rispetto a limiti inferiori per la complessità del tempo o dello spazio, grazie ad alcune tecniche popolari tra cui il metodo avversario .

Il rovescio della medaglia, tuttavia, è che questa misura di complessità è usata quasi in modo quasi esclusivo nell'elaborazione delle informazioni quantistiche in quanto fornisce un modo semplice per dimostrare un divario tra potenza computazionale quantistica e classica. L'algoritmo quantistico più noto in questo framework è l'algoritmo di Grover . Data una stringa binaria per la quale esiste un singolo i tale che x i = n , è necessario trovare i . Classicamente (senza un computer quantistico), l'algoritmo più banale è ottimale: è necessario interrogare questa stringa n / 2 volte in media per trovarex1,,xnixi=nin/2 . Grover ha fornito un algoritmo quantico che lo fa in O ( iinterroga la stringa. Anche questo è stato dimostrato ottimale.O(n)


2
In effetti, la complessità della query è la base alla base della risposta di Max. Per la maggior parte dei problemi, qualsiasi algoritmo dimostra "deve leggere l'intero input" o almeno una frazione costante dell'input.
Jeffε,

6
  • Se si è disposti a modificare il proprio modello, alcuni limiti inferiori nelle strutture di dati sono rigorosi. Vedere Limiti inferiori per Strutture dati per i puntatori a buoni riferimenti per limiti inferiori nelle strutture dati.
  • Dal associato per l'ordinamento nel modello di confronto che alcune persone hanno menzionato qui, è possibile ottenere un limite simile per il problema dello scafo convesso considerando il caso in cui l'input è composto da punti lungo il grafico di una funzione crescente nel primo quadrante del piano.Ω(nlogn)

2
+1 per menzionare le strutture di dati. Ma non credo che sia possibile ottenere un limite inferiore utile per gli scafi convessi tramite i limiti inferiori di confronto per l'ordinamento. Il motivo è che il modello di confronto non è abbastanza potente da calcolare affatto gli scafi convessi. Ciò che funziona invece è utilizzare un modello più potente come gli alberi decisionali algebrici in cui è possibile calcolare gli scafi e quindi adattare il limite inferiore per l'ordinamento a questo modello più potente.
David Eppstein,

Ha senso, grazie per il chiarimento!
Abel Molina,

3
  1. L'ordinamento di confronto usando confronto (unisci ordinamento, per nominarne uno) è ottimale, la prova implica semplicemente il calcolo dell'altezza di un albero con n ! le foglie.O(nlogn)n!

  2. Supponendo la congettura dei giochi unici, Khot, Kindler, Mossel e O'donnell hanno dimostrato che è NP completo per approssimare Max-Cut meglio dell'algoritmo di Goemans e Williamson. Quindi in questo senso G&W è ottimale (supponendo anche che ).PNP

  3. Alcuni algoritmi distribuiti possono essere indicati come ottimali rispetto ad alcune condizioni (ad esempio, la proporzione di processori contraddittori), ma dal momento che hai menzionato le macchine Turing, immagino che non sia il tipo di esempi che stai cercando.


2
Il fatto che l'articolo 2 risponda o meno alla domanda dipende da cosa intende il richiedente con "ottimale", anche se dubito che il richiedente sia in tal senso (altrimenti ci sono molti, molti risultati di approssimabilità ravvicinati che non richiedono nemmeno UGC). Inoltre, non credo che il punto 1 o 3 risponda alla domanda.
Tsuyoshi Ito,

@TsuyoshiIto, è difficile indovinare cosa volesse dire esattamente il richiedente, che è ciò che mi ha fatto provare a rispondere in varie direzioni nella speranza di colpire qualcosa di utile per lui / lei. Cosa ti fa dire che (1) non è una risposta valida, comunque?
Shir

2
Il richiedente chiede specificamente un algoritmo ottimale per la macchina di Turing .
Tsuyoshi Ito,

6
"Ordinamento comparativo" è in realtà un "problema"? O è un problema e una restrizione al modello di calcolo?
Jeffε

3

Supponiamo che si è data di ingresso e viene chiesto di decidere se la macchina RAM M termina sull'ingresso x dopo t passi. Secondo il teorema della gerarchia temporale, l'algoritmo ottimale per decidere ciò è simulare l'esecuzione di M ( x ) per i passaggi t , che può essere eseguita nel tempo O ( t ) .w=M,x,tMxtM(x)tO(t)

(Nota: per le macchine Turing, la simulazione dell'esecuzione di richiede passi O ( t log t ) ; conosciamo solo un limite inferiore di Ω ( t ) . Pertanto, questo non è del tutto ottimale per le macchine Turing in particolare).MO(tlogt)Ω(t)

Esistono altri problemi che contengono la versione del problema di arresto come sotto-caso. Ad esempio, decidere se una frase è una conseguenza del WS1S richiede tempo 2 O ( | θ | ) e questo è ottimale.θ2↑↑O(|θ|)


3

Non sono sicuro di cosa intendi con "non banale", ma che ne dici. . Questa lingua non è quindi regolare, qualsiasi TM che decide che deve essere eseguita in Ω ( n log n ) . L'algoritmo semplice (attraversando ogni altro 0) è ottimale.L={02k|k0}Ω(nlogn)


3

Se consenti problemi di struttura dinamica dei dati, conosciamo alcuni algoritmi ottimali a tempo super-lineare. Questo è nel modello di sonda cellulare, che è forte come la parola RAM, cioè non si tratta di un modello limitato come alberi di decisione algebrici.

Un esempio è quello di mantenere le somme dei prefissi negli aggiornamenti dinamici. Iniziamo con una matrice di numeri e l'obiettivo è mantenere una struttura di dati che consenta le seguenti operazioni:A[1],,A[n]

  • Aggiungi ad A [ i ] , dati i e ΔΔA[i]iΔ
  • j=1iA[i]i

O(logn)A[i]nΩ(nlogn)

{1,n}

  • ijij
  • ii

O(α(n))αnΩ(nα(n))


1

Molti algoritmi di streaming hanno limiti superiori corrispondenti ai limiti inferiori.


0

ci sono due algoritmi di ricerca in qualche modo simili che [la mia comprensione è] sono ottimali in base a particolari vincoli sull'ordinamento / distribuzione dell'input. tuttavia le presentazioni degli algoritmi in genere non enfatizzano questa ottimalità.

sto citando Wikipedia sopra ma non ha le prove che sono ottimali, forse alcuni riferimenti che dimostrano l'ottimalità possono essere trovati dal pubblico.


-1

Molti algoritmi di tempo sublineare hanno limiti superiori corrispondenti ai limiti inferiori.


3
Contrassegnato come duplicato.
Jeffε,

L'algoritmo del tempo sublineare e l'algoritmo di streaming sono aree diverse.
Bin Fu

1
È vero, ma dovresti combinare le risposte in una sola.
Suresh Venkat,

Alcuni esempi di algoritmi di tempo sublineare ottimali possono essere
Bin Fu

1
non è inoltre chiaro perché questo non sia un duplicato della risposta alla complessità della query.
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.