Costanti nascoste nella complessità degli algoritmi


9

Per molti problemi, l'algoritmo con la migliore complessità asintotica ha un fattore costante molto grande che è nascosto dalla notazione O grande. Ciò si verifica nella moltiplicazione delle matrici, nella moltiplicazione dei numeri interi (in particolare, il recente algoritmo di moltiplicazione dei numeri interi O (n log n) di Harvey e van der Hoeven), nelle reti di ordinamento a bassa profondità e nella ricerca di grafici minori, per farne alcuni. Tali algoritmi sono talvolta chiamati algoritmi galattici.

Si noti che per altri algoritmi, come l'ordinamento generale e l'aggiunta di numeri interi, sono noti algoritmi con complessità asintotica ottimale e piccoli fattori costanti.

Quale ricerca è stata fatta nel separare i primi algoritmi dai secondi algoritmi, da una prospettiva teorica?

Sono consapevole che le costanti nascoste sono spesso omesse per nascondere la distinzione tra diversi modelli di calcolo. Tuttavia, sono fiducioso che in un'ampia varietà di modelli diversi, questi algoritmi galattici saranno più lenti degli algoritmi asintoticamente peggiori per input di dimensioni di un miliardo, per esempio. La distinzione non è sottile, in alcuni casi. È stato reso rigoroso?

Ad esempio, si potrebbe inventare un modello di calcolo molto semplice, come una macchina von Neumann con un ISA molto semplice, e quindi implementare gli algoritmi e limitare i loro tempi di esecuzione con costanti esplicite. È stato fatto per una varietà di algoritmi?


1
Gli algoritmi di moltiplicazione di numeri interi rapidi non sono galattici. In realtà sono comunemente usati nella pratica.
Emil Jeřábek,

2
O(nlogn)

1
Mentre gli autori scrivono (e sono citati sul blog di Lipton), il documento per semplicità non cerca di ottimizzare le costanti, ma molto probabilmente possono essere rese pratiche.
Emil Jeřábek,

@ EmilJeřábek Quel documento era davvero quello di cui stavo parlando. Il documento descrive i miglioramenti che potrebbero essere apportati, ma è estremamente dubbio che l'algoritmo così com'è sarà mai un miglioramento pratico rispetto agli attuali algoritmi O (n log n log n log) che vengono utilizzati nella pratica, dato quanto piccolo log log n è per input pratici.
Isaacg,

4
2d12d=1729d=92912

Risposte:


2

NCN

La metodologia non richiede di fissare alcun modello specifico di calcolo, sebbene ciò possa essere utile ovviamente. Si noti inoltre che è possibile provare a calcolare il comportamento del caso peggiore o il comportamento previsto o ancora qualcos'altro.

L'ingrediente più importante in questa metodologia è l'analisi delle funzioni generatrici di questi valori. A volte è possibile ottenere approssimazioni asintotiche molto precise usando metodi di analisi complesse.

O(nlogn)

In effetti, in quicksort ordinate un elenco ordinando ricorsivamente gli elenchi secondari, in modo da ottenere un miglioramento per tutte le dimensioni se utilizzate mergesort su elenchi di dimensioni inferiori a 10. Una nota interessante nel libro menziona che in alcune librerie Microsoft di provenienza aperta, l'algoritmo di ordinamento generico viene implementato come quicksort fino a quando non si arriva a una dimensione di 10, dopo di che viene utilizzato mergesort. Nei commenti sul codice si menziona che i test delle prestazioni hanno dimostrato che questo valore è ottimale.

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.