[問題] Turbo 版老鼠走迷宮..

作者: EdisonX (卡卡獸)   2012-11-06 15:42:11
老鼠走迷宮是老到不能再老的問題,
有幾個題目是網路上看到的面試題目,
但小弟卻沒想到解法,上網找了些資料,
說明並不非常詳盡,於此請教各位先進意見。
[0] 探討的迷宮
迷宮種類很多,這個不贅述,我想探討的主要只有一個特性,
迷宮內的任意兩點一定可以相通。
[1] 尋找最短路徑
假設一條迷宮不只一條唯一路徑,也有可能造成回路,
給定入口與出口,請問怎麼找出最短路徑?
[2] 如何產生出一條迷宮
如何產生一條,具有唯一解,且任兩點必相通的迷宮?
假設是 M x N,網路上是有種方法可以產生,但前提限制是,
M, N 必須為奇數 ( 為什麼一定要奇數我也想不透,但實際跑偶數真的有問題),
請問是否有產生符合以下條件迷宮的方法?
(a) 出口 / 入口不用限制在邊界上,可以設在迷宮內部
(b) 任兩點必定相通
(c) M x N,M, N >2,For All M, N
(d) 不會造成迴路,且只有唯一一條路徑。
這種問法讓我感到很不好意思,但想了半天真的是沒什麼想法 = =
唯一有「一點點」想法的是尋最短路徑,「似乎」可以用 DP 解?
效率分析和實作就一直卡死。
小弟承認演算法 / 資料結構沒 k 完,請問要解上面兩個問題,
是否該再補足哪些部份?
可指點個概念,或給些 keyword ,小弟實作上若有問題再回來請教,
謝謝各位先進不吝賜教,感激不盡。
作者: springman (司布林)   2011-01-06 16:08:00
最短路徑應該是用 BFS、用 queue 不要用 stack。
作者: ledia (付出不需要理由)   2011-01-06 16:36:00
spanning tree + random weight ?
作者: EdisonX (卡卡獸)   2011-01-06 17:09:00
先謝謝樓上兩位給的 keyword, 我先 k 過相關資料, 感謝:)
作者: stimim (qqaa)   2011-01-06 19:10:00
用 disjoint set 應該也可以?
作者: firejox (Tangent)   2011-01-13 23:27:00
http://en.wikipedia.org/wiki/Maze_generation_algorithm我想會要求是奇數的話 就不會產生兩倍寬的牆...有偶數就會有| ||的情形... 找最短路徑應該可以用A*加速
作者: EdisonX (卡卡獸)   2011-01-14 01:34:00
f 大給的版本和 bleed~ 大差蠻多的,謝謝您的回覆 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com