評價: 0 回應: 7 閱覽: 191
置頂

不是普通的8-puzzle問題

各位板友好

誠如標題所述,本人想要解一個題目

經過各種關鍵字找尋後,感覺跟8-puzzle很像

不過,題目不只是單純的「移動方塊成為指定排列模式」而已


例如:

0 5 8
7 4 3
2 6 1

這是一個puzzle(用0代表空格),我需要把1移動到左上角就好了

(其他順序啥的不考慮)

然而,所要求移動的方式必須是「總成本」(Cost)最小的那個方式

例如

<
5 0 8
7 4 3
2 6 1

這個狀態下,與剛剛的初始狀態比起來,移動了5,所以成本就是5

目前的想法偏向BFS或DFS(都是遞迴)

BFS→一直往左上的方向,每個方向都移動一次,走的時候慢慢加cost

DFS→一直往左上的方向,每次要移動時只選最小的數字

這樣一來,因為都是一直往左上,自然就把防止逆向的功能整併了

可是不知道要用哪個方式才是正確的...

(剛剛手算DFS,感覺不像很快就能算出正確答案...)

希望各位板友能提點一下這個題目,謝謝!

 

熱門回應

謝謝分享

謝謝分享

smileysmiley

smiley

最短路徑這東西本質上就是由 A 到 B 的最短成本

你這個問題也是由 A (起始) 到 B (1 在左上) 的最短成本

A*最簡單就 BFS 用priority queue而已啊

你把"距離"改成你的"成本"就好了

而且8-puzzle其實很小, 窮舉都可以

laugh覺得很厲害,不太懂這個呢!!

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言