Решаем задачу выбора маршрута в графе, но... Техническими средствами с применением современных технологий. Итак - постановка задачи: есть X городов, соединенных автодорогами, необходимо найти оптимальный маршрут.
Предлагаемое решение: подымаем сеть следующей конфигурации - для каждого города мы ставим Linux-раутер. Каждая дорога, соединяющая город с городом, представляется "кроссовым" шнурком, соединящим два соответствующих компа (это такое представление физической модели).
Затем поднимаем на всех хостах зебру со следующей конфигурацией OSPF:
В качестве bandwidth определяем равным числу полос на соответствующей дороге (при этом если дорога, например, имеет 3 полосы в одну сторону и 2 в другую, то полоса на одном раутере ставится в 300Кбит/с, на другом в 200Кбит/с).
В качестве cost (стоимости) мы устанавливаем следующее значение: протяженность_дороги / 100 * расход_топлива * стоимость_топлива + количество_постов_ГАИ * средний_гайцовый_побор_на_посту
После этого пускаем зёбры в работу.
Чтобы найти оптимальный путь из города A в город Б, нам достаточно зайти на раутер, сопоставленый городу Б и запустить traceroute на раутер, сопоставленый городу Б!
Предположим, что в город Г "закрыли" в связи с приездом Путина (ну или этого юсовского президента). Тогда мы отключаем раутер, соответствующий этому городу, дожидаемся схождения таблиц - и вуаля! Можем получать новый оптимальный маршрут с учетеом изменившихся условий!
Ну что, какова мысль?