在tcl中实现广度优先搜索

时间:2010-06-29 06:22:32

标签: tcl

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

2 个答案:

答案 0 :(得分:3)

我认为在我们提供帮助之前,我们需要更多细节。

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

你是否有图表的数据结构,如果有的话是什么?

最后你为什么要重新发明轮子? Tcllib有struct :: graph包,它实现了广度优先搜索,参见 walk 命令。你可以在struct :: graph :: op包中使用这个或算法来做你想要的。

答案 1 :(得分:0)

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

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

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

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