CN104731099B - 一种迷宫最短路径的搜索方法及系统 - Google Patents
一种迷宫最短路径的搜索方法及系统 Download PDFInfo
- Publication number
- CN104731099B CN104731099B CN201510119078.XA CN201510119078A CN104731099B CN 104731099 B CN104731099 B CN 104731099B CN 201510119078 A CN201510119078 A CN 201510119078A CN 104731099 B CN104731099 B CN 104731099B
- Authority
- CN
- China
- Prior art keywords
- maze
- dimensional array
- lattice
- maze lattice
- element value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明适用于计算机软件领域,提供了一种迷宫最短路径的搜索方法及系统。具体为:首先,设置二维数组;其次,在终点处进行第1次查找,以查找出与终点相邻的无障碍迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素值设置为1;然后,在当前已设置的迷宫格处进行第i次查找,以找出当前迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素设置为i;重复执行此步骤,直至到达起点;最后,在二维数组中选择元素值最大的一个元素,然后按照元素值递减的方式依次选择,直至选择到元素值为1的元素,将被选择的元素所形成的路径作为迷宫起点到终点的最短路径。本发明提供的最短路径的搜索方法,能快速在迷宫中找到一条最短路线。
Description
技术领域
本发明属于计算机软件领域,尤其涉及一种迷宫最短路径的搜索方法及系统。
背景技术
目前关于迷宫的算法主要有两种:宽度优先搜索算法和深度优先搜索算法。具体为:
宽度优先搜索算法:从起点开始,寻找出所有走一步所能到达的位置,记录这些位置,再从这些位置开始,寻找出所有再走一步(即从起点走2步)所能到达的位置,不断继续,直到找到目标点止,然后从记录的这些位置(像一棵树)中找出路径;这种算法可找到一条或者所有最短路径,但是需要记录大量位置,使用大量内存。
深度优先搜索算法:从入口出发,顺着某一方向向前探索,若能走通,则继续往前走;否则沿原路退回(回溯),换一个方向再继续探索.直至所有可能的通路都探索到为止。如果恰好某一步探索到出口,则就找到了从入口到出口的路径。为了保证在任何位置上都能沿原路退回,防止死循环,需要使用堆栈来保存大量记录,而要求解最短路径,则必须搜索出所有到达出口的路径,通过比较得到最短距离的路径,这样也必然要求增加数据空间来保存搜索过程中的当前最短路径,增加了空间复杂度。
所以,目前已有算法对于解决大规模迷宫问题还存在不足,主要问题在于搜索空间大、求解速度慢、无法得到最优路径等。
发明内容
本发明所要解决的技术问题在于提供一种迷宫最短路径的搜索方法及系统,旨在能快速在迷宫中找到一条最短行径路线。
本发明是这样实现的,一种迷宫最短路径的搜索方法,所述迷宫包括起点、终点、障碍物迷宫格、无障碍迷宫格;所述方法包括下述步骤:
步骤A,设置二维数组;所述二维数组的整体元素布局与迷宫的整体迷宫格布局相同;
步骤B,在终点处进行第1次查找,以查找出与终点相邻的无障碍迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素值设置为1;
步骤C,在当前已设置的迷宫格处进行第i次查找,以找出当前迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素设置为i,其中,i为大于1的自然数;i以1为增加步长的递增方式重复执行此步骤,直至到达起点;
步骤D,在二维数组中选择元素值最大的一个元素,然后按照元素值递减的方式依次选择,直至选择到元素值为1的元素,将被选择的元素所形成的路径作为迷宫起点到终点的最短路径。
进一步地,步骤B和步骤C中,查找无障碍迷宫格的具体顺序为从当前所处迷宫格开始按照上-下-左-右的顺序查找;并且在二维数组中已经设置过元素值的元素,不重复设置元素值。
进一步地,在步骤D中,在选择过程中,若存在多个元素具有需被选择的元素值,则从该多个元素中随机选择一个。
进一步地,步骤D在进行选择过程中,将被选择的元素记录至自定义的一维数组中。
本发明还提供了一种迷宫最短路径的搜索系统,所述迷宫包括起点、终点、障碍物迷宫格、无障碍迷宫格;所述系统包括:
二维数组设置模块,用于设置二维数组;所述二维数组的整体元素布局与迷宫的整体迷宫格布局相同;
第1次查找模块,用于在终点处进行第1次查找,以查找出与终点相邻的无障碍迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素值设置为1;
第i次查找模块,用于在当前已设置的迷宫格处进行第i次查找,以找出当前迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素设置为i,其中,i为大于1的自然数;i以1为增加步长的递增方式重复执行此过程,直至到达起点;
最短路径选择模块,用于在二维数组中选择元素值最大的一个元素,然后按照元素值递减的方式依次选择,直至选择到元素值为1的元素,将被选择的元素所形成的路径作为迷宫起点到终点的最短路径。
进一步地,所述第1次查找模块和所述第i次查找模块中,查找无障碍迷宫格的具体顺序为从当前所处迷宫格开始按照上-下-左-右的顺序查找;并且在二维数组中已经设置过元素值的元素,不重复设置元素值。
进一步地,所述最短路径选择模块在选择过程中,若存在多个元素具有需被选择的元素值,则从该多个元素中随机选择一个。
进一步地,所述最短路径选择模块在进行选择过程中,将被选择的元素记录至自定义的一维数组中。
本发明与现有技术相比,有益效果在于:本发明提供的一种迷宫最短路径的搜索方法及系统基于泼水法,即水从目的地开始扩散,每次扩散一格,直到扩散到出发点,记住水到达各个点所经过的步数,从中找出一条最短路径;本发明弥补了现有技术的不足,能快速在迷宫中找到一条最短的路线。
附图说明
图1是本发明实施例提供的迷宫最短路径的搜索方法示意图;
图2-6是本发明实施例提供的迷宫最短路径的搜索过程示意图;
图7是本发明实施例提供的迷宫最短路径的搜索系统示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的技术原理基于泼水法,水从目的地开始扩散,每次扩散一格,直到扩散到出发点,记住水到达各个点所经过的步数,从中找出一条最短路径。
本发明所适用的迷宫包括起点、终点、障碍物迷宫格、无障碍迷宫格;如图1所示,所提供的搜索方法包括下述步骤:
步骤A,设置二维数组;所述二维数组的整体元素布局与迷宫的整体迷宫格布局相同;
步骤B,在终点处进行第1次查找,以查找出与终点相邻的无障碍迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素值设置为1;
步骤C,在当前已设置的迷宫格处进行第i次查找,以找出当前迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素设置为i,其中,i为大于1的自然数;i以1为增加步长的递增方式重复执行此步骤,直至到达起点;
在步骤B和步骤C中,查找无障碍迷宫格的具体顺序为从当前所处迷宫格开始按照上-下-左-右的顺序查找;并且在二维数组中已经设置过元素值的元素,不重复设置元素值。
步骤D,在二维数组中选择元素值最大的一个元素,然后按照元素值递减的方式依次选择,直至选择到元素值为1的元素,将被选择的元素所形成的路径作为迷宫起点到终点的最短路径。
在步骤D中,在选择过程中,若存在多个元素具有需被选择的元素值,则从该多个元素中随机选择一个,并将被选择的元素记录至自定义的一维数组中。
下面举一具体实施例介绍迷宫最短路径的搜索方法:
预先设置一个用于存储最短路径的一维数组arrayShortPath和一个整体元素布局与迷宫的整体迷宫格布局相同的二维数组arrayPos,采用数组对迷宫信息进行存储,数组的元素的值表示迷宫对应位置的内容。如图2所示,黑色图像的小格子表示迷宫障碍物,不可通过,其它未填充的格子表示空地,可以通过;左上角的虚线格子表示迷宫对应位置为起点,保证起点不可通过;右下角的虚线格子表示迷宫终点,终点不可通过。在设计迷宫算法的过程中,首先将迷宫每一步分成若干个正方形的单元格,然后利用传染的方式,就好比泼水出去水不断扩散直到起点流出,然后在可通过的路径中查找出最短的一条路径。具体实施方式如下:
步骤a:如图3所示,从终点开始,按顺序依次找出所有走一步所能到达的格子,本发明实施例采取上->下->左->右的顺序,将终点的上面一个格子填充为灰色,标记为01-a;下边不可通过,不标记;左边可通过,也填充为灰色,标记为01-c;右边也不可通过,不标记,已经标记过的格子不重复标记,然后将迷宫中所有为1的元素依次存储到二维数组对应的位置中;比如格子1-a对应的位置为[10,11],则将元素1存储于二维数组对应的位置[10,11]中;
步骤b,如图4所示,继续分别从01-a,01-c开始,按照上->下->左->右的顺序将空地的格子进行填充,并标记为2;
步骤c,重复步骤b,直到到达起点的格子;
事实上,到达起点的格子后,如图4所示,这时已有至少一条可以到达终点的路径(就像流水一样,只要有通路,就可以流到那里)。到达起点的最小标记的数字表示从终点到起点所需要最小的步数。
步骤d,在二维数组arrayPos中,从起点开始,以到达起点的最小步数的数字为起始数字,按图5显示的最小步数的数字为43;然后按照上->下->左->右的优先顺序,查找出所有步数数字为43的元素,因为符合条件的可能有多个元素,所以随机选取一个格子记录下来做为最短路径中的一步,并将这个元素的位置添加到数组arrayShortPath中;
步骤e,以一维数组arrayShortPath的最后一个元素的位置为起点,按照上->下->左->右的优先顺序,查找出步数数字为42(每记录一步最短路径的位置后,步数数字就减1,)的元素,因为符合条件的可能有多个元素,随机选取一个步数数字为42的元素之后,将这个元素的位置添加到一维数组arrayShortPath中;
步骤f,重复步骤e,直到步数数字为1。这时,一维数组arrayShortPath已经记录了从起点到终点的最短路径所需走的位置,至此,查找算法完毕,如图6所示。
本发明还介绍了一种迷宫最短路径的搜索系统,所述迷宫包括起点、终点、障碍物迷宫格、无障碍迷宫格;如图7所示,所述系统包括:
二维数组设置模块1,用于设置二维数组;所述二维数组的整体元素布局与迷宫的整体迷宫格布局相同;
第1次查找模块2,用于在终点处进行第1次查找,以查找出与终点相邻的无障碍迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素值设置为1;
第i次查找模块3,用于在当前已设置的迷宫格处进行第i次查找,以找出当前迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素设置为i,其中,i为大于1的自然数;i以1为增加步长的递增方式重复执行此过程,直至到达起点;
所述第1次查找模块2和所述第i次查找模块3中,查找无障碍迷宫格的具体顺序为从当前所处迷宫格开始按照上-下-左-右的顺序查找;并且在二维数组中已经设置过元素值的元素,不重复设置元素值。
最短路径选择模块4,用于在二维数组中选择元素值最大的一个元素,然后按照元素值递减的方式依次选择,直至选择到元素值为1的元素,将被选择的元素所形成的路径作为迷宫起点到终点的最短路径。
所述最短路径选择模块4在选择过程中,若存在多个元素具有需被选择的元素值,则从该多个元素中随机选择一个,并将被选择的元素记录至自定义的一维数组中。
本发明提供的一种迷宫最短路径的搜索方法,弥补了现有技术的不足,能快速在迷宫中找到一条最短的路线。另外,本发明主要用于最短路径的搜索,如迷宫游戏的最短路径搜索、地图游戏中计算两点之间的最短路径等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种迷宫最短路径的搜索方法,其特征在于,所述迷宫包括起点、终点、障碍物迷宫格、无障碍迷宫格;所述方法包括下述步骤:
步骤A,设置二维数组;所述二维数组的整体元素布局与迷宫的整体迷宫格布局相同;
步骤B,在终点处进行第1次查找,以查找出与终点相邻的无障碍迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素值设置为1;
步骤C,在当前已设置的迷宫格处进行第i次查找,以找出与当前已设置的迷宫格相邻的无障碍迷宫格,并将二维数组中与本次查找出的无障碍迷宫格对应位置的元素设置为i,其中,i为大于1的自然数;i以1为增加步长的递增方式重复执行此步骤,直至到达起点;
步骤D,在二维数组中选择元素值最大的一个元素,然后按照元素值递减的方式依次选择,直至选择到元素值为1的元素,将被选择的元素所形成的路径作为迷宫起点到终点的最短路径;
在步骤D中,在选择过程中,若存在多个元素具有需被选择的元素值,则从该多个元素中随机选择一个;
步骤D在进行选择过程中,将被选择的元素记录至自定义的一维数组中。
2.如权利要求1所述的搜索方法,其特征在于,步骤B和步骤C中,查找无障碍迷宫格的具体顺序为从当前所处迷宫格开始按照上-下-左-右的顺序查找;并且在二维数组中已经设置过元素值的元素,不重复设置元素值。
3.一种迷宫最短路径的搜索系统,其特征在于,所述迷宫包括起点、终点、障碍物迷宫格、无障碍迷宫格;所述系统包括:
二维数组设置模块,用于设置二维数组;所述二维数组的整体元素布局与迷宫的整体迷宫格布局相同;
第1次查找模块,用于在终点处进行第1次查找,以查找出与终点相邻的无障碍迷宫格,并将二维数组中与本次查找出的迷宫格对应位置的元素值设置为1;
第i次查找模块,用于在当前已设置的迷宫格处进行第i次查找,以找出与当前已设置的迷宫格相邻的无障碍迷宫格,并将二维数组中与本次查找出的无障碍迷宫格对应位置的元素设置为i,其中,i为大于1的自然数;i以1为增加步长的递增方式重复执行此过程,直至到达起点;
最短路径选择模块,用于在二维数组中选择元素值最大的一个元素,然后按照元素值递减的方式依次选择,直至选择到元素值为1的元素,将被选择的元素所形成的路径作为迷宫起点到终点的最短路径;
所述最短路径选择模块在选择过程中,若存在多个元素具有需被选择的元素值,则从该多个元素中随机选择一个;
所述最短路径选择模块在进行选择过程中,将被选择的元素记录至自定义的一维数组中。
4.如权利要求3所述的搜索系统,其特征在于,所述第1次查找模块和所述第i次查找模块中,查找无障碍迷宫格的具体顺序为从当前所处迷宫格开始按照上-下-左-右的顺序查找;并且在二维数组中已经设置过元素值的元素,不重复设置元素值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510119078.XA CN104731099B (zh) | 2015-03-18 | 2015-03-18 | 一种迷宫最短路径的搜索方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510119078.XA CN104731099B (zh) | 2015-03-18 | 2015-03-18 | 一种迷宫最短路径的搜索方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731099A CN104731099A (zh) | 2015-06-24 |
CN104731099B true CN104731099B (zh) | 2017-08-25 |
Family
ID=53455093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510119078.XA Expired - Fee Related CN104731099B (zh) | 2015-03-18 | 2015-03-18 | 一种迷宫最短路径的搜索方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104731099B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423360B (zh) * | 2017-06-19 | 2020-01-24 | 广东中冶地理信息股份有限公司 | 一种基于路径中线的迷宫求解方法 |
CN107480804B (zh) * | 2017-06-19 | 2020-04-14 | 广西回归线信息科技有限公司 | 一种基于线面空间关系的迷宫求解方法 |
CN111340296A (zh) * | 2020-02-21 | 2020-06-26 | 新大陆数字技术股份有限公司 | 蜂巢迷宫最短路径计算方法及蜂巢迷宫实训系统 |
CN111346381B (zh) * | 2020-03-02 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 游戏路径控制方法、装置、设备及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819169A (en) * | 1986-09-24 | 1989-04-04 | Nissan Motor Company, Limited | System and method for calculating movement direction and position of an unmanned vehicle |
KR20100008563A (ko) * | 2008-07-16 | 2010-01-26 | 대덕대학산학협력단 | 이동로봇의 시뮬레이션 방법 |
CN102506849A (zh) * | 2011-09-28 | 2012-06-20 | 浙江大学 | 寻找带约束的最短路径的方法 |
CN103116356A (zh) * | 2013-03-06 | 2013-05-22 | 山东大学 | 一种迷宫搜索的方法 |
CN103823466A (zh) * | 2013-05-23 | 2014-05-28 | 电子科技大学 | 一种动态环境下移动机器人路径规划方法 |
CN104142684A (zh) * | 2014-07-31 | 2014-11-12 | 哈尔滨工程大学 | 一种微型电脑鼠机器人迷宫搜索方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101778028B1 (ko) * | 2010-12-20 | 2017-09-13 | 삼성전자주식회사 | 로봇 및 로봇의 경로 생성 방법 |
-
2015
- 2015-03-18 CN CN201510119078.XA patent/CN104731099B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819169A (en) * | 1986-09-24 | 1989-04-04 | Nissan Motor Company, Limited | System and method for calculating movement direction and position of an unmanned vehicle |
KR20100008563A (ko) * | 2008-07-16 | 2010-01-26 | 대덕대학산학협력단 | 이동로봇의 시뮬레이션 방법 |
CN102506849A (zh) * | 2011-09-28 | 2012-06-20 | 浙江大学 | 寻找带约束的最短路径的方法 |
CN103116356A (zh) * | 2013-03-06 | 2013-05-22 | 山东大学 | 一种迷宫搜索的方法 |
CN103823466A (zh) * | 2013-05-23 | 2014-05-28 | 电子科技大学 | 一种动态环境下移动机器人路径规划方法 |
CN104142684A (zh) * | 2014-07-31 | 2014-11-12 | 哈尔滨工程大学 | 一种微型电脑鼠机器人迷宫搜索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104731099A (zh) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731099B (zh) | 一种迷宫最短路径的搜索方法及系统 | |
WO2018010471A1 (zh) | 海上风电场集电系统避障路径优化方法和系统 | |
Zhu et al. | Shortest path and distance queries on road networks: towards bridging theory and practice | |
Çelk et al. | Order picking under random and turnover-based storage policies in fishbone aisle warehouses | |
CN107092978B (zh) | 一种面向虚拟地球的最短路径分层规划方法 | |
Alpern et al. | Mining coal or finding terrorists: The expanding search paradigm | |
Ting et al. | Optimizing container relocation operations at container yards with beam search | |
CN104394509A (zh) | 一种高效的差分扰动位置隐私保护系统及方法 | |
CN112685868B (zh) | 一种配电网单线图生成方法、装置及存储介质 | |
CN107193942A (zh) | 一种有向图中所有连通子图的快速生成方法 | |
CN107808061A (zh) | 一种支持正交与斜向走线的双向跨障碍布线方法 | |
CN102496187A (zh) | 一种基于三角形网格的追踪等值线至边界及断层的方法 | |
CN103488816B (zh) | 模拟电路的多层精确匹配布线方法 | |
CN112985443B (zh) | 路径规划方法、装置及终端设备 | |
CN107423373A (zh) | 一种城市级三维建筑模型索引方法 | |
Khan et al. | Ride-sharing is about agreeing on a destination | |
CN104751250A (zh) | 一种基于蚁群方法的最优路径寻找方法 | |
CN105869512A (zh) | 多信息的混杂度量地图建图方法和装置 | |
CN104915539A (zh) | 一种基于遥感分类获取流域下垫面信息的方法 | |
CN114578828A (zh) | 一种基于空间约束a星算法的移动机器人路径规划方法 | |
Gorain et al. | Pebble guided optimal treasure hunt in anonymous graphs | |
Arge et al. | Multiway simple cycle separators and I/O-efficient algorithms for planar graphs | |
CN104866583B (zh) | 一种电子海图中船舶电子标牌的自动排列方法 | |
CN108829892A (zh) | 一种迷宫最短路径的快速搜索方法及系统 | |
CN114674336B (zh) | 基于线段的路径规划方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170825 Termination date: 20210318 |