Quando abbiamo trovato limiti migliori per gli algoritmi noti?


16

Ci sono esempi interessanti di algoritmi che sono stati pubblicati con limiti comprovati e dove sono stati successivamente pubblicati limiti strettamente migliori? Algoritmi non migliori con limiti migliori - ovviamente è successo! Ma una migliore analisi porta ad un migliore vincolo su un algoritmo esistente

Pensavo che la moltiplicazione delle matrici fosse un esempio di questo, ma ne ho discusso (forse in modo errato!) Dopo aver cercato di capire meglio Coppersmith – Winograd e i suoi amici.


Un esempio ideale è la moltiplicazione di matrici. I recenti miglioramenti sono in effetti tutti una migliore analisi (Le Gall, Williams, ecc.).
Lwins,

Lwins - Sospettavo che potesse essere il caso, ma sfogliare alcuni dei documenti mi ha fatto pensare che stessero variando leggermente sia l'algoritmo che l'analisi. Potrei aver bisogno di guardare più in profondità.
Rob Simmons,

Questa è una mezza risposta, dato che è sentito dire di seconda mano: quando si lavora sulla determinazione di Buechi automata ( dl.acm.org/citation.cfm?id=1398627 ), Safra inizialmente ha analizzato la sua costruzione per avere un esponente quadratico. Quindi, dopo aver scritto la costruzione e, a causa di un malinteso, ha finito con il migliore (ottimale) esponente. nlogn
Shaull

Suggerirei di esaminare i problemi di pianificazione del movimento - mi sembra che ci siano stati diversi casi lì. Inoltre, IIRC la precisa complessità dell'algoritmo simplex (s?) È stata una questione di studio per un bel po '.
Steven Stadnicki,

1
Leggermente diverso, ma la prova dell'esistenza di un input che soddisfaceva delle clausole in un'istanza 3SAT è stata migliorata in un algoritmo esplicito mediante un'analisi più attenta. 7m/8
Stella Biderman,

Risposte:


23

L' algoritmo Union-Find, che Tarjan 1 ha mostrato aveva complessità nα(n) , dove α(n) è la funzione inversa di Ackermann, era stato analizzato in precedenza da diverse persone. Secondo Wikipedia, è stato inventato da Galler e Fischer 2 , ma questo sembra essere errato, in quanto non avevano tutti i componenti dell'algoritmo necessari per farlo funzionare così rapidamente.

Sulla base di brevi scansioni dei documenti, sembra che l'algoritmo sia stato inventato da Hopcroft e Ullman 3 , che ha dato un (errato) tempo O(n) . Fischer 4 ha quindi trovato l'errore nella dimostrazione e ha assegnato un tempo O(nloglogn) . Successivamente, Hopcroft e Ullman 5 hanno dato un limite di tempo O(nlog*n) , dopo di che Tarjan 1 ha trovato il limite di tempo (ottimale) O(nα(n)) .

1 RE Tarjan, "Efficienza di un algoritmo di unione di insieme buono ma non lineare" (1975).
2 BS Galler e MJ Fischer, "Un algoritmo di equivalenza migliorato" (1964).
3 JE Hopcroft e JD Ullman, "Un algoritmo di fusione di elenchi lineari" (1971).
4 MJ Fischer, "Efficienza degli algoritmi di equivalenza" (1972).
5 JE Hopcroft e JD Ullman, "Set-fusione algoritmi" (1973).


2
La storia di questa struttura di dati non è chiara per me e sarebbe bello indagarla. Ho sfogliato l'articolo di Galler e Fischer e sembra descrivere la struttura dei dati Disjoint Sets Forest (DSF), ma senza l'euristica di compressione del percorso cruciale (PC) e unione ponderata (WU). Hopcroft e Ullman attribuiscono DSF con PC e senza WU a Tritter, citando Knuth. Non sono sicuro che DSF sia con PC che con WU sia stato proposto in un articolo pubblicato prima di Hopcroft e dell'articolo di Ullman, anche se non sarei sorpreso se lo fosse.
Sasho Nikolov,

1
@Sasho: tutto dovrebbe essere verificato, poiché si basa su brevi scansioni dei documenti. Tarjan attribuisce DSF sia con PC che con WU a Michael Fischer, in "Efficiency of equivalence algoritms" (1972), che fornisce un tempo di esecuzione . Scansionando il documento di Fischer, sembra attribuire l'algoritmo a Hopcroft e Ullman in "Un algoritmo di fusione di una lista lineare", ma danno unO(nloglogn)tempo di esecuzione di Θ ( n ) , la cui dimostrazione di Fischer è errata. Tarjan afferma che Hopcroft e Ullman, in "algoritmi di fusione dei set", si riscattano dando unlimite O ( n log n ) .Θ(n)O(nlog*n)
Peter Shor,

12

L'algoritmo di Paturi, Pudlák, Saks e Zane (PPSZ) per k-SAT era noto per avere un tempo di esecuzione di O(1.364n) per 3-SAT , con un limite migliore di O(1.308n) per le formule garantite per avere un compito soddisfacente unico. Successivamente Hertli ha fornito un'analisi migliorata dimostrando che questo limite di runtime migliorato vale anche per il caso generale, mostrando così che PPSZ è l'algoritmo migliore per 3-SAT conosciuto al momento.


Questa è una risposta davvero soddisfacente! Penso che e l'Unione Trova esempi siano i migliori esempi di ciò che speravo.
Rob Simmons,

8

L' attacco logjam menziona che l'analisi del setaccio campo numero generale (applicato al calcolo di logaritmi discreti sopra Fp ) fase di discesa era tightend, vedere in alto a sinistra della terza pagina. Poiché questo è l'unico passaggio che non può essere pre-calcolato (se Fp è risolto), la sua efficienza è stata strumentale al loro attacco.

L'analisi iniziale sembra essere in Gordon 92 , in cui discesa fu servivano analogamente a precomputation, a Lp(1/3,32/3) . L'analisi stretto sembra essere da tesi di Barbulescu , dove discesa è servivano a Lp(1/3,1.232) , dove:

Lp(v,c)=exp((c+o(1))(logp)v(loglogp)1v)
Vale la pena ricordare che questo è tecnicamente un costo previsto e non un limite superiore. Questo mi sembra ancora nello spirito della domanda, ma lo rimuoverò se non è quello che stai cercando.


1
Molto nello spirito, grazie!
Rob Simmons,

6

kO(nk+o(1))O(n2k2)O(n1.98k+O(1))

Ω(nk)

Nota: un discorso di Jason Li (e le diapositive corrispondenti) è disponibile sul sito Web TCS + .


k



4

3 fornire un'analisi più raffinata (contando i sottoproblemi / le sottostrutture) che porta a migliori recidive e quindi migliori tempi di esecuzione. Penso che ci siano un certo numero di esempi simili nella letteratura sulla complessità parametrizzata, in cui l'aggiunta di un'altra variabile all'analisi può portare a tempi di esecuzione migliori, ma ormai sono fuori dal gioco da diversi anni e non riesco a pensare a specifici il momento. Esistono numerosi articoli nelle aree FPT e PTAS che emergono quando si cerca "un'analisi migliorata" nei titoli dei documenti.

Se specificare le scelte conta come lo stesso algoritmo (come l'euristica del grado di profondità di union-find), allora l'algoritmo Edmonds-Karp è una "analisi migliorata" di Ford-Fulkerson, e immagino che ci siano molti altri problemi che hanno algoritmi che hanno visto miglioramenti di runtime da nuove regole di scelta.

Poi ci sono un sacco di analisi ammortizzate di algoritmi esistenti (penso che union-find si adatti a questa descrizione, eccone un altro https://link.springer.com/article/10.1007/s00453-004-1145-7 )


Fare nuove scelte sembra vicino a quello che stavo cercando, ma non è del tutto lì - in un certo senso, un algoritmo più specificato è un "algoritmo diverso" - ma questi sono ancora esempi molto interessanti!
Rob Simmons,
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.