2013-03-02 141 views
0

我一直在使用Image Analyst http://www.mathworks.com/matlabcentral/fileexchange/27175-mazesolution的maze_solution函數一段時間沒有問題。有一些限制:迷宮必須是完美的,沒有圓形路徑。MatLab迷宮求解

話雖這麼說,它通常工作得很好,當我測試了一下,讓我爲你提供的輸出兩個例子:

maze-1 -

maze-2>solution-1(顯然效果很好) - >solution-2(不太好)

現在讓我把一些規則不是很明顯我的迷宮:

  1. ŧ這裏沒有圓形路徑(有些被困在牆上,但沒有一個迷宮算法會遇到)。
  2. 它們總是從左上角開始,然後每次都有四個相同座標的出口。
  3. 總是隻有一個出口。

所以,我想要做的是,讓我們考慮第一個截圖。它運行良好,'找到'出口,有沒有什麼辦法可以讓matlab實驗室彈出一個消息框(例如使用msgbox()),並說出類似「嗨用戶,我找到了解決方案!這是A!」?我已經想了很久,但沒有辦法做到這一點。一個我認爲溶液的約是,在僞代碼:

if CertainCoordinate = red pixel 
    return A 

鑑於CertainCoordinate可能是A,B,C和d的不可改變的座標(x和y)(然後,我會使用4 'IFS'),但我真的不知道如何實現這一點。任何想法或...什麼東西指向我在正確的方向?所以,總結一下:我現在有一個算法,它現在生成一個紅色的出口路徑(如果你有任何建議,我可以更好的算法),但我的目標是讓matlab告訴我他發現了什麼,而不是讓我看圖片。因此,例如,在第一張圖片中,我希望打開一個MessageBox並說出「嘿用戶!我找到了出口,它是D!」,而不是向我顯示帶有紅色路徑的圖像。問題是,我不知道如何教MatLab「D在哪裏」,並讓他認識到他發現了'D'。那麼,有沒有關於如何做到這一點的建議?

在此先感謝!

+0

它們是使用圖着色思想的「連接組件」算法的變種。你應該參考一個標準的算法教科書,也許史蒂文Skiena,或由CLRS – Arcturus 2013-03-02 16:04:09

回答

0

假設您有一個圖像,稱爲maze一組可能的x出口座標和相應的y出口座標。你也可以檢查迷宮解決方案使用什麼顏色,可以說這是Red

現在解決方案很簡單。首先運行迷宮解算器,然後檢查以下內容

isRed = maze(x,y) == Red; 
exitxCoordinates = x(isRed) 
exityCoordinates = y(isRed) 

這給出了x和y座標。 (如果沒有找到解決方案,它們是空的)。 從這裏開始,將它們連接到您指定的字母之一應該不會太難。