我現在已經多次編碼了各種圖搜索(A *,DFS,BFS等)算法。每一次,唯一真正的區別就是我正在搜索的實際搜索狀態,以及如何從現有搜索狀態生成新狀態。C#通用圖搜索框架
我現在正面臨另一個搜索繁重的項目,並希望避免再次編碼和調試一般搜索算法。如果我可以定義一個搜索狀態類,包括用於生成連續狀態的信息,啓發式代價等,並將其插入某種現有的搜索框架中,這對我來說可以完成所有繁重的工作,那將非常好。我知道這些算法並不是特別難編碼,但總是有足夠的技巧讓它煩人。
這樣的事情是否存在?我找不到任何東西。
我現在已經多次編碼了各種圖搜索(A *,DFS,BFS等)算法。每一次,唯一真正的區別就是我正在搜索的實際搜索狀態,以及如何從現有搜索狀態生成新狀態。C#通用圖搜索框架
我現在正面臨另一個搜索繁重的項目,並希望避免再次編碼和調試一般搜索算法。如果我可以定義一個搜索狀態類,包括用於生成連續狀態的信息,啓發式代價等,並將其插入某種現有的搜索框架中,這對我來說可以完成所有繁重的工作,那將非常好。我知道這些算法並不是特別難編碼,但總是有足夠的技巧讓它煩人。
這樣的事情是否存在?我找不到任何東西。
也許QuickGraph會感興趣。
QuickGraph提供了通用 定向/無向圖 數據結構和算法的.Net 2.0以上。 QuickGraph帶有算法,如深度第一SEACH, 呼吸第一搜索,A *搜索, 最短路徑,K-最短路徑, 最大流量,最小生成樹, 至少共同祖先等
這聽起來像一個完美的使用情況下,爲任何一個Delegate或Lambda Expression.
使用Lambda表達式爲樹的遍歷 - C#
http://blog.aggregatedintelligence.com/2010/05/using-lambda-expressions-for-tree.html
當然,它止跌要想讓你的現有解決方案之一變得不那麼困難?所有你需要的尋路算法都是一個開始狀態,一個結束狀態和一個函數,它需要一個狀態並返回(帶有權重)所有可能的下一個狀態。 – 2010-12-02 03:22:19
我還沒有在c#中的解決方案。我現在大部分都是來自大學的java或c實現。翻譯有點難以勝任。 – captncraig 2010-12-02 03:50:53