我正在尋找一個大概的想法(也許一些代碼示例或至少是僞代碼) 現在,這是從某人給我的問題,或者更確切地說給我看,不用爲了解決這個問題,但我確實大部分的問題,無論如何,說我遇到的問題是這樣的:一般的想法,也許在圖上的例子
比方說,你有向加權圖與以下節點:
AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7
和問題是: 從C到C有多少個不同的路由,距離小於x。 (比如說10,20,30,40) 不同旅行的答案是:CDC,CEBC,CEBCDC,CDCEBC,CDEBC,CEBCEBC,CEBCEBCEBC。
我遇到的主要問題是,當我做DFS或BFS時,我的實現首先選擇節點並將其標記爲已訪問,因此我只能找到2個CDC和CEBC路徑,然後我的算法退出。如果我沒有將它標記爲訪問,那麼在下一次迭代(或遞歸調用)時,它將選擇相同的節點而不是下一個可用的路由,所以我必須始終將它們標記爲已訪問,但通過這樣做我怎麼能夠CEBCEBCEBC,這在節點之間非常複雜。
我已經看過所有不同的算法書,我在家裏,雖然每個算法都描述瞭如何做DFS,BFS和找到最短路徑(所有好的stufF),但沒有顯示如何無限循環迭代並僅停止當達到某個圖的權重或達到某個頂點次數時。
CDCDCDC(或類似的)不是一個有效的解決方案嗎? – Mikeb 2009-09-17 20:44:18
當然,如果它沒有超過預定的權重限制,那麼在你的例子中,限制必須是72 – Tom 2009-09-17 20:50:37
澄清:這是否與代表節點的數據的可變性有關?你是否考慮過使用不可變表示的遞歸算法(比如你可以使用函數式編程)? – Joe 2009-09-17 20:56:35