Definizione dell'ordine di crescita da Reynolds & Tymann


47

Sto leggendo un libro intitolato Principles of Computer Science (2008), di Carl Reynolds e Paul Tymann (pubblicato da Schaum's Outlines).

Il secondo capitolo introduce algoritmi con un esempio di una ricerca sequenziale che scorre semplicemente attraverso un elenco di nomi e restituisce VERO se un determinato nome viene trovato nell'elenco.

L'autore continua dicendo (pagina 17):

Diciamo che l '"ordine di crescita" dell'algoritmo di ricerca sequenziale è n. La notazione per questo è T (n). Diciamo anche che un algoritmo il cui ordine di crescita rientra in un fattore costante di T (n) ha un theta di NL. "La ricerca sequenziale ha un theta di n." La dimensione del problema è n, la lunghezza dell'elenco cercato.

Lo trovo davvero difficile da seguire. Il libro è pieno di errori, quindi non sono sicuro se mi manca qualcosa o se c'è un errore di battitura nel paragrafo sopra. In inglese generale vedo raramente una frase che termina con "... dire".

Sono molto confuso.

Cosa significa T? Il libro non spiega. È per il tempo o per Theta?

Se "un theta della NL" significa "La ricerca sequenziale ha un theta di n." Cosa significa L? "Lineare" o "lunghezza"?

Ho scritto agli editori chiedendo una spiegazione. Dissero che avrebbero inoltrato il mio messaggio agli autori. Non hanno risposto. Ho anche provato a guardare altre fonti, ma ho ancora la sensazione sconcertante di aver frainteso qualcosa, quindi non posso riposare fino a quando non ho decodificato questo paragrafo.

Se qualcuno ha una copia di quel libro e ha compreso quel paragrafo. Quindi, apprezzerei se tu potessi farmi sapere se quel paragrafo è esatto o spiegarlo in altre parole. Grazie.


Complessità temporale T (n), da Wikipedia : "Poiché il tempo di esecuzione di un algoritmo può variare con input diversi della stessa dimensione, si usa comunemente la complessità temporale peggiore di un algoritmo, indicata come T (n), che è definita come il tempo massimo impiegato per qualsiasi input di dimensione n. Meno comune, e di solito specificato esplicitamente, è la misura della complessità del caso medio. Le complessità temporali sono classificate in base alla natura della funzione T (n). Ad esempio, un algoritmo con T (n) = O (n) è chiamato un algoritmo temporale lineare, e [...] "
Stefan,

1
Credo che sia questo libro e, oltre alla recensione non stellare che ho appena lasciato, ce n'è un altro datato oggi, che probabilmente non è una coincidenza!
Jason C

Quell'uso di dire sembra la definizione meno usata: assumere o supporre. Pensalo come "... diciamo". Non sono ancora sicuro che la frase abbia un senso.
Roger Krueger,

Risposte:


77

Il paragrafo è sbagliato Sfortunatamente, sembra esattamente il tipo di cosa che uno studente che non capisce il materiale scriverà come risposta a un esercizio. Questo tipo di assurdità non ha spazio in un libro di testo. Non fare movimenti improvvisi. Metti giù il libro. Allontanati dal libro.

Diciamo che l '"ordine di crescita" dell'algoritmo di ricerca sequenziale è n. La notazione per questo è .T(n)

No. è la notazione per una funzione chiamata , che accetta un argomento chiamato . Quella funzione potrebbe essere usata per significare qualsiasi cosa. C'è qualcosa di una tradizione di scrivere relazioni di ricorrenza per il tempo di esecuzione dei programmi nella forma, ad esempio, Ma non è un "ordine di crescita", qui: è una funzione specifica definita attraverso una relazione di ricorrenza. E non puoi semplicemente scrivere " " e aspettarti che le persone leggano la tua mente e sappiano che la funzione  indica il tempo di esecuzione di alcuni algoritmi.  qui sta per il tempo.T n T ( 1 )T(n)Tn TT(n)=blahTT

T(1)=kT(n)=T(n1)+lognfor n>1
TT(n)=blahTT

Diciamo anche che un algoritmo il cui ordine di crescita rientra in un fattore costante di ha un theta di NL. "La ricerca sequenziale ha un theta di ."nT(n)n

Questo è stato ovviamente rovinato. Penso che gli autori intendessero scrivere qualcosa del genere,

Diciamo anche che un algoritmo il cui ordine di crescita rientra in un fattore costante di ha un theta di e diciamo: "La ricerca sequenziale ha un theta di ".T(n)nn

Ma, per favore, non diciamo "ha un theta di ", così come, se è la tua notazione per altezza, non diresti "John ha una di 180 cm". Non è solo una forma corretta di parole. In realtà diciamo "Il tempo di esecuzione dell'algoritmo è theta  (o theta di  )." Nota in particolare che è uno strumento per parlare di funzioni matematiche, non di algoritmi. Theta non significa che il tempo di esecuzione sia qualcosa; piuttosto, è qualcosa che puoi usare per parlare del tempo di esecuzione.nhhnnΘ

"NL", a proposito, indica lo spazio di registro non deterministico della classe di complessità , che non ha alcun senso nella posizione in cui appare nella citazione originale.


12
Il primo paragrafo mi ha fatto sorridere perché è esattamente il tipo di cosa che la polizia informatica ti direbbe :-) (anche +1, questa è una buona risposta).
Juho,

3
Grazie mille per la tua spiegazione. È davvero molto utile e ora sento di capirlo un po 'meglio (o, almeno, non provo angoscia nel mio cervello per non aver capito quel paragrafo). Ora posso rilassarmi.
JW.

2

Sembra che l'autore stia tentando di spiegare la notazione O grande , ma l'ha ribattezzata senza una ragione particolare e ha modificato completamente il testo.T

Per una buona descrizione della notazione Big O (così come little-o e Theta), raccomando il libro del MIT Introduzione agli algoritmi del Prof. Leiserson.

Sembra che un'importante distinzione sia che la riferisce alla complessità totale di un algoritmo, che è tipicamente tempo , spazio o entrambi. (ad esempio alcuni algoritmi funzionano più lentamente con set di dati più grandi; alcuni richiedono più spazio di archiviazione con dati più grandi; altri richiedono sia più tempo che più spazio) .Onotation

Sembra che questa riferisca solo alla misurazione del tempo di un algoritmo e non tenga conto dei requisiti di archiviazione.Tnotation


1
Non sembra affatto che stiano cercando di spiegare la grande O - parlano esplicitamente di theta.
David Richerby,

Il testo del Prof. Leiserson descrive specificamente Theta come una variazione più precisa su BigO. Mi rendo conto che potrebbero esserci altre definizioni di Theta, ma il theta relativo a BigO è quello con cui ho familiarità.
abelenky,

2
Non penso che sia quello che sta succedendo. Invece, sospetto che sia la comune sciatteria di scrivere "T (n) = n" e assumere (senza dirlo esplicitamente) che tutti inferiranno che T (n) si riferisce a un tempo di esecuzione, e in particolare al tempo di esecuzione dell'algoritmo che tenere a mente, e n si riferisce alla dimensione dell'input.
DW
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.