首页 新闻 赞助 找找看

C++一个平面点线寻路设计问题,谁能给出一种合适快速节约内存的算法?

0
悬赏园豆:180 [已解决问题] 解决于 2014-09-18 21:48

一个平面里,平面大小未知(平面的边界未知的)。给出一个起点和一个终点,要能从起点走到终点。问题是每次会有不同的建筑物,在只能水平和垂直移动的情况下需要绕过这些建筑物到达终点。下面图解此问题:

比如此种类型,蓝色为起点,红色为终点,绿色为建筑物(以下图中均是如此),建筑物所在坐标已知,建筑的长宽已知(这些都是已知的)。我的方法是:以1个坐标点为单位定义一个绝对大的二维数组(初始化为0)表示这个平面,求出建筑面积(所占多少个坐标点),用1填充其所占坐标点。测试起点X坐标到终点X坐标全为0(可以通过),再测试起点Y坐标到终点Y坐标全为0(可以通过)。最后到达终点。

以上是最简单的一种形式,但有时建筑物会有多个而且不能直接用些方法(三点两线)到达终点。具体情况看下面几张图。(位图的边缘表示实际地形的边缘,但边缘的实际坐标未知)

比如最后这张图:肯定先要向反方向移动,到了出口再向下移动,最终走到终点。请思考下,给出一种或者几种计算合适路线的方法(函数内可以有这几种算法针对不同类型用哪种算法就好)(不要求是最快最近的路线,只要能绝对到达终点就行)。

c++
Show、的主页 Show、 | 初学一级 | 园豆:5
提问于:2014-09-18 02:24
< >
分享
最佳答案
1

说来简单,不过是一个路径搜索的问题,简单的方案可以用穷举法实现。

做来复杂,简单的穷举法性能实在是不可恭维,而要用穷举法搜索出最优路径更是麻烦。

有兴趣研究这个?这个纯粹是数学算法的问题,你可以搜索下路径搜索算法,然后参考。

如果你不是基于算法的技术人员,这个这个~~~业余弄弄也就算了。

收获园豆:180
519740105 | 大侠五级 |园豆:5810 | 2014-09-18 09:24

A星路径搜索

这个可以给你很好参考下。

519740105 | 园豆:5810 (大侠五级) | 2014-09-18 10:17
其他回答(3)
0

路径搜索的算法多了去了

嘿嘿,最基本的就不断回溯好了。

复杂点的学A-start算法

徐少侠 | 园豆:293 (菜鸟二级) | 2014-09-18 08:26
1

给你个思路,我觉得可行,你在开始和结束的点上面向四个方向画直线,然后如果正好有相交了,那么直接实现了,如果没有相交的话,就遍历画好的每一个点继续这个画,知道有相交的时候,就完成了

刘宏玺 | 园豆:14020 (专家六级) | 2014-09-18 10:06

你说的这个,但像你第二幅图中那么多个点分别如何去获取这些点的坐标呢?

支持(0) 反对(0) Show、 | 园豆:5 (初学一级) | 2014-09-18 21:42
1

没必要用A*,广度优先就可以.可以看下这个文章:寻路DEMO

叶飞影 | 园豆:213 (菜鸟二级) | 2014-09-18 13:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册