n n!
5 120
8 40320
10 3, 6 · 10
6
13 6, 2 · 10
9
15 1, 3 · 10
12
30 2, 7 · 10
32
Таблица 1.1: Значения функции n!
Чему равна наименьшая возможная длина кольцевого маршрута, проходящего по одному разу через все
города? Иными словами, требуется найти минимально возможное значение суммы
n−1
X
i=1
d
π (i) ,π(i+1)
+ d
π (n),π(1)
, (1.1)
где минимум берется по всем перестановкам π(1), . . . , π(n) чисел 1, . . . , n.
Переборный алгоритм для задачи о коммивояжере просто перебирает все возможные перестановки городов (см.
алгоритм 6 «TSP-перебор»).
При анализе сложности алгоритма 6 «TSP-перебор» видно, что вычисление индивидуальной суммы (1.1) не пред-
ставляет особых трудностей и требует Cn операций, где C-некоторая константа. Проблема состоит в том, что этот
процесс придется повторить слишком много, (n − 1)! раз, что дает общую сложность алгоритма Ω(n!). Некоторые
значения факториала приведены в таблице 1.1.
Видно, что при n = 5 расчет всех вариантов согласно переборному алгоритму может быть произведен вручную.
При n = 8 для его проведения в разумный отрезок времени нужно привлечь программируемый калькулятор, а при
n = 10 — уже более быстродействующую вычислительную технику. Когда число городов доходит до 13, потребуется
суперкомпьютер, а случай n = 15 выходит за пределы возможностей любой современной вычислительной техники.
Число возможных вариантов при n = 30 превышает количество атомов на Земле
3
.
Теперь рассмотрим задачу 4 «Shortest Path», на первый взгляд похожую на Задачу 3 «TSP»:
Задача 4 «Кратчайший путь в графе»
4
Заданы n вершин графа (узлов сети) v
1
, v
2
, . . . , v
n
и положительные целые длины дуг d
ij
≡ d(v
i
, v
j
) между
ними.
Чему равна наименьшая возможная длина пути, ведущего из v
1
в v
k
, для всех k ∈ (2 . . . n)? Иными словами,
чему равно минимально возможное значение суммы
`−1
X
i=1
d
v
σ (i)
, v
σ (i+1)
, (1.2)
где минимум берется по всем числовым последовательностям
σ(1), . . . , σ(`)
(на этот раз не обязательно длины n), в которых σ(1) = 1 и σ(`) = n.
Разумеется, и эту задачу можно решать переборным алгоритмом, аналогичным алгоритму 6 «TSP-перебор», но
интересно, можно ли разработать точный эффективный алгоритм, исключающий (или, по меньшей мере, минимизиру-
ющий) непосредственный перебор вариантов.
Оказывается, в данном случае можно. Здесь важным фактом является то, что если у нас есть кратчайший путь от v
до w, проходящий через вершину y, назовем его (v → w)
∗
, то его первая часть от v до y, (v → y)
∗
, тоже будет кратчай-
шим путем. Действительно, если бы это было не так, т.е. существовал бы путь (v → y)
!
длины меньшей, чем (v → y)
∗
,
то можно было бы улучшить оптимальный путь (v → w)
∗
, заменив в нем (v → y)
∗
на (v → y)
!
. Задачи, с подобными
3
Конечно, разработаны различные методы сокращения перебора, кроме того, переборные задачи допускают эффективное распараллеливание на
многопроцессорную технику или вычисление сетью обычных компьютеров. В частности, в 2001 году, для задачи 3 «TSP» на 15112 городах Германии,
было найдено оптимальное решение на 110 процессорном кластере. Если измерять вычислительное время относительно одного процессора «Compaq
EV6 Alpha 500 МГц», то было потрачено 22.6 лет. См. отчет . Но это не отменяет высказанных соображений
о непрактичности использования экспоненциальных алгоритмов перебора, кроме случаев входных данных ограниченного размера
4
В англоязычной литературе — Shortest Path Problem.
9