Обновление 2011-12-28: вот сообщение в блоге с менее расплывчатым описанием проблемы, которую я пытался решить, моей работы над ней и моего текущего решения: Наблюдение за каждой игрой команды MLB
Я пытаюсь решить какую-то странную задачу по поиску пути. У меня ациклический направленный граф, и каждое ребро имеет значение расстояния. И я хочу найти кратчайший путь. Все просто, правда? Что ж, есть несколько причин, по которым я не могу просто использовать Dijkstra или A *.
Это упрощенный пример. В моем полном наборе данных фактически есть три разных атрибута для каждого узла, которые все должны быть уникальными, и у меня есть 2k + узлов, каждый из которых в среднем имеет 35 исходящих ребер. Поскольку получение идеального «кратчайшего пути» может происходить по экспоненциальному или факториальному времени, исчерпывающий поиск действительно не вариант. Что я действительно ищу, так это некоторое приближение «хорошего пути», которое удовлетворяет критерию пункта 3.
Может ли кто-нибудь указать мне на алгоритм, который я мог бы использовать (даже модифицированный)?
Некоторые статистические данные по моему полному набору данных: