检查图中的边

Check edges in a graph

所以给定一个图,它有一个从顶点 S 到 E 的循环,因为它经过每个顶点然后结束于 E。我这里的目标是删除所有额外的边,以便只有一条从 S 到 E 的路径。为了帮助我解决这个问题,我有一个名为 check(node) 的函数,我没有给出它的代码,但它 returns True 或 False 如果仍然存在从 S 到 E 的路径,以便仅访问所有节点一次,直到我们在 E 结束。

示例:

计划是删除从顶点 a 到 b 的一条边,然后 运行 在变异图上检查(节点)并查看它是否仍然 returns True 所以我们知道它可以安全删除那条边,如果它 returns False 然后把它加回去。对每条边都这样做,这样只剩下需要的边,但是我不知道如何遍历边。

我将图表存储在字典中

通常,解决此类算法问题的方法是首先弄清楚可以使用哪些算法工具。大多数基本问题都可以用现有算法解决。你的第一个 objective 是看看你是否可以以不需要修改算法的方式修改问题集(即给定的图),因为修改算法会给评估带来困难 Big-O 的问题。如果无法以任何方式修改图表以使 运行 宁黑盒算法变得容易,那么您修改算法。不得已想出自己的算法来解决问题。

如果我的算法记忆是正确的,简而言之这就是旅行商问题。如果我正确理解你的问题,你想要访问每个节点的最短路径。您甚至不需要修改给定的图形即可使用该算法。理论上它应该能找到你想要的路径。只有在算法具有 运行 之后,您才需要将图缩小到所需的状态。所以我建议找到一些方法来根据您的规范实施 TSP,并删除所有不属于解决方案的边缘。

Here 是 GeeksForGeeks 的一些示例代码,可以帮助您入门