怎样判断有向图里的相同的环
首先去掉开始或者结尾的节点编号,使得每个节点只出现一次:例如你的例子就是,0-2, 1-0-2每个环找编号最小的点作为起点,前后两个节点(如果有)选择小的作为第二个节点,这样每个环就得到一致的编号了(代表环):例如 0-2 表示了0-2,2-0;0-1-2 表示了:0-1-2,0-2-1, 1-0-2, 1-2-0, 2-0-1,2-1-0再下面的细节就看你实际问题要干什么了。如果你当前的算法可以给出所有的环,那就当且仅当这个环是代表环的时候输出。如果你的目的是输出所有不同的环,可以用上面的思路优化你的算法:依次选取每个节点作为起点寻找环的时候只考虑编号大于起点的点选择第二个点之后,除了考虑连接回起点作为环,遍历和起点相邻其他编号大于第二点的点作为终点,然后找到第二点到终点的各种路径这样找到的环就一定是不同的了,也就不需要判重了,效率自然也就是最高的了。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义