Esiste un algoritmo per l'ottimizzazione della complessità tempo / spazio degli algoritmi?


9

Negli anni '50 sono stati inventati numerosi metodi per minimizzare i circuiti per le funzioni booleane . Esiste un'estensione di questi metodi o qualcosa di simile per ottimizzare la complessità temporale o spaziale degli algoritmi?

Ad esempio, un'implementazione dell'ordinamento a bolle come input per tale algoritmo produrrebbe un'implementazione di un algoritmo di ordinamento con una complessità temporale più vicina aO(nlogn).


1
Va via!! Noi professionisti del CS ci guadagniamo da vivere insegnando algoritmi sofisticati, il tuo suggerimento ci lascerebbe senza lavoro!
vonbrand,

Bene ... cosa ti aspetti dall'intelligenza artificiale allora?
Ottimizzatore

L'ordinamento a bolle non è una funzione booleana. Peggio ancora, non tutti gli algoritmi di ordinamento sono equivalenti! Ad esempio, alcuni non sono stabili.
Yuval Filmus,

Hai ragione, ma il bubble sort e il "good sort" sono solo un esempio di ciò che vedo come input e output, non concentriamoci sui dettagli.
Ottimizzatore

@YuvalFilmus sicuramente restituire un array ordinato non è più facile che restituire vero o falso
vonbrand

Risposte:


11

Cerca il teorema della velocità di Blum (sì, questo articolo è tutt'altro che informativo; guarda un libro sulla teoria della complessità). Dice essenzialmente che ci sono programmi per i quali esiste un programma che fa lo stesso lavoro, che è più veloce di qualsiasi margine specificato per quasi tutti i dati di input.

Secondo il teorema di Rice , è impossibile sapere se due programmi specifici fanno lo stesso lavoro.

Sì, per alcune nozioni molto ristrette di "programma", dato un esempio, si può costruire il programma "migliore possibile" per il lavoro. Classi importanti, anche. Ma un grido molto lontano da tutto ciò che è in grado di esprimere bolle d'aria.

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.