Main menu
Дискретная математика

Дискретная математика (105)

Марковские процессы принятия решений (MDP): Фундамент обучения с подкреплением

Обычные Цепи Маркова описывают системы, которые изменяются сами по себе, случайным образом, словно погода. Но как математически описать робота, который перемещается по лабиринту? Робот сам влияет на свое будущее: он принимает решения, тратит энергию и получает вознаграждение за правильные шаги. В дискретной математике и теории оптимального управления эта задача формализуется через Марковские процессы принятия решений (Markov Decision Processes, MDP).

Подробнее

Консистентное хеширование: Математика распределенных баз данных

Когда веб-сервис вырастает до миллионов пользователей, одна база данных или один кэш-сервер (например, Memcached) перестает справляться с нагрузкой. Данные нужно шардировать — распределить по десяткам серверов. Как алгоритмически определить, на какой именно сервер положить фотографию пользователя? Стандартный подход с остатком от деления ломается при изменении архитектуры. Эту проблему в 1997 году решило консистентное хеширование (Consistent Hashing).

Подробнее

Теория сложности общения: Как алгоритмы экономят сетевой трафик

При проектировании распределенных систем часто возникает ситуация, когда данные физически разделены между двумя компьютерами, и им необходимо совместно вычислить какую-то функцию. Пересылка всех данных целиком по сети слишком дорога или невозможна из-за узкого канала. В 1979 году Эндрю Яо создал новый раздел дискретной математики — коммуникационную сложность (Communication Complexity), который изучает, какое минимальное количество битов необходимо передать для решения задачи.

Подробнее

Дискретное преобразование Фурье (FFT): Математика медиа и связи

Когда вы разговариваете по сотовому телефону, слушаете MP3 музыку или отправляете JPEG фотографию, ваши устройства непрерывно выполняют одну из важнейших математических операций в истории человечества — Дискретное преобразование Фурье (DFT). Изначально Фурье-анализ применялся к непрерывным физическим волнам, но дискретная математика адаптировала его для работы с цифровыми массивами чисел, породив цифровую обработку сигналов (DSP).

Подробнее

Квантовые вычисления и алгоритм Шора: Конец классической криптографии

Современная цифровая экономика держится на одном математическом допущении: классические компьютеры не могут быстро раскладывать гигантские числа на простые множители (факторизация) и не могут вычислять дискретные логарифмы. На этом базируются RSA, ECC и Диффи-Хеллман. Но в 1994 году американский математик Питер Шор создал алгоритм, который потряс основы мировой безопасности. Этот алгоритм предназначен для компьютеров совершенно новой архитектуры — квантовых.

Подробнее

Теорема Райса: Почему антивирусы ошибаются, а компиляторы пропускают баги

Каждый разработчик мечтает о существовании идеального статического анализатора кода — волшебной программы, которая просканирует исходный код проекта и со 100% точностью скажет: "Здесь программа упадет с ошибкой деления на ноль", или "Эта функция никогда не вернет отрицательное число". К сожалению, дискретная математика и теория вычислимости ставят на этих мечтах жирный крест. Имя этому приговору — Теорема Райса.

Подробнее

Задача о выполнимости (SAT): Абсолютный фундамент теории сложности

Среди тысяч алгоритмических задач существует одна, которая носит титул "самой важной задачи теоретической информатики". Это задача о выполнимости булевых формул, сокращенно SAT (от англ. Satisfiability). Она стала первой в истории задачей, для которой была математически доказана принадлежность к классу NP-полных задач, и именно к ней сводятся все доказательства сложности в дискретной математике.

Подробнее

Сортировки за линейное время: Как преодолеть предел O(N log N)

В любом классическом учебнике по алгоритмам написано, что лучшая возможная сложность для сортировки массива — это O(N log N). Эту асимптотику выдают быстрая сортировка (QuickSort) и сортировка слиянием (MergeSort). В дискретной математике существует строгое доказательство того, что сортировки, основанные на сравнении элементов, физически не могут работать быстрее. Но что, если мы откажемся от операций сравнения? Здесь на сцену выходят алгоритмы сортировки за линейное время O(N).

Подробнее

Криптография на эллиптических кривых (ECC): Математика нового века

На протяжении десятилетий алгоритм RSA обеспечивал безопасность интернета. Его надежность базируется на сложности факторизации больших целых чисел. Но с ростом вычислительных мощностей математикам приходилось постоянно увеличивать размер RSA-ключей. Сегодня безопасный ключ RSA должен иметь длину 2048 или даже 3072 бита. Такие ключи требуют много памяти и сильно замедляют процессоры смартфонов и IoT-устройств. Спасение пришло из абстрактной алгебраической геометрии — криптография на эллиптических кривых (ECC).

Подробнее

Алгоритм Кнута-Морриса-Пратта: Быстрый поиск в тексте

Задача поиска слова (паттерна) внутри большого текста (строки) — одна из самых частых в компьютерных науках. Наивный алгоритм, который мы бы написали интуитивно, прикладывает паттерн к началу текста, сравнивает символы, и при несовпадении сдвигает паттерн ровно на одну позицию вправо, начиная проверку с нуля. В худшем случае (например, поиск паттерна "ААААВ" в строке "АААААААААВ") этот метод работает за время O(N*M), что неприемлемо. Алгоритм КМП решает эту проблему за строго линейное время O(N+M).

Подробнее
Subscribe to this RSS feed

Соц. сети