Порядок визначення зростання від Reynolds & Tymann


47

Я читаю книгу " Принципи інформатики" (2008) Карла Рейнольдса та Пола Таймана (опублікована "Обриси Шаума").

У другій главі представлені алгоритми з прикладом послідовного пошуку, який просто повторюється через список імен та повертає TRUE, якщо в списку знайдено задане ім'я.

Автор продовжує говорити (стор. 17):

Ми говоримо, що "порядок зростання" алгоритму послідовного пошуку дорівнює n. Позначення для цього T (n). Ми також говоримо, що алгоритм, порядок зростання якого знаходиться в межах деякого постійного коефіцієнта T (n), має теоту NL. Msgstr "Послідовний пошук має a n". Розмір проблеми - n, довжина списку, який шукається.

Мені це важко дотримуватися. Книга пронизана помилками, тому я не впевнений, чи щось я пропускаю, чи є помилка друку в параграфі вище. Взагалі англійською мовою я рідко бачу, що якесь речення закінчується словом "... сказати".

Я дуже розгублений.

Що означає Т? Книга не пояснює. Це для Часу чи для Тети?

Якщо "тета NL" означає "Послідовний пошук має тету n". Що означає L? "Лінійний" чи "довжина"?

Я написав до видавців з проханням пояснити. Вони сказали, що направлять моє повідомлення авторам. Вони не відповіли. Я також спробував поглянути на інші джерела, але я все ще відчуваю непристойне відчуття, що я щось нерозумію - тому не можу впокоїтися, поки не розшифрую цей параграф.

Якщо хтось має копію цієї книги і зрозумів цей параграф. Тоді я буду вдячний, якщо ви могли б повідомити мені, чи цей параграф точний, або пояснити його іншими словами. Дякую.


Часова складність T (n), з Вікіпедії : "Оскільки час роботи алгоритму може змінюватись при різних входах одного розміру, зазвичай використовується найгірша часова складність алгоритму, позначена як T (n), яка визначається як Максимальна кількість часу, що витрачається на будь-який вхід розміром п. Менш поширеним і, як правило, чітко визначеним, є мірою середньої складності випадку. Часові складності класифікуються за характером функції T (n). Наприклад, алгоритм з T (n) = O (n) називається лінійним алгоритмом часу, а [...] "
Стефан

1
Я вважаю, що це ця книга, і крім неординарного огляду, який я щойно вийшов, є ще одна датованість сьогодні, яка, мабуть, не є випадковістю!
Джейсон C

Таке використання кажуть, як найменш використане визначення: припустити або припустити. Подумайте про це як "... скажімо так". Ще не впевнений, що вирок має сенс.
Роджер Крюгер

Відповіді:


77

Абзац невірний. На жаль, це виглядає саме так, як писав учень, який не розуміє матеріалу, як відповідь на вправу. Такого роду дурниць немає місця в підручнику. Не робіть різких рухів. Відкладіть книгу. Крок від книги.

Ми говоримо, що "порядок зростання" алгоритму послідовного пошуку дорівнює n. Позначення для цього .T(n)

№ - позначення функції під назвою , яка приймає аргумент під назвою . Ця функція може бути використана для позначення чого б там не було. Існує щось із традицій писати співвідношення повторень для часу виконання програм у формі, наприклад, Але не є "порядком зростання", тут: це конкретна функція, визначена через відношення рецидиву. І ви не можете просто написати " " і очікувати, що люди прочитають вашу думку і знають, що функція  позначає час роботи деякого алгоритму.  тут стоїть час.T(n)Tn

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

Ми також говоримо, що алгоритм, порядок зростання якого знаходиться в межах деякого постійного коефіцієнта має теоту NL. Msgstr "Послідовний пошук має a ".T(n)n

Це, очевидно, було збито. Я думаю, що автори мали намір написати щось подібне,

Ми також кажемо, що алгоритм, порядок зростання якого знаходиться в межах деякого постійного коефіцієнта має тету і ми кажемо: "Послідовний пошук має тету ".T(n)nn

Але, будь ласка, ми не кажемо, що "має тета ", так само, якби - це ваше позначення висоти, ви б не сказали "John має 180cm". Це просто не правильна форма слів. Ми фактично кажемо: "Час роботи алгоритму - це тета  (або тета  )". Зазначимо, зокрема, що - це інструмент для розмови про математичні функції, а не про алгоритми. Тета не означає, що час роботи - це щось; швидше, це те, що ви можете використовувати, щоб поговорити про час роботи.nhhnnΘ

"NL", до речі, позначає клас складності недетермінованого журнального простору , що зовсім не має сенсу в позиції, яку він з'явився в оригінальній цитаті.


12
Перший абзац змусив мене посміхнутися, тому що це саме та річ, яку сказала би вам поліція інформатики :-) (+1 теж, це хороша відповідь).
Джухо

3
Дуже дякую за ваше пояснення. Це дійсно дуже корисно, і зараз я відчуваю, що розумію це трохи краще (або, принаймні, не відчуваю гніву в моєму не розумінні цього абзацу). Я зараз можу відпочити.
JW.

2

Здається, автор намагається пояснити нотацію Big O , але без особливих причин перейменував її на і повністю зміг текст.T

Для гарного опису нотації Big O (а також Little-o та Theta) я рекомендую книгу MIT Вступ до алгоритмів професора Лейзерсона.

Здається, що одна важлива відмінність полягає в тому, що стосується загальної складності алгоритму, який, як правило, є часом , простором або обом. (наприклад, деякі алгоритми працюють повільніше з більшими наборами даних; деяким потрібно більше місця для зберігання з більшими даними; а деяким потрібно більше часу та більше місця) .Onotation

Схоже, що ця стосується лише вимірювання часу алгоритму і не враховує вимоги до зберігання.Tnotation


1
Це не здається, що вони взагалі намагаються пояснити велику О - вони прямо говорять про тету.
Девід Річербі

Текст професора Лейзерсона конкретно описує Theta як більш точну варіацію на BigO. Я розумію, що можуть бути інші визначення Тети, але тета, пов'язана з BigO, - це те, з ким я знайомий.
абеленький

2
Я не думаю, що так відбувається. Натомість я підозрюю, що це звичайна неохайність написання "T (n) = n" і припускаю (не кажучи прямо), що кожен зробить висновок про те, що T (n) посилається на час роботи, а конкретно час роботи алгоритму майте на увазі, і n позначає розмір вхідного даних.
DW
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.