Задать вопрос
ttas
@ttas

Aлгоритм нахождения подграфов?

Существует неориентированный граф на миллион вершин и 100 миллионов ребер. У каждого ребра есть свой вес. Задача следующая. Заданы две вершины. Необходимо найти все пути между двумя вершинами, состоящие из 4 ребер, причем пути должны быть отсортированы в порядке увеличения/уменьшения общего веса пути.


Так же, буду благодарен ссылке, так как уже выбился из сил искать толковую информацию по графам. Спасибо.
  • Вопрос задан
  • 3559 просмотров
Подписаться 2 Оценить 2 комментария
Ответ пользователя 3d6 К ответам на вопрос (3)
3d6
@3d6
Если все симметрично, то наиболее разумный вариант — поиск в ширину (это то, что называют волной) с 2х сторон, по 2 шага с каждой. Итого будет два списка по 100^2 вершин, в котором нужно найти пересечения, и их отсортировать. С учетом того, что полученных путей почти всегда будет менее 10000, то наверное нет смысла париться, можно смело запихнуть все в кучу и пройтись быстрой сортировкой (хотя зависит от системы, если это место будет занимать значительную часть ресурсов — то наверняка можно придумать что получше).

И — такой вариант примерно в 100^2 / 2 раз быстрее поиска из одной вершины. Чуть-чуть не подумав, вычислительно простую задачу можно легко превратить в ресурсоемкого монстра :)
Ответ написан