我正在尝试找到此问题的名称,但实际上并不知道如何搜索它。问题如下:
在图表中找到从顶点A开始的路径 在两个方向上每个边缘正好两次通过所有边缘(一个 时间在一个方向,第二次在相反的方向)并最终进入 顶点A再次作为最后一步。
如果有人给我一些关于如何调用此问题的提示(因为它听起来像一个众所周知的人)并且可能是解决方案的一些方向,我会很高兴。
答案 0 :(得分:4)
如果您只想在每个方向上遍历连接图的每个边,那么您可以使用深度优先搜索:
DFS完成后,您将在每个方向上遍历每个边缘一次。
您可以同样使用广度优先搜索而不是深度优先搜索。
如果你想访问一个循环中的所有边缘(在路径中间没有回溯),那么你正在寻找欧拉电路/巡回演出并且可以使用Hierholzer的1873算法:
- 选择任何起始顶点v,并沿着该顶点的边缘跟踪,直到返回到v。不可能卡在v以外的任何顶点,因为所有顶点的均匀度确保了进入另一个顶点w必须有一个未使用的边缘留下w。以这种方式形成的游览是封闭游览,但可能无法覆盖初始图形的所有顶点和边缘。
- 只要存在属于当前巡视的顶点u但其相邻边不是巡视的一部分,则从u开始另一条路径,跟随未使用的边,直到返回到u,并加入以这种方式形成的巡回到上一次旅行。