2010-06-29 82 views
2

我想实现广度优先搜索算法但我无法实现,而且我是TCL的新用户,任何人都可以帮助我在tcl中实现此算法。在tcl中实现广度优先搜索

+1

如果你是TCL之后,为什么你标记这个问题'perl'然后? – Zaid 2010-06-29 07:15:50

+0

您使用哪种树或图形实现? – 2010-06-29 08:35:28

+0

删除了perl标签... – 2010-06-29 08:47:20

回答

3

我想我们需要更多的细节,然后才能提供帮助。

那么,我们是在谈论一个图,如果是的话是什么类型?最简单的是一个没有边权重的无向图,但是这种情况?

你有图表的数据结构吗?如果是这样的话?

最后你为什么要重新发明轮子? Tcllib具有执行广度优先搜索的struct :: graph包,请参阅步行命令。你可以使用这个或struct :: graph :: op包中的算法来做你想做的事情。

+0

图中是否有循环可能也是一个问题 – 2010-06-29 08:35:43

+0

我正在尝试为无向图的无边权重,我没有试过包你建议 – Nilesh 2010-06-29 08:41:24

+0

大家好, Thanx那些谁所有回答我的第一个问题。 我已经实现了BFS到达目标节点,同时从图中移动到结束节点我正在存储tcl数组中的所有节点(称为父节点)和它们的出来节点(子节点)。但现在我无法检索两个节点之间的所有路径。 Wating for your answer ...... – Nilesh 2010-07-07 04:58:07

0

如果您正在搜索文件而不是通用对象,请在Tclx包中查找命令for_recursive_glob。下面是一个简单的例子:

package require Tclx 
for_recursive_glob fileName {/path/to/dir1 /to/dir2} {*.txt *.doc} { puts $fileName } 

该文件称for_recursive_glob使用广度优先算法。如果你想提前退出(即找到你要找的),使用“休息”命令退出for循环:

package require Tclx 
for_recursive_glob fileName {/path/to/dir1 /to/dir2} {*.txt *.doc} { 
    puts $fileName 
    if {[string match *myfile*]} { break } 
}