Altri tipi di analisi del tempo di esecuzione oltre al caso peggiore, al caso medio, ecc.?


22

Ecco alcuni modi per analizzare il tempo di esecuzione di un algoritmo:

1) Analisi del caso peggiore: tempo di esecuzione nel caso peggiore.

2) Analisi del caso medio: tempo di esecuzione previsto su un'istanza casuale.

3) Analisi ammortizzata: tempo di esecuzione medio sulla sequenza peggiore di istanze.

4) Analisi uniforme: tempo di esecuzione previsto nell'istanza peggiore perturbata casualmente.

5) Analisi di casi generici: tempo di esecuzione nel peggiore dei casi tranne un piccolo sottoinsieme di istanze.

La mia domanda: è un elenco completo?


2
Immagino che questo tipo di elenco non possa mai essere esaustivo.
Tsuyoshi Ito,

Risposte:


8

L'ottimalità dell'istanza è una proprietà molto interessante degli algoritmi. Si possono generalizzare le nozioni di ottimalità dell'istanza e inventare nozioni sorprendentemente interessanti che includono l'analisi del caso peggiore e del caso medio.

Sebbene non rientri rigorosamente nell'ambito dell'analisi tradizionale dell'algoritmo, è di per sé interessante. L'idea in un articolo di Afshani-Barbay-Chan (FOCS '09) che discute di un algoritmo geometrico considera le prestazioni dell'algoritmo ignare all'ordine di input (che è rilevante per il loro particolare problema).

Questo può essere visto come generalizzato come segue: per ogni algoritmo partiziona gli input in classi di equivalenza e considera le prestazioni dell'algoritmo come una sorta di statistica collettiva sulla prestazione media per ciascuna di queste classi di equivalenza.

L'analisi del caso peggiore considera semplicemente l'input come singole classi di equivalenza e calcola il tempo di esecuzione massimo. L'analisi dei casi medi esamina la banale classe di equivalenza che è una singola comprendente tutti gli input. Nel documento Afshani-Barbay-Chan, il loro algoritmo è ottimale se l'input è suddiviso in classi di permutazioni (cioè, ordina prestazioni ignare).

Non è chiaro se questo porti a nuovi paradigmi di analisi dell'algoritmo. Il corso di Tim Roughgarden ha alcuni eccellenti esempi motivanti e copre diversi metodi per analizzare gli algoritmi.


Ananth, grazie mille per il link al corso di Tim. Questo è esattamente il tipo di cosa che stavo cercando.
Umar,

14

Ne ho altri due per l'elenco, che sono in qualche modo simili.

  1. L'analisi parametrizzata esprime il tempo di esecuzione in funzione di due valori anziché di uno, utilizzando alcune informazioni aggiuntive sull'ingresso misurato in quello che viene chiamato il `` parametro ''. Prendiamo ad esempio il problema del set indipendente. Il miglior tempo di esecuzione per il caso generale è della forma per una costante . Se ora prendiamo come parametro la larghezza dell'albero del grafico e lo rappresentiamo con il parametro , un set indipendente può essere calcolato nel tempo . Quindi se la larghezza dell'albero è piccola rispetto alla dimensione totale del grafico , questo algoritmo parametrizzato è molto più veloce.1 < c < 2 k O ( 2 k n O ( 1 ) ) k nO(cnnO(1))1<c<2kO(2knO(1))kn

  2. L'analisi sensibile all'output è una tecnica che viene applicata ai problemi di costruzione e tiene conto anche della dimensione dell'output nell'espressione di runtime. Un buon esempio è il problema di determinare i punti di intersezione di un insieme di segmenti di linea nel piano. Se non sbaglio puoi calcolare le intersezioni nel tempo dove è il numero di intersezioni.kO(nlogn+k)k


8

L'analisi adattiva misura il tempo di esecuzione degli algoritmi del tempo polinomiale rispetto a una moltitudine di parametri. Ad esempio, si desidera un algoritmo di ordinamento che viene eseguito nel tempo, ma è molto più veloce quando l'input è quasi ordinato. Un'analisi adattativa di un algoritmo di ordinamento prenderebbe in considerazione il numero di inversioni a coppie, il numero di esecuzioni, in cui un'analisi è una parte consecutiva ordinata massima dell'input o l' entropia dell'input.O(nlogn)

Sembra l'analisi parametrizzata per gli algoritmi del tempo polinomiale e sembra che l'analisi sensibile all'output rientri in questa categoria.


Serge, grazie per il link al post sul blog di Glencora, molti commenti interessanti lì.
Umar,

7

Esiste anche un'analisi "ad alta probabilità " (per algoritmi randomizzati), in cui per una determinata istanza ti preoccupi di quanto bene il tuo algoritmo funzionerà per la maggior parte del tempo, ma può rinunciare completamente a una piccola frazione del tempo. Questo è comune nella teoria dell'apprendimento.


4

Puoi aggiungere casualità al tuo algoritmo e combinarlo con tutto quanto sopra. Quindi otterrai, ad esempio, il tempo di esecuzione previsto nel caso peggiore (istanza nel caso peggiore, ma calcolato in media su tutte le possibili sequenze di lanci di monete casuali nell'algoritmo) e il tempo di esecuzione nel caso peggiore con alta probabilità (di nuovo, istanza nel caso peggiore, ma probabilità sulle lancette casuali dell'algoritmo).


3

L'analisi biiettiva è un modo per confrontare due algoritmi (Spyros Angelopoulos, Pascal Schweitzer: Paging e aggiornamento elenco sotto analisi biiettiva. J. ACM 60, 2013): All'incirca, l'algoritmo A è migliore dell'algoritmo B sugli input di lunghezza n se esiste un biiezione f degli ingressi di lunghezza n tale che A esegue sull'ingresso x almeno buono quanto B su f (x).


1

Analisi competitiva

Utilizzato per confrontare gli algoritmi online con gli algoritmi offline delle prestazioni. Vedi la pagina di Wikipedia . Il problema dell'aggiornamento elenco è un classico esempio.


1
Ma non viene utilizzato per analizzare "il tempo di esecuzione di un algoritmo" .
Jukka Suomela,

0

Analisi competitiva Nell'algoritmo di sostituzione della pagina , un metodo sovrappone l'altro per meno pagina mancante. Meno pagine mancanti indica "meno tempo di esecuzione". Inoltre, l'analisi competitiva è un metodo per confrontare due metodi relativamente. Un buon libro di consultazione è "COMPUTAZIONE ONLINE E ANALISI COMPETITIVA" di Allan Borodin.

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.