Как доказать, что заданный алгоритм делает то, что он должен делать? Ключевые идеи индукции и инвариантности Стандартные методы проектирования: жадные алгоритмы, динамическое программирование и парадигма "разделяй и властвуй" Математическая основа алгоритмов Расширенные алгоритмы Задания с предельными сроками Онлайновые алгоритмы Шифрование с публичным ключом Решение оптимизационных задач Задача данной книги проста: разобрать "идеи", лежащие в основе программ, и показать, как доказывать их правильность. Как математически доказать, что заданный алгоритм делает то, что он должен делать? И почему это так важно? Доказывается правильность классических алгоритмов: целочисленного деления, алгоритм Евклида, ранжирования, др. Помимо традиционных алгоритмов, таких как жадные алгоритмы, алгоритмы динамического программирования и алгоритмы "разделяй и властвуй", книга исследует также рандомизированные и онлайновые алгоритмы. Первые стали повсеместными из-за появления криптографии, а вторые необходимы во многих областях, начиная с операционных систем и заканчивая фондовым рынком. Книга усеяна задачами. Большинство задач теоретические, но многие требуют реализации алгоритма; для таких задач используется язык программирования Python 3. Несмотря на свою краткость, издание является математически строгим. Желательно предварительное знакомство с дискретной математикой. Издание предназначено для студентов вузов, специалистов в области информатики и математики, а также широкого круга программистов и разработчиков.

Fatal error: Uncaught Error: Call to a member function fetch_row() on false in /home/user/web/тумба.онлайн/private/versions/ver_5/pages/books_single.php:285 Stack trace: #0 /home/user/web/тумба.онлайн/private/versions/ver_5.php(577): include() #1 /home/user/web/тумба.онлайн/public_html/index.php(200): include('...') #2 {main} thrown in /home/user/web/тумба.онлайн/private/versions/ver_5/pages/books_single.php on line 285