我正在尝试获取覆盖所有边缘并仅遍历一次的图形路径。
这意味着只会有两个“端点” - 它们将具有奇数数量的连接节点。这些端点要么具有一个连接边,要么是循环的一部分并具有3个连接点。
因此,在下面的简单情况中,我需要按照以下顺序遍历节点1-2-3-4-5(或5-4-3-2-1): 在下面更加复杂的情况下,路径将是1-2-3-4-2(或1-2-4-3-2): 以下也是一个有效的图形,有两个端点:1-2-4-3-2-5 我曾试图寻找一个解决这个问题的算法,并认为它是“中国邮递员问题”,但基于 https://github.com/rkistner/chinese-postman/blob/master/postman.py 的代码实现并没有提供我期望的结果。
欧拉路径看起来几乎符合要求,但是 networkx 实现 仅适用于封闭(环形)网络。
我还看了一下 哈密顿路径 - 并尝试了 networkx 算法 - 但不支持该图类型。
理想情况下,我希望使用Python和networkx来实现这一点,可能已经有一个简单的解决方案是库的一部分,但我似乎找不到它。
因此,在下面的简单情况中,我需要按照以下顺序遍历节点1-2-3-4-5(或5-4-3-2-1): 在下面更加复杂的情况下,路径将是1-2-3-4-2(或1-2-4-3-2): 以下也是一个有效的图形,有两个端点:1-2-4-3-2-5 我曾试图寻找一个解决这个问题的算法,并认为它是“中国邮递员问题”,但基于 https://github.com/rkistner/chinese-postman/blob/master/postman.py 的代码实现并没有提供我期望的结果。
欧拉路径看起来几乎符合要求,但是 networkx 实现 仅适用于封闭(环形)网络。
我还看了一下 哈密顿路径 - 并尝试了 networkx 算法 - 但不支持该图类型。
理想情况下,我希望使用Python和networkx来实现这一点,可能已经有一个简单的解决方案是库的一部分,但我似乎找不到它。
eulerian_path()
添加到了networkx
中。 - iacob