Мне присвоен Directed Graph, который не взвешен. Если вы путешествуете только с направлением ребер, если мне задана вершина, я хочу знать, доступна ли любая другая вершина. Если график равен Complete Graph, это очевидно. Меня интересует случай, когда график неполный.Поиск максимума прямого графика
Что касается реализации, я сохраняю каждое соединение в multimap
. multimap
Ключ кромки ключа multimap
Значение - краевая головка. Так сказать, что у меня есть следующие пары:
- (1, 2)
- (2, 3)
- (1, 4)
В этом графике, если 1 была данная узла, каждый узел может быть прямо или косвенно достигнут. Если бы другая пара была добавлена к multimap
: (5, 3) 5 не было бы прямо или косвенно достижимо от 1, и ни один узел, кроме 3, не был бы доступен с 5, поэтому никакой узел на этом графике не смог бы достичь всех других узлы.
Мой вопрос заключается в следующем: если все, что я делаю с этим графом, проверяет, может ли один узел достигать всех других узлов, следует добавить ребра к multimap
, чтобы сделать все косвенные соединения прямыми, а затем проверить, подключен к данному узлу? Или есть лучший способ сделать это?
Но в ответ на вопрос, для меня нет какой-либо функции обхода. Мне нужно найти все косвенно связанные узлы и посмотреть, все ли там? –
@JonathanMee: Если вы абсолютно уверены, что только делаете это со своим списком смежности, используйте его, чтобы решить вашу проблему с достижением, тогда это прекрасно, чтобы смешиваться. На самом деле, я бы не назвал это списком смежности в этот момент, а список достижимости, который инициализируется списком смежности. – AndyG
@JonathanMee: вам нужно будет выполнить DFS в каждой вершине вашего графика и сохранить достигнутые узлы. Возможно, вы пытаетесь меморировать результаты предыдущих поисков DFS с помощью вашей мультимары, чтобы ускорить работу? Я думаю, что худшая временная сложность будет такой же, как просто выполнение DFS на каждой вершине отдельно, а не кэширование результата. (Но в полных графиках или близких к полному графике мемонирование может сэкономить много времени обработки, так как многие новые вершины, которые вы проверили, уже имеют список смежности размера V) – AndyG