javascript - 多边无向图的循环枚举
问题描述
我正在尝试编写一个使用 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
我需要的周期数是:Cycles = Branches - (Nodes - 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;
笔记:
我不需要所有可能的循环,我只需要在某个循环中使用每一个边缘(分支)。
此外,最终循环可能与示例中的不同。
我很高兴看到任何语言的算法。
解决方案
您可以使用您喜欢的任何算法制作生成树(BFS 有效)。
然后,对于不在树中的每条边,您制作一个包含该边的循环以及从一端到另一端穿过树的路径。
推荐阅读
- c# - Excel - ClosedXML - 应用 SetAutoFilter/AddFilter 后获得可见行的最佳方式?
- jenkins - Jenkins boostrap 在单独的工作中而不是在构建工作中
- node.js - Mocha、Sinon 和 Chai 在回调中测试两个 http 调用
- vba - Statistica 64 - 你如何让宏找到它的文件名?
- python - 如何在安装 conda 包期间而不是在 conda 构建期间运行脚本
- matlab - 如何使用牛顿法求解积分的上限?
- javascript - 如何比较用户角色?
- c# - 如何在新标签 Asp.net 中打开 pdf 文件
- python - 有没有更好的方法来确保变量只包含数字
- c# - 如何根据用户输入生成范围不同的数字