Гарна математична книга про алгоритми [закрито]


11

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

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

Хтось може щось порекомендувати?


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


2
Це суб'єктивно; визначте «добре». Крім того, хоча ми не маємо суворої політики щодо переліку питань, існує загальна неприязнь . Зверніть увагу також на це та на цю дискусію; ви можете вдосконалити своє запитання, щоб уникнути пояснених там проблем. Якщо ви не знаєте, як покращити своє запитання, можливо, ми можемо допомогти вам у чаті з інформатики ?
Рафаель


@Raphael Спасибі Я використовував у заголовку лише слово «добре», у своєму питанні я вказав, що хочу. Хоча я навмисно не став занадто конкретним, я, принаймні, повинен бути зрозумілим, що моє зосередженість (як натякає) на математичну витонченість та строгість . Я не думаю, що ця відповідь кричить за переліком книг, тому що не повинно бути занадто багато книг, що потрапляють до цієї категорії, - і навіть якщо це так, я не вірю в те, що "збереження чистоти суворого питання - структура відповідей ", що відбувається на кількох сайтах stackexchange тут, але, напевно, не мій дзвінок. Я не впевнений, чи зможу я покращити питання.
k.stm

Крім того, я не вважаю, що "посилання-запит" є відповідним для запитання. Принаймні, не за його описом: Ні я не шукаю паперів, ні мене не цікавить конкретна і вузька проблема. Насправді я досить відкритий щодо того, який вміст висвітлюється, дивіться моє друге речення. Чи добре, якщо я знову видаляю тег? Можливо, я міг би і повинен звузитися, якими алгоритмами я буду задоволений?
k.stm

2
Можливо, ви повинні вивчити денотаційну семантику та перевірку програми.
Yuval Filmus

Відповіді:


7

Хендрік Ленстра написав у 1992 році :

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

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

Рогікопія практичних поглядів, яку ми маємо завдяки Кнуту, Грісу , Степанову та ін, покликана допомогти програмістам більше, ніж математиці, і тому неминуче не вистачає суворості та довгої суб'єктивності.

Тим не менш, праця Степанова широко відома в Кремнієвій долині як одна з найкращих спроб наукового синтезу.

В елементах програмування Олександр Степанов та Пол МакДжонес намагаються закласти абстрактні алгебраїчні основи алгоритмів. Книга починається із визнаних дещо неформальних аксіоматичних визначень сутностей, значень та їх атрибутів, але на 288 сторінках дедуктивно просувається через ряд лем до основ Бібліотеки стандартних шаблонів.

TOC, передмова і зразок главу про перетвореннях і їх орбітах можна знайти тут , і вступна лекція тут .

Новіша та розслаблена книга Степанова, від математики до загального програмування , будується більш дорожньою картою історії математики, будуючи від множення єгиптян до моноїдів, напівгруп та теореми Лагранжа, врешті-решт розробляючи сучасні структури даних з їх ітераторами та алгоритмами, які використовуються в STL.


?!? "в даний час немає точного, елегантного та зручного математичного виведення поняття алгоритму ..." як щодо машини Тьюрінга!
vzn

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

ofc am / знав, що ви цитуєте Lenstra, але ви можете додати цитати або довший
блок-

вважаю , що машини Тьюринга не можуть бути отримані , навпаки , вони утворюють аксіому обчислювальної системи (али тези Черча-Тьюринг ). весь аналіз Ленстраса та КС загалом походить від аксіоми існування ТМ.
vzn

1
@ Рафаель, якщо мама каже, що було б "похвальним підприємством" правильно прибирати мою кімнату, суть її виступу - "не турбуйся про прибирання своєї кімнати". Я вас нерозумію, чи ви мене нерозумієте?

7

Я думаю, що описана вами книга має назву. Він складається в семи томах, лише три з половиною яких опубліковані. Вона називається «Мистецтво комп’ютерного програмування» (TAOCP) і написана Дональдом Кнутом.

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


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

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

1
PS Якщо ви "побоюєтесь, що ця відповідь може підійти", ви повинні сказати це у своєму запитанні, оскільки це один із головних довідників. Повні та задокументовані запитання отримують кращі відповіді.
бабу

Це дійшло до мене лише після того, як я задав питання, коли я був далеко від комп'ютера. Моє зауваження до книги Кнут не повинно сприйматись із пристрастю (саме так, я думаю, ви сприйняли це за коментар "опублікування математично заблудженої версії") - це, мабуть, поруч із богохульством. Його шлях просто не те, що я шукаю. Можливо, там просто немає нічого подібного до того, що я уявляю там…
k.stm

2
@ k.stm Добре, забудь про затьмарення, яке сама по собі є цілою темою. Справа в тому, що я вважаю, що алгоритміка не є (ще?) Математикою. Можливо, ви можете отримати формалізації, але вони, ймовірно, будуть простими кодуваннями, які втрачають речовину, не маючи користі. Це залежить від теми. Це, мабуть, набагато менш справедливо для теорії автоматів, яка має значні алгоритми. Справа в тому, що адекватне виявлення абстрактної математичної природи структур не очевидно. Це питання розуміння, а не формалізації, і це потребує років. Подумайте про це як про фізику
babou
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.