// углублённый уровень · комбинаторная оптимизация

Задача
коммивояжёра

Классика комбинаторной оптимизации: бродячий торговец обходит города по кратчайшему маршруту. Сравни жадный алгоритм с точным решением Хелда-Карпа — в реальном времени на графе.

2 алгоритма
NP-hard
live анимация

В чём суть

Торговец должен посетить несколько городов ровно по одному разу и вернуться домой. Цель — сделать это по кратчайшему пути.

Математически: дано облако точек. Нужно найти гамильтонов цикл минимального веса в полном графе.
Сложность

NP-hard: почему нельзя просто перебрать

С добавлением одного города количество маршрутов растёт факториально. Для 20 городов полный перебор на обычном компьютере займёт годы.

10 городов: 180 000+ путей
15 городов: 43 000 000 000+ путей
Зачем это знать

Где встречается

Логистика, проектирование печатных плат, секвенирование ДНК, маршрутизация дронов. Любая задача, где нужно оптимально обойти набор точек.

Олимпиады · ДВИ · Курсы алгоритмов
Быстро, но неточно

Жадный алгоритм

Метод «ближайшего соседа»: из текущего города идём в тот, который ближе всего прямо сейчас. Работает мгновенно, но часто даёт не лучший маршрут.

O(n²) — мгновенно даже для 1000 городов
Точно, но медленно

Хелд-Карп (динамика)

Динамическое программирование по подмножествам. Гарантирует оптимальный результат, но работает только для малого числа городов.

O(2ⁿ · n²) — до ~20 городов на ПК

Тренажёр

Сгенерируй города, запусти оба алгоритма и сравни длину маршрутов. Синий путь — жадный, зелёный — оптимальный.

Оптимизация маршрута

Скорость:
Жадный
Оптимум
Текущая
0
Укажи число городов и нажми «Обновить карту»

Связанные темы

Олимпиадная математика — это не «для гениев»

Это набор конкретных идей и алгоритмов. На первом уроке разберём задачу из твоей олимпиады — покажу, как подходить к нестандартным задачам системно.

Записаться на урок
Первый урок — бесплатно, без обязательств
Прокрутить вверх