深度優先搜尋-求解迷宮解空間

來源:互聯網
上載者:User

深度優先搜尋-求解迷宮解空間
1.原理描述:
給定圖G的初始狀態是所有頂點均未曾訪問過,在G中任選一頂點V為初始出發點(源點、根結點)。
則描述如下:首先訪問出發點V,並將其標記為已訪問過;然後依次從V出發搜尋V的每個鄰接點(子結點)W。
若W未曾訪問過,則以W為新的出發點繼續進行深度優先遍曆,直到圖中所有和源點V有路徑相同的頂點(從源點可達的頂點)均已被訪問為止。若此圖中仍有未訪問的頂點,則另選一個尚未訪問的頂點作為新的源點重複上述過程,直到圖中所有頂點均已被訪問為止。

2.演算法描述
(1) 確定圖的儲存方式。
(2) 設計搜尋過程中的操作,其中包括為輸出問題解而進行的儲存操作。
(3) 搜尋到問題的解,則輸出;否則回溯。
(4) 一般在回溯前應該將結點恢複為原始狀態,特別是在多解問題中。

3.一種實現:走迷宮問題。給定入口,求解搜尋到出口的解空間。

public class MiGong{/* * author 隆 */private static int[][] maze = {               { 0, 0, 0, 0, 0, 0, 0, 0 },               { 0, 1, 1, 1, 1, 0, 1, 0 },                { 0, 0, 0, 0, 1, 0, 1, 0 },               { 0, 1, 0, 0, 0, 0, 1, 0 },                { 0, 1, 0, 1, 1, 0, 1, 0 },               { 0, 1, 0, 0, 0, 0, 1, 1 },                { 0, 1, 0, 0, 1, 0, 0, 0 },               { 0, 1, 1, 1, 1, 1, 1, 0 } };   private static int f[][]={{1,-1,0,0},{0,0,1,-1}};private static int total;public static void main(String args[]){int start=0;int end=0;maze[start][end]=3;//標誌這條路已經走過fun(start,end);System.out.println(total);}public static void fun(int p1,int p2){int px;int py;//開始搜尋四個方向for(int i=0;i<4;i++){if(check(p1,p2,i)){//檢車四個方向是否可走px=p1+f[0][i];py=p2+f[1][i];maze[px][py]=3;//標誌這條路已經走過if((px==maze[0].length-1)&&(py==maze.length-1)) out();else fun(px,py);}}maze[p1][p2]=2;//死路}//輸出public static void out(){for(int i=0;i<maze.length;i++){for(int j=0;j<maze[i].length;j++){if(maze[i][j]==3){System.out.print("X");total++;}else System.out.print("*");}System.out.println();}}//檢車四個方向是否合格public static boolean check(int p1,int p2,int k){p1+=f[0][k];p2+=f[1][k];if((p1<0)||(p1>maze[0].length-1)||(p2<0)||(p2>maze.length-1) ||(maze[p1][p2]!=0))return false;return true;}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.