Я пытаюсь написать программу, использующую Electrical Mesh Analasys. Итак, у меня есть узлы схемы [A, B, C, D] и ветви, связывающие узлы [0,1,2,3,4,5,6,7,8].
Как найти кратчайшие циклы в неориентированном графе с несколькими ребрами, как в примере ниже?
Изображение графика (4 узла, 9 ребер / ветвей):
Циклы:
0-1-0
5-6-5
6-8-6
1-4-2-1
2-7-3-2
4-7-5-4
Количество циклов, которое мне нужно: Циклы = Ветви - (Узлы - 1), в этом случае мне нужно 6 циклов.
У меня эти данные хранятся в таких массивах:
realNodes = [A,B,C,D];
groupBranches = [[0,1,4,5,6,8], [3,5,6,7,8], [0,1,2,3], [2,4,7]];
// groupArray[0] stores the branch numbers connected to A;
// groupArray[1] stores the branch numbers connected to B;
// groupArray[2] stores the branch numbers connected to C;
// groupArray[3] stores the branch numbers connected to D;
Примечания:
Мне не нужны все возможные циклы, мне просто нужно использовать каждое ребро (ветвь) в каком-то цикле.
Также финальные циклы могут отличаться от представленных в примере.
Буду рад увидеть алгоритм на любом языке.