點(diǎn)的上面一個格子填充為灰色,標(biāo)記為ΟΙ-a;下邊不可通過,不標(biāo)記;左邊可通過,也填充為灰色,標(biāo)記為01-c ;右邊也不可通過,不標(biāo)記,已經(jīng)標(biāo)記過的格子不重復(fù)標(biāo)記,然后將迷宮中所有為I的元素依次存儲到二維數(shù)組對應(yīng)的位置中;比如格子l_a對應(yīng)的位置為[10,11],則將元素I存儲于二維數(shù)組對應(yīng)的位置[10,11]中;
[0039]步驟b,如圖4所示,繼續(xù)分別從01-a,ΟΙ-c開始,按照上-> 下-> 左-> 右的順序?qū)⒖盏氐母褡舆M(jìn)行填充,并標(biāo)記為2 ;
[0040]步驟C,重復(fù)步驟b,直到到達(dá)起點(diǎn)的格子;
[0041 ] 事實(shí)上,到達(dá)起點(diǎn)的格子后,如圖4所示,這時已有至少一條可以到達(dá)終點(diǎn)的路徑(就像流水一樣,只要有通路,就可以流到那里)。到達(dá)起點(diǎn)的最小標(biāo)記的數(shù)字表示從終點(diǎn)到起點(diǎn)所需要最小的步數(shù)。
[0042]步驟d,在二維數(shù)組arrayPos中,從起點(diǎn)開始,以到達(dá)起點(diǎn)的最小步數(shù)的數(shù)字為起始數(shù)字,按圖5顯示的最小步數(shù)的數(shù)字為43 ;然后按照上_>下_>左_>右的優(yōu)先順序,查找出所有步數(shù)數(shù)字為43的元素,因?yàn)榉蠗l件的可能有多個元素,所以隨機(jī)選取一個格子記錄下來做為最短路徑中的一步,并將這個元素的位置添加到數(shù)組arrayShortPath中;
[0043]步驟e,以一維數(shù)組arrayShortPath的最后一個元素的位置為起點(diǎn),按照上_>下_>左_>右的優(yōu)先順序,查找出步數(shù)數(shù)字為42 (每記錄一步最短路徑的位置后,步數(shù)數(shù)字就減1,)的元素,因?yàn)榉蠗l件的可能有多個元素,隨機(jī)選取一個步數(shù)數(shù)字為42的元素之后,將這個元素的位置添加到一維數(shù)組arrayShortPath中;
[0044]步驟f,重復(fù)步驟e,直到步數(shù)數(shù)字為I。這時,一維數(shù)組arrayShortPath已經(jīng)記錄了從起點(diǎn)到終點(diǎn)的最短路徑所需走的位置,至此,查找算法完畢,如圖6所示。
[0045]本發(fā)明還介紹了一種迷宮最短路徑的搜索系統(tǒng),所述迷宮包括起點(diǎn)、終點(diǎn)、障礙物迷宮格、無障礙迷宮格;如圖7所示,所述系統(tǒng)包括:
[0046]二維數(shù)組設(shè)置模塊1,用于設(shè)置二維數(shù)組;所述二維數(shù)組的整體元素布局與迷宮的整體迷宮格布局相同;
[0047]第I次查找模塊2,用于在終點(diǎn)處進(jìn)行第I次查找,以查找出與終點(diǎn)相鄰的無障礙迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素值設(shè)置為I ;
[0048]第i次查找模塊3,用于在當(dāng)前已設(shè)置的迷宮格處進(jìn)行第i次查找,以找出當(dāng)前迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素設(shè)置為i,其中,i為大于I的自然數(shù);i以I為增加步長的遞增方式重復(fù)執(zhí)行此過程,直至到達(dá)起點(diǎn);
[0049]所述第I次查找模塊2和所述第i次查找模塊3中,查找無障礙迷宮格的具體順序?yàn)閺漠?dāng)前所處迷宮格開始按照上-下-左-右的順序查找;并且在二維數(shù)組中已經(jīng)設(shè)置過元素值的元素,不重復(fù)設(shè)置元素值。
[0050]最短路徑選擇模塊4,用于在二維數(shù)組中選擇元素值最大的一個元素,然后按照元素值遞減的方式依次選擇,直至選擇到元素值為I的元素,將被選擇的元素所形成的路徑作為迷宮起點(diǎn)到終點(diǎn)的最短路徑。
[0051]所述最短路徑選擇模塊4在選擇過程中,若存在多個元素具有需被選擇的元素值,則從該多個元素中隨機(jī)選擇一個,并將被選擇的元素記錄至自定義的一維數(shù)組中。
[0052]本發(fā)明提供的一種迷宮最短路徑的搜索方法,彌補(bǔ)了現(xiàn)有技術(shù)的不足,能快速在迷宮中找到一條最短的路線。另外,本發(fā)明主要用于最短路徑的搜索,如迷宮游戲的最短路徑搜索、地圖游戲中計(jì)算兩點(diǎn)之間的最短路徑等。
[0053]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種迷宮最短路徑的搜索方法,其特征在于,所述迷宮包括起點(diǎn)、終點(diǎn)、障礙物迷宮格、無障礙迷宮格;所述方法包括下述步驟: 步驟A,設(shè)置二維數(shù)組;所述二維數(shù)組的整體元素布局與迷宮的整體迷宮格布局相同; 步驟B,在終點(diǎn)處進(jìn)行第I次查找,以查找出與終點(diǎn)相鄰的無障礙迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素值設(shè)置為I ; 步驟C,在當(dāng)前已設(shè)置的迷宮格處進(jìn)行第i次查找,以找出當(dāng)前迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素設(shè)置為i,其中,i為大于I的自然數(shù);i以I為增加步長的遞增方式重復(fù)執(zhí)行此步驟,直至到達(dá)起點(diǎn); 步驟D,在二維數(shù)組中選擇元素值最大的一個元素,然后按照元素值遞減的方式依次選擇,直至選擇到元素值為I的元素,將被選擇的元素所形成的路徑作為迷宮起點(diǎn)到終點(diǎn)的最短路徑。
2.如權(quán)利要求1所述的搜索方法,其特征在于,步驟B和步驟C中,查找無障礙迷宮格的具體順序?yàn)閺漠?dāng)前所處迷宮格開始按照上-下-左-右的順序查找;并且在二維數(shù)組中已經(jīng)設(shè)置過元素值的元素,不重復(fù)設(shè)置元素值。
3.如權(quán)利要求1所述的搜索方法,其特征在于,在步驟D中,在選擇過程中,若存在多個元素具有需被選擇的元素值,則從該多個元素中隨機(jī)選擇一個。
4.如權(quán)利要求1所述的搜索方法,其特征在于,步驟D在進(jìn)行選擇過程中,將被選擇的元素記錄至自定義的一維數(shù)組中。
5.—種迷宮最短路徑的搜索系統(tǒng),其特征在于,所述迷宮包括起點(diǎn)、終點(diǎn)、障礙物迷宮格、無障礙迷宮格;所述系統(tǒng)包括: 二維數(shù)組設(shè)置模塊,用于設(shè)置二維數(shù)組;所述二維數(shù)組的整體元素布局與迷宮的整體迷宮格布局相同; 第I次查找模塊,用于在終點(diǎn)處進(jìn)行第I次查找,以查找出與終點(diǎn)相鄰的無障礙迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素值設(shè)置為I; 第i次查找模塊,用于在當(dāng)前已設(shè)置的迷宮格處進(jìn)行第i次查找,以找出當(dāng)前迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素設(shè)置為i,其中,i為大于I的自然數(shù);i以I為增加步長的遞增方式重復(fù)執(zhí)行此過程,直至到達(dá)起點(diǎn); 最短路徑選擇模塊,用于在二維數(shù)組中選擇元素值最大的一個元素,然后按照元素值遞減的方式依次選擇,直至選擇到元素值為I的元素,將被選擇的元素所形成的路徑作為迷宮起點(diǎn)到終點(diǎn)的最短路徑。
6.如權(quán)利要求5所述的搜索方法,其特征在于,所述第I次查找模塊和所述第i次查找模塊中,查找無障礙迷宮格的具體順序?yàn)閺漠?dāng)前所處迷宮格開始按照上-下-左-右的順序查找;并且在二維數(shù)組中已經(jīng)設(shè)置過元素值的元素,不重復(fù)設(shè)置元素值。
7.如權(quán)利要求5所述的搜索方法,其特征在于,所述最短路徑選擇模塊在選擇過程中,若存在多個元素具有需被選擇的元素值,則從該多個元素中隨機(jī)選擇一個。
8.如權(quán)利要求5所述的搜索方法,其特征在于,所述最短路徑選擇模塊在進(jìn)行選擇過程中,將被選擇的元素記錄至自定義的一維數(shù)組中。
【專利摘要】本發(fā)明適用于計(jì)算機(jī)軟件領(lǐng)域,提供了一種迷宮最短路徑的搜索方法及系統(tǒng)。具體為:首先,設(shè)置二維數(shù)組;其次,在終點(diǎn)處進(jìn)行第1次查找,以查找出與終點(diǎn)相鄰的無障礙迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素值設(shè)置為1;然后,在當(dāng)前已設(shè)置的迷宮格處進(jìn)行第i次查找,以找出當(dāng)前迷宮格,并將二維數(shù)組中與本次查找出的迷宮格對應(yīng)位置的元素設(shè)置為i;重復(fù)執(zhí)行此步驟,直至到達(dá)起點(diǎn);最后,在二維數(shù)組中選擇元素值最大的一個元素,然后按照元素值遞減的方式依次選擇,直至選擇到元素值為1的元素,將被選擇的元素所形成的路徑作為迷宮起點(diǎn)到終點(diǎn)的最短路徑。本發(fā)明提供的最短路徑的搜索方法,能快速在迷宮中找到一條最短路線。
【IPC分類】G05D1-02
【公開號】CN104731099
【申請?zhí)枴緾N201510119078
【發(fā)明人】戴叢磊, 魏育輝, 貝金雨, 王鐵巖
【申請人】深圳市八零年代網(wǎng)絡(luò)科技有限公司
【公開日】2015年6月24日
【申請日】2015年3月18日