Scheme 无向图路径的求解算法

Scheme 无向图路径的求解算法,scheme,racket,Scheme,Racket,在无向图中查找路径的简单算法是什么?这个问题的答案取决于您的图表示。典型的算法是Dijkstra算法(请注意,该算法将找到最短路径,但效果很好) 这是一个相当简单的算法来实现,在路径查找算法中可能是最直观的。查找路径是否存在的最简单方法是实现。如果您在Scheme中做过其他类型的递归编程,那么深度优先搜索将非常自然。其思想是,对于每个节点,如果它是您完成的目的地;否则你会在它的每个孩子身上复发 唯一需要注意的是,您需要跟踪在遍历过程中已经访问过的节点,以便避免两次访问同一节点;否则,如果你有一

在无向图中查找路径的简单算法是什么?

这个问题的答案取决于您的图表示。典型的算法是Dijkstra算法(请注意,该算法将找到最短路径,但效果很好)


这是一个相当简单的算法来实现,在路径查找算法中可能是最直观的。

查找路径是否存在的最简单方法是实现。如果您在Scheme中做过其他类型的递归编程,那么深度优先搜索将非常自然。其思想是,对于每个节点,如果它是您完成的目的地;否则你会在它的每个孩子身上复发


唯一需要注意的是,您需要跟踪在遍历过程中已经访问过的节点,以便避免两次访问同一节点;否则,如果你有一个图a B C,并且你正在检查a是否连接到C,你可能会无限循环从a到B,然后B到a,然后a到B,一直如此。

如果有路径或没有路径,我必须编写的函数应该返回true或false。此外,该图被定义为is_path(3((12)(23))13),其中3是顶点数,((12)(23))是边。但是,顶点的数量是可选的。我看了Dijkstra的算法,但是我仍然完全迷路了。Dijkstra算法的本质是在图的边之间使用一种传递闭包。例如,在第一次迭代中,您将看到,如果a->b和b->c,然后a->c,您将继续此过程,基本上,直到您发现图形中的两个节点之间存在路径,或者您尝试所有不同的可能方式在边之间移动,发现没有可能的路径。bruce向您介绍了Scheme中的一个实现,它实现了这一点。在过去一两天里,有一堆与图相关的Scheme问题进入堆栈溢出。示例:。这是一个家庭作业问题吗?是的,但另一个不是我的postStrong推荐:参见:,以及