广度优先搜索(BFS)仅使用可用功能列表

时间:2015-11-09 15:52:04

标签: algorithm breadth-first-search tree-traversal undirected-graph

我的问题主要与算法有关,而不是特定于特定编程语言

假设我们有一个由列表列表表示的图形,其中每个内部列表代表两个节点和一个编号的边缘,Is可以实现一个递归BFS(广度优先搜索)函数以下12项功能?我们的bfs递归函数应该有5个参数:

  • 要搜索的图表
  • 要查找的元素
  • 搜索队列
  • 访问过的节点列表
  • 我们正在关注的当前元素

图表示例:

$ php app/console debug:router

在以下函数中,我将图中的每个列表称为图元素

这是功能:

    e1
   / \
  e2  e3
  | \  |
  e5  e4

((e1 1 e2) (e1 2 e3) (e2 3 e4) (e3 4 e4) (e2 5 e5))

这就是我实现递归BFS函数的方法:

  • 我的递归调用实际上有两个基本情况:当队列为空时(这意味着我们无法访问我们正在搜索的元素),并且当要从队列中弹出的元素是我们的元素时正在寻找
  • 在每次调用中,我定义了一个函数来查找当前节点的路径(找到我们可以去的节点),然后我将这些节点推送到队列
  • 然后我将当前节点推送到访问列表并重复

我的问题是我已经定义了两个函数(一个用于查找路径,另一个用于将这些路径的目标节点推送到搜索队列),这些函数不在上面的函数列表中。

我想知道是否可以使用 ONLY 这些函数来执行递归BFS?

PS:我们对图表的列表应该代表一个无向图,但我不确定这会如何改变问题

真心感谢任何形式的帮助......

0 个答案:

没有答案