2013-11-13 5 views
2

Я столкнулся с этой интересной проблемой подсчета числа циклов в орграфе.подсчет числа циклов в орграфе

Для обнаружения цикла в графе мы можем использовать DFS, но для определения количества циклов DFS не будет иметь большого смысла, поскольку некоторые грани будут распространены в некоторых циклах.

Я пытаюсь выяснить, может ли здесь охватывать дерево.

Любые мысли?

+0

Как вы определяете количество циклов? Каждый возможный маршрут от узла к себе? Или вы считаете, что ярлыки по-разному? И, кстати, с «diagraph», вы имеете в виду ориентированный граф? – pvoosten

+1

Если вы определяете «абзац» как «направленный ациклический граф», который, как представляется, является общей «аббревиатурой», тогда по определению есть 0 циклов. Если это просто орфография «орграфа» (что означает «направленный график»), как было предложено @pvoosten, тогда это другое дело ... – twalberg

+0

Я имел в виду только орграф. по циклу Я имею в виду простой цикл, который может или не может разделять края. для простоты можно предположить, что они не разделяют никаких ребер, просто вершин. – vindyz

ответ

2

Ниже приведен алгоритм, чтобы получить структуру, чтобы помочь решить проблему подсчета цикла:

  • Для каждого узла, вывести полустепень захода (количество входящих ребер) и полустепень.
  • Удалите все узлы с нулевым индексом. Они не являются частью цикла. От их преемников вычтите 1 из степени. От своих предшественников вычитайте 1 из выносливости.
  • Удалите все узлы с нулевым значением, так как они также не могут быть частью цикла. Как и раньше, вычитайте отступы и отклонения от соседних узлов соответственно.
  • Повторите два предыдущих шага до тех пор, пока не будет больше узлов с не зависящими от нуля или нулевыми значениями. Теперь все остальные узлы являются частью цикла.
  • Все узлы с независимым значением = 1 или outdegree = 1 могут быть объединены со своим предшественником или преемником соответственно. Узлы могут быть объединены в список, потому что они будут на всех одинаковых циклах.

Оставшийся график содержит только узлы с не зависящими от него значениями и не более чем 2. Он содержит ссылки на узлы исходного графа.

  • Теперь найдите сильно связанные компоненты на оставшемся графике.
    • Уникальные узлы найдены для циклов, которые могут быть пройдены только одним возможным способом, то есть одним циклом.
    • Подграфы с несколькими (не менее 3) объединенными узлами означают более сложные структуры циклов. Циклы могут быть подсчитаны в соответствии с соответствующим определением количества циклов. Подсчет может выполняться с возвратом.
Смежные вопросы