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.
Réponses:
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.
Cela a évidemment été mutilé. Je pense que les auteurs avaient l'intention d'écrire quelque chose comme:
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.n h h n n Θ
"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.
la source
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) .O−notation
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.T−notation
la source