Как узнать, есть ли связь между двумя произвольными вершинами в графе направлений?

Я хотел бы знать, какие классы и функции в библиотеке Quickgraph (C#) мне следует использовать, чтобы выяснить, существует ли связь между двумя произвольными вершинами в графе направленности?

Я новичок в программировании, особенно в программировании алгоритмов, поэтому я прошу вас, можете ли вы предоставить мне пример кода для упомянутой проблемы, в основном потому, что в библиотеке Quickgraph нет много учебных пособий для начинающих.

График спецификации:

  • направленный
  • Не взвешенный (расстояние не важно, просто связь между вершинами / ребрами)
  • График является динамическим, поэтому вершины / ребра можно добавлять / удалять или редактировать.

1 ответ

Решение

Хм, я не проверял это, но основные DFS/BFS должны сделать так:

var tryGetPaths = _graph.TreeBreadthFirstSearch(__source__);
IEnumerable<Edge<YourItemType>> path;
if (tryGetPaths(__target__, out path))
{
    // we have connectivity!
}

Тот проверяет, есть ли какая-либо связь от источника до цели. Вы можете запустить эту проверку и наоборот.

Другие вопросы по тегам