Ordre de croissance définition de Reynolds & Tymann

47

Je lis un livre intitulé Principles of Computer Science (2008), de Carl Reynolds et Paul Tymann (publié par Schaum's Outlines).

Le deuxième chapitre présente les algorithmes avec un exemple de recherche séquentielle qui itère simplement dans une liste de noms et renvoie VRAI si un nom donné est trouvé dans la liste.

L'auteur poursuit (page 17):

Nous disons que "l'ordre de croissance" de l'algorithme de recherche séquentielle est n. La notation pour ceci est T (n). Nous disons aussi qu'un algorithme dont l'ordre de croissance est dans un facteur constant de T (n) a un thêta de NL. "La recherche séquentielle a un thêta de n." La taille du problème est n, la longueur de la liste recherchée.

Je trouve cela très difficile à suivre. Le livre est truffé d'erreurs, donc je ne suis pas sûr s'il me manque quelque chose ou s'il y a une faute de frappe dans le paragraphe ci-dessus. En général, je vois rarement une phrase se terminer par "... say".

Je suis très confus.

Qu'est-ce que T représente? Le livre n'explique pas. Est-ce pour le temps ou pour Theta?

Si "un thêta de NL" signifie "La recherche séquentielle a un thêta de n". Que veut dire L? 'Linéaire' ou 'longueur'?

J'ai écrit aux éditeurs pour demander une explication. Ils ont dit qu'ils transmettraient mon message aux auteurs. Ils n'ont pas répondu. J'ai également essayé de regarder d'autres sources, mais j'ai toujours le sentiment persistant que je comprends mal quelque chose. Je ne peux donc pas rester tranquille tant que je n'ai pas décodé ce paragraphe.

Si quelqu'un a un exemplaire de ce livre et a compris ce paragraphe. Ensuite, je vous serais reconnaissant de bien vouloir me faire savoir si ce paragraphe est exact ou l’expliquer autrement. Merci.

JW.
la source
Complexité temporelle T (n), de Wikipedia : "Étant donné que le temps d'exécution d'un algorithme peut varier en fonction de différentes entrées de même taille, on utilise couramment la complexité temporelle la plus défavorable d'un algorithme, notée T (n), définie comme suit: le temps maximal pris pour une entrée de taille n est moins commun, et généralement spécifié explicitement, comme mesure de la complexité de la casse moyenne. La complexité temporelle est classée en fonction de la nature de la fonction T (n). Par exemple, un algorithme avec T (n) = O (n) est appelé un algorithme de temps linéaire, et [...] "
Stefan
1
Je crois que c'est ce livre et, en plus de la critique non stellaire que je viens de quitter, il en existe une autre datée aujourd'hui, qui n'est probablement pas une coïncidence!
Jason C
Cet usage de say ressemble à la définition la moins utilisée: supposer ou supposer. Pensez-y comme "..., disons." Toujours pas sûr que cette phrase ait un sens.
Roger Krueger

Réponses:

77

Le paragraphe est faux. Malheureusement, cela ressemble exactement au genre de chose qu'un élève qui ne comprend pas la matière écrirait pour répondre à un exercice. Cette sorte de non-sens n'a pas sa place dans un manuel. Ne faites pas de mouvements brusques. Pose le livre. Éloignez-vous du livre.

T(n)

T(n)Tn

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

T(n)n

Cela a évidemment été mutilé. Je pense que les auteurs avaient l'intention d'écrire quelque chose comme:

T(n)nn

Mais, s'il vous plaît, nous ne disons pas "a un thêta de ", tout comme si était votre notation pour la hauteur, vous ne diriez pas "John a un de 180 cm". Ce n'est tout simplement pas une forme correcte de mots. En fait, nous disons: "Le temps d'exécution de l'algorithme est theta  (ou theta de  )". Notez en particulier que est un outil pour parler de fonctions mathématiques, pas d'algorithmes. Thêta ne signifie pas que le temps de course est quelque chose; c'est plutôt quelque chose que vous pouvez utiliser pour parler du temps en cours.nhhnnΘ

"NL", soit dit en passant, désigne l' espace de journalisation non déterministe de la classe de complexité , ce qui n'a aucun sens dans la position dans laquelle il apparaît dans la citation d'origine.

David Richerby
la source
12
Le premier paragraphe m'a fait sourire parce que c'est exactement le genre de chose que la police informatique vous dirait :-) (+1 aussi, c'est une bonne réponse).
Juho
3
Merci beaucoup pour votre explication. C'est très utile en effet et maintenant je sens que je le comprends un peu mieux (ou du moins ne me sens pas angoissé de ne pas comprendre ce paragraphe). Je peux me détendre maintenant.
JW.
2

On dirait que l'auteur tente d'expliquer la notation Big O , mais qu'il l'a renommé sans raison particulière et qu'il a complètement mutilé le texte.T

Pour une bonne description de la notation Big O (ainsi que de little-o et de Theta), je recommande le livre Introduction aux algorithmes du MIT par le professeur Leiserson.

Il semble qu'une distinction importante soit que la réfère à la complexité totale d'un algorithme, qui est typiquement le temps , l' espace ou les deux. (Par exemple, certains algorithmes fonctionnent plus lentement avec des ensembles de données plus volumineux; certains requièrent plus d'espace de stockage avec des données plus volumineuses; d'autres requièrent à la fois plus de temps et plus d'espace) .Onotation

Il semble que cette ne se réfère qu'à la mesure du temps d'un algorithme et ne tienne pas compte des exigences de stockage.Tnotation

Abelenky
la source
1
Il ne semble pas qu'ils essaient d'expliquer le grand O du tout, ils parlent explicitement de thêta.
David Richerby
Le texte du professeur Leiserson décrit spécifiquement Theta comme une variante plus précise de BigO. Je me rends compte qu’il existe peut-être d’autres définitions de Thêta, mais c’est la thêta liée à BigO que je connais bien.
Abelenky
2
Je ne pense pas que c'est ce qui se passe. Au lieu de cela, je soupçonne que c’est la négligence habituelle d’écrire "T (n) = n" et de supposer (sans le dire explicitement) que tout le monde déduira que T (n) fait référence à une durée, et plus précisément à la durée de l’algorithme avoir à l'esprit, et n fait référence à la taille de l'entrée.
DW