簡體   English   中英

如何開始用Java中的迷宮矩陣制作最短路徑迷宮求解器?

[英]How do I start making a shortest path maze solver from a maze matrix in Java?

因此,我想創建一個解決迷宮的最短路徑迷宮求解器。 迷宮類似於:

我的迷宮總是圍着他們。 另外,如果您不知道,@ s是牆壁。

@@@@@@@@
@   S@ @
@@@ @@E@
@   @  @
@@@   @@
@@@@@@@@

其中S是起點,E是終點。

我想應用Dijkstra的算法,但是我不知道如何實際實現它。 就像是:

  1. 檢查當前位置(從頭開始)。 如果是E,則返回“路徑” <-這是...? 否則,將當前職位標記為已訪問,並以某種方式標記其來自哪個職位...
  2. 排隊所有當前位置的鄰居,這些鄰居不是牆且尚未被訪問。
  3. 對所有鄰居重復編號1,並使所有鄰居加入隊列。

...我很困惑,請幫忙。 我有一個包含開始和結束的x和y坐標以及實際迷宮的char [] []的類。 另外,我正在嘗試打印迷宮的已解決版本。 也就是說,將最短路徑位置替換為句點。 任何幫助是極大的贊賞。

您可以從查看此實現開始,該實現與您的實際問題定義非常相似。 您應該首先定義一個“解釋” char [] []迷宮信息的類。 您應該實現的方法(至少)是:getStartPosition(),getGoalPosition(),getValidMovementsFrom(position)。 這些方法使您可以瀏覽地圖,並從特定位置獲取所有空的相鄰圖塊。 然后,您可以使用任何合適的算法(BFS,DFS,Dijkstra,A *)通過第三方庫或您自己的實現來解決它。

您可能對將A *與JavaHipster庫一起使用的問題的完整示例感興趣。

大約7年前,當我在uni時,我使用java和A-star算法進行了此操作。 我記得,在我進行研究期間, 這篇文章非常方便。 您可以下載代碼,看看是否有什么可以學習的。 抱歉,我無法提供更多幫助,我已經有一段時間沒有真正使用Java了。

A *尋路算法是最廣泛使用和有效的尋路算法之一,盡管這可能滿足您的需求,但它經常在游戲和其他形式的計算機科學中使用,並且可以根據您的需求進行擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM