@beduin01

Как обойти граф?

У меня есть граф вида https://jsfiddle.net/0gf3mj6L/
Мне нужно удалить все узлы и оставить только связь между Company 0 и Company 6. Чтобы получилось вот так:

jpI4M.png

Как это сделать? Может есть какие-то готовые библиотеки чтобы решение не писать самостоятельно?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
@alexalexes
Найдите путь по алгоритму Дейкстры между двумя интересуемыми вершинами.
Все вершины и дуги, которые не входят в этот путь - зачистить.
Ответ написан
Комментировать
trapwalker
@trapwalker
Программист, энтузиаст
Если у вас граф ацикличный (ну то есть без циклов совсем), то вам подойдёт следующий алгоритм (назовём его "метод эррозии"):
1. Удаляем из графа все узлы (кроме заданных в условии), у которых только одна связь.
2. Повторяем П.1. пока есть что удалять.
3. PROFIT!!! У вас в графе остался только искомый путь.

Можно как предложили выше:
1. Начинаем от стартового узла А. Окрашиваем его цветом i=0.
2. Окрашиваем всех неокрашенных соседей узлов цвета i цветом i + 1, пока не покрасим целевой узел B (это теперь текущий узел x=B), тогда останавливаем раскраску.
3. От текущего узла x (покрашенного цветом i) переходим к его соседу с цветом i-1 запоминая значения x в списке L пока i>0.
4. PROFIT!!! У нас в L все узлы пути от B к A. Остальные узлы можно удалить из графа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час
21 нояб. 2024, в 21:42
100000 руб./за проект