2010-06-29 44 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 } 
}