首页 文章

如何在使用纯功能深度优先搜索时防止循环

提问于
浏览
0

我有一个图表,实现为连接任意节点的边列表,下面定义了数据类型 .

type edge = int * int;;
type graph = edge list;;

如何在避免陷入循环的同时执行纯功能深度优先搜索?我不太清楚如何跟踪所有访问过的节点,同时保持纯粹的功能 . 答案可能是微不足道的,我不是出于某种原因在概念上 grab 了 .

1 回答

  • 1

    搜索功能具有跟踪被访问节点的参数 . 在FP中,其中一个见解是你可以越来越深入地调用(使用尾调用) . 因此,您可以在所有调用中传递参数,随时添加新节点 .

    另一个参数可能是您计划稍后访问的节点 . 对于DFS,这将像堆栈一样工作 .

相关问题