Per quali algoritmi esiste un grande divario tra l'analisi teorica e la realtà?


52

Sono due modi per analizzare l'efficienza di un algoritmo

  1. mettere un limite superiore asintotico sul suo tempo di esecuzione, e
  2. per eseguirlo e raccogliere dati sperimentali.

Mi chiedo se ci sono casi noti in cui esiste un divario significativo tra (1) e (2). Con questo intendo che (a) i dati sperimentali suggeriscono un asintotico più stretto o (b) ci sono algoritmi X e Y tali che l'analisi teorica suggerisce che X è molto meglio di Y e che i dati sperimentali suggeriscono che Y è molto meglio di X.

Poiché gli esperimenti di solito rivelano un comportamento nel caso medio, mi aspetto che le risposte più interessanti si riferiscano ai limiti superiori del caso medio. Tuttavia, non voglio escludere risposte forse interessanti che parlano di limiti diversi, come la risposta di Noam su Simplex.

Includi strutture di dati. Si prega di inserire un algo / ds per risposta.


Sarebbe utile se chiarissi di che tipo di limiti superiori stai parlando. Stai solo parlando di problemi per i quali esiste un divario significativo tra i limiti superiore e inferiore più noti per la complessità temporale peggiore? Oppure stai includendo anche problemi per i quali sono noti limiti stretti alla complessità del tempo peggiore, ma i tempi di esecuzione tipici sono significativamente più veloci? Potrebbe essere più interessante considerare la complessità levigata piuttosto che la complessità del caso peggiore. I risultati sperimentali su input "tipici" o input casuali fanno poco per confutare l'esistenza di input patologici.
James King,

In quel caso, penso che ci siano due domande che dovrebbero essere poste separatamente: una sulle lacune tra la complessità del caso peggiore e la complessità del caso medio / levigata, e una sulle lacune tra la complessità teorica del caso medio / levigata e i risultati sperimentali pratici. Modifica: hai fatto una modifica affrontando questo mentre stavo scrivendo il mio commento :)
James King,

Risposte:


37

L'esempio più eclatante è ovviamente il metodo Simplex che corre rapidamente in pratica, suggerendo la tempismo, ma richiede tempo esponenziale in teoria. Dan Spielman ha appena ricevuto il premio Nevanlinna in larga misura per aver spiegato questo mistero.

Più in generale, molti casi di programmazione di interi possono essere risolti abbastanza bene usando solutori IP standard, ad esempio si potrebbero risolvere aste combinatorie per la maggior parte delle distribuzioni tentate su input di dimensioni significative - http://www.cis.upenn.edu/~mkearns /teaching/cgt/combinatorial-auctions-survey.pdf


3
È stata trovata una famiglia esplicita di programmi lineari per i quali il simplex richiede tempo esponenziale?
Opt

1
Per quanto ho capito, ci sono molte famiglie esplicite che richiedono tempo esponenziale (ad esempio, la prima volta data da Klee e Minty: "Quanto è buono l'algoritmo simplex?", 1972). Tuttavia, la scelta della regola pivot è rilevante per questi risultati. Immagino che la maggior parte dei riferimenti a questi risultati si possano trovare nel documento di Spielman e Teng ( arxiv.org/abs/cs/0111050 ).
MRA,


ci sono limiti inferiori per alcune specifiche regole di rotazione in questo documento cs.au.dk/~tdh/papers/random_edge.pdf
Igor Shinkar,

26

Basi di Groebner . Il tempo di esecuzione nel caso peggiore è doppiamente esponenziale (nel numero di variabili). In pratica, tuttavia, soprattutto per problemi ben strutturati, gli algoritmi F4 e F5 sono efficaci (ovvero terminano abbastanza rapidamente). È ancora un'area di ricerca attiva per capire quale dovrebbe essere la congettura corretta anche riguardo alla durata media o prevista. Si ipotizza che sia collegato, in qualche modo, al volume del politopo di Newton dell'ideale sottostante.


Media / prevista in quale distribuzione? Pensavo che persino definire il tempo di esecuzione previsto fosse difficile per problemi algebrici ...
Joshua Grochow,

1
Non lo so per i casi risolti rapidamente con i metodi F4 e F5, ma è abbastanza facile costruire un sistema di polinomi con molte variabili e basso grado che codificano un'istanza SAT. In tal caso non mi è noto che l'algoritmo superi DPLL / DPLL +. Mi piacerebbe davvero sapere di più sui risultati sperimentali su queste cose!
MassimoLauria,

@Joshua: a questo punto, qualsiasi distribuzione che consenta risultati ... @Massimo: codificare il problema X come istanza di Y non batte quasi mai algoritmi specializzati per X! Ma GB e DPLL sono sostanzialmente equivalenti, quindi sarei molto sorpreso di vedere una differenza effettiva.
Jacques Carette,

1
@Massimo: Sì, il calcolo GB è NP-Hard. A seconda della formulazione. In effetti, la maggior parte delle domande (completamento, appartenenza ideale, campo algebricamente chiuso vs booleani) sono PSPACE complete o peggio (EXPSPACE complete). Il che significa che i calcoli GB dovrebbero essere molto più difficili dei problemi NP-completi (e quindi anche in media, qualsiasi algoritmo per loro come F5 molto probabilmente non supererebbe DPLL).
Mitch,

22

O(2((nlogn)))

Non so se ci sia un risultato formale in media / levigata complessità del problema, ma ricordo di averne letto uno esistente - forse qualcun altro può suonare nel sottolineare un risultato formale. Certamente, ci sono molte prove sperimentali e molti solutori veloci. Sono anche curioso di sapere se questa proprietà si estende ad altri membri della famiglia completa di GI.


1
O(2nlogn)

2
Oh! Forse stai pensando a Babai-Kucera, che fornisce un algoritmo a medio tempo lineare per GI: doi.ieeecomputersociety.org/10.1109/SFCS.1979.8
Joshua Grochow,

Sì, Babai-Kucera è quello! Grazie per il riferimento.
Anand Kulkarni,

20

Da David Johnson, una discrepanza nei rapporti di approssimazione teorica e sperimentale: il problema del commesso viaggiatore: un caso di studio sull'ottimizzazione locale, DS Johnson e LA McGeoch . In questo documento forniscono prove sperimentali di asintotici (dal momento che gli esperimenti arrivano fino a dimensioni N = 10.000.000!) Che sfidano gli asintotici teorici: l'algoritmo "Greedy" o "Multi-Fragment" di Jon Bentley (rapporto di approssimazione nel caso peggiore almeno logN / loglogN) batte l'inserzione più vicina e il doppio MST, entrambi con rapporti di approssimazione nel caso peggiore di 2.


20

Un altro esempio che non è stato ben compreso fino a poco tempo fa è il tempo di esecuzione dell'algoritmo k-mean di Lloyd , che (da un punto di vista pratico) è stato l'algoritmo di clustering preferito da oltre 50 anni. Solo di recente, nel 2009, è stato dimostrato (da Vattani ) che, nel peggiore dei casi, l'algoritmo di Lloyd richiede un numero di iterazioni che è esponenziale nel numero di punti di input. D'altra parte, allo stesso tempo, un'analisi smussata (di Arthur, Manthey e Röglin ) ha dimostrato che il numero smussato di iterazioni è semplicemente polinomiale, il che ha spiegato la performance empirica.


10

I corollari trasversali, di deque e divisi della congettura di ottimalità dinamica per gli alberi splay sono esempi di tali lacune. Gli esperimenti confermano la richiesta di tempo lineare, ma non ci sono prove conosciute.


3
Seth Pettie ha dimostrato che n deque operazioni non richiedono più di O (n alpha * (n)) tempo, in cui "alpha *" è la funzione inversa iterata di Ackermann, che è un gap piuttosto piccolo.
jbapple,

9

C'è un leggero problema con la domanda. Esistono infatti più di due modi per analizzare un algoritmo e uno dei modi teorici che è stato trascurato è il tempo di esecuzione previsto, piuttosto che il tempo di esecuzione nel caso peggiore. È proprio questo comportamento di caso medio che è rilevante per fare esperimenti. Ecco un esempio molto semplice: immagina di avere un algoritmo per un input di dimensione n, che richiede tempo n per ogni possibile input di dimensione n ad eccezione di un input specifico di ogni lunghezza che richiede tempo 2 ^ n. Ascolta il peggior tempo di esecuzione è esponenziale, ma il caso medio è [(2 ^ n -1) n + (2 ^ n) 1] / (2 ^ n) = n - (n-1) / 2 ^ n quale limiti a n. Chiaramente i due tipi di analisi danno risposte molto diverse, ma è prevedibile poiché stiamo calcolando quantità diverse.

Eseguendo l'esperimento un sacco di volte, anche se impieghiamo il tempo di esecuzione più lungo per il campione, stiamo ancora campionando solo una piccola parte dello spazio di possibili input, quindi quindi se le istanze difficili sono rare, è probabile che ci manchino .

È relativamente facile costruire un simile problema: se i primi n / 2 bit sono tutti zero, allora risolvi l'istanza 3SAT codificata con gli ultimi n / 2 bit. Altrimenti respingere. Man mano che n aumenta, il problema ha all'incirca lo stesso tempo di esecuzione nel peggiore dei casi dell'algoritmo più efficiente per 3SAT, dove il tempo di esecuzione medio è garantito essere molto basso.


Ho già risposto a James King sopra che mi aspetto che le risposte più interessanti riguardino il runtime previsto. Modificherò la domanda per renderla più visibile.
Radu GRIGore,

9

L'inferenza di tipo Damas-Milner si è dimostrata completa per il tempo esponenziale e ci sono casi facilmente costruibili con esponenziale esplosione delle dimensioni di un risultato. Tuttavia, sulla maggior parte degli input del mondo reale si comporta in modo efficacemente lineare.


C'è un riferimento che consiglieresti per questo risultato? Mi piacerebbe saperne di più.
Radu GRIGore,

1
Non l'ho letto da solo, ma l'articolo citato più frequentemente è Harry G. Mairson, "La decidibilità della tipizzazione ML è completa per il tempo esponenziale deterministico", 17 ° Simposio sui principi dei linguaggi di programmazione (1990).
sclv,

9

Il PTAS per l'albero di Steiner nei grafici planari ha una dipendenza ridicola da epsilon. Tuttavia, esiste un'implementazione che mostra in pratica prestazioni sorprendentemente buone.


8

Accoppiamento di heap, da [1] - implementano heap, in cui l'inserimento e l'unione hanno una complessità ammortizzata O (log n), ma si presume che sia O (1). In pratica, sono estremamente efficienti, specialmente per gli utenti della fusione.

Li ho appena scoperti proprio oggi mentre leggevo il Sec. 5.5 del libro di C. Okasaki "Strutture di dati puramente funzionali", quindi ho pensato di condividere informazioni su di loro.

[1] Fredman, ML, Sedgewick, R., Sleator, DD e Tarjan, RE 1986. L'heap di accoppiamento: una nuova forma di heap autoregolante. Algorithmica 1, 1 (gennaio 1986), 111-129. DOI = http://dx.doi.org/10.1007/BF01840439


Ci sono stati alcuni progressi da Okasaki, e ora ci sono cumuli (imperativi) di accoppiamento con O (0) combinazione, O (1) insert e findMin, O (lg lg n) diminuzioniKey e O (lg n) deleteMin: arxiv. org / abs / 0903.4130 . Questo heap utilizza un meccanismo di accoppiamento diverso rispetto ai cumuli di accoppiamento originali di Fredman et al.
jbapple,

7

Relativo all'osservazione di ilyaraz sul ramo e il limite, Pataki et al. mostra che la riduzione di branch e bound oltre a una base reticolare può risolvere quasi tutti gli IP casuali in polytime.


6

L'euristica di Lin-Kernighan per il TSP ("Un'euristica efficace per il problema del venditore ambulante", Operations Research 21: 489-516, 1973) ha molto successo nella pratica, ma manca ancora di un caso medio o di un'analisi uniforme per spiegarne le prestazioni . Al contrario, esiste un'analisi omogenea dell'euristica a 2 opt per il TSP di Matthias Englert, Heiko Röglin e Berthold Vöcking (Algorithmica, per apparire).


5

Esistono molti algoritmi molto veloci ed efficienti nella pratica di diramazione e rilegatura per diversi problemi NP-difficili che non possiamo analizzare rigorosamente: TSP, albero di Steiner, imballaggio del bidone e così via.

Ω(nm)


Intendi O (mn) o sono confuso?
Radu GRIGore,

O(nmlog(n2/m))
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.