Main menu

Динамическое программирование: Оптимизация через перекрытие подзадач

Несмотря на пугающее название (слово «программирование» здесь означает «табличное планирование», а не написание кода), динамическое программирование (ДП) — это один из самых элегантных математических методов оптимизации алгоритмов. Разработанный Ричардом Беллманом в 1950-х годах, этот метод позволяет превратить задачи с экспоненциальной вычислительной сложностью (которые компьютер не решит и за миллион лет) в задачи с полиномиальной сложностью, решаемые за доли секунды.

Подробнее

Логика предикатов первого порядка: Кванторы и формализация языка

Исчисление высказываний (булева алгебра) имеет существенный недостаток: оно работает только с простыми, неделимыми утверждениями. Оно не способно выразить структуру внутри предложения или проанализировать свойства объектов. Например, из утверждений «Все люди смертны» и «Сократ — человек» булева логика не может вывести, что «Сократ смертен». Эту фундаментальную проблему дискретной математики решает логика предикатов (исчисление предикатов) первого порядка.

Подробнее

Хеш-функции и коллизии: Математика быстрого поиска и безопасности

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

Подробнее

Соц. сети