社区
数据结构与算法
帖子详情
[请教] 给定起点和终点的坐标,如何产生一条随机的路径?
wyl1267
2006-02-20 09:30:48
请教一个编程问题:
在N*N的棋盘中,若给定起点和终点的坐标,如何产生一条随机的路径?
...全文
1350
55
打赏
收藏
[请教] 给定起点和终点的坐标,如何产生一条随机的路径?
请教一个编程问题: 在N*N的棋盘中,若给定起点和终点的坐标,如何产生一条随机的路径?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
55 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wyl1267
2006-03-13
打赏
举报
回复
你研究的问题都很深奥的,如迷宫,接龙,魔方之类的,不愧是北大出来的!
你还编过些什么游戏啊,能不能让我领略一下?
我最近的一个拙作发布在:
http://data.gameres.com/showmessage.asp?TopicID=47849
有兴趣进去看看,欢迎点评。
还有,你编的<人工智能用于游戏编程>一书出版了吗?哪里有买啊?
zzwu
2006-03-10
打赏
举报
回复
wyl1267(寒蝉) :
确实,这题没有想象的那样简单,尽管你的贴结了(谢谢你),我的贴还没有结,我准备把这一想法继续完善下去.
我现在暂时把此转换点的位置的事情搁一搁,先考虑如何随机产生点列.
可以有2种办法:
1. 一种是使所有点不在相同行相同列,这样,如果是n*n点阵,只能允许布置n个点.
2. 另一种是使所有点不在已布线上即可,这就可以产生更多的点了.
第一种方法我已经编好了程序,现正在编第二钟方案.
我以前在北大读过书,现在已不在北大了.
我前面提到的方案都是晚上睡在床上考虑的,化的时间可能主要是编写贴子的时间(图不好画).
zzwu
2006-03-10
打赏
举报
回复
下面是我不久前提问的2个游戏算法问题:
http://topic.csdn.net/T/20050613/15/4078974.html
http://community.csdn.net/Expert/topic/4535/4535995.xml?temp=.388653
zzwu
2006-03-10
打赏
举报
回复
我讲的第二种方法就是:在随机产生新点时,要避开已占有连线的那些位置.
而第一种方法则要避开已布点的整个行和列,即使不占满行或列,也不再加新点.
我想,这种想法和你的思想也差不多.
我也喜欢编游戏玩,我以前遍过一些游戏,感到困难的也是算法问题.
我已经在CSDN上提问过一些算法问题.
wyl1267
2006-03-10
打赏
举报
回复
zzwu(未名):
你的第1种方法好象有局限性,第2种我还不很明白。
刚才我倒忽然想出了一个方法,你看行不行:
和随机产生点列的方法想反,在方阵中随机布置一些“禁区”或叫作“障碍”,“禁区”的大小不一,也是随机的。从起点至终点必须绕开“禁区”,这样可采用路径搜索如A*算法来实现。这只是一个设想,没有试过。
看了你发的贴和一些回复,好象都是有关算法的,其实编程的核心问题就是算法问题,也是编程的难点所在,是吗?
我原来是学电子专业的,后来对编程也挺感兴趣,在业余时间编过几个小游戏(不知你对这玩艺儿有没有兴趣?),也曾为算法问题所困惑,由于我完全是靠自学的,周围也没有编程问题的讨论环境,正在想找人交流探讨一下这方面的思路。
在贴子里表达起来毕竟有限,图象和文件等都不能传送,以后方便的话可以发email给我。
zzwu
2006-03-08
打赏
举报
回复
[答]
Ytemp=Y6,
Y6=Y5,
Y5=Y4,
Y4=Y2,
Y2=Y1,
Y1=Y3=Ytemp
zzwu
2006-03-08
打赏
举报
回复
其实,只要弄清了前面的修改思想,这一问题也不难.
wyl1267
2006-03-08
打赏
举报
回复
zzwu(未名):
看来这题没有想象的那样简单,有待进一步讨论,不管方案是否可行,很佩服你的钻研精神,你为这道题花了很多时间吧?
你现在是学生吗,我猜是北大的吗?
也感谢楼上各位提供思路,本贴将要结贴,以后可发Email给我:wyl1267[AT]tom[DOT]com ([AT]= @, [DOT]=. ) ,欢迎来信继续讨论!
zzwu
2006-03-07
打赏
举报
回复
如再来一个P6:
,0*****,,,,,,,,,,,
,,,,,,*,,6,,,,,,,,
,,,,,,*,,*,,,,,,,,
,,****1,,*,3*****,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,2*********,,,,*,
,,,,,,,,,*,,,,,,*,
,,,,,,,,,*,,,,,,*,
,,,,,,,,,*,,,,,,*,
****************4,
*,,,,,,,,*,,,,,,,,
5*********,,,,,,,,
则要这样改:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,6,
,,,,,,*,,,,,,,,,*,
,,****1,,3**,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,2*******,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
***********4,,,,*,
*,,,,,,,,,,,,,,,*,
5****************,
即:X6=X4, X4=X3, X3=X6
zzwu
2006-03-07
打赏
举报
回复
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,,,,,*,,,,*,,,,4
,,,,,,*,,,,*,,,,,
,,****1,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*, ,,,,
,,2*********,,,,,
,,,,,,,,,,,,,,,,,
5 ,,,,,,,,,,,,,,,,
改成这样:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,****1,,,,3*****,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,2*********,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,,,,,*,
****************4,
*,,,,,,,,,,,,,,,,,
5,,,,,,,,,,,,,,,,,
即Y4=Y2, Y2=Y1, Y1=Y3
zzwu
2006-03-07
打赏
举报
回复
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,,,,,*,,,,*,,,,4
,,,,,,*,,,,*,,,,,
,,****1,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*, , , , ,
,,2*********, , , , ,
,,,,,,,,,,,,, , , , ,
5 ,, ,,,,,,,,,, , , , ,
改成这样:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,****1,,,,3*****,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,2*********,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,, , , , *,
****************4,
*,,,,,,,,,,,, , , , ,
5,, ,,,,,,,,,, , , , ,
即Y4=Y2, Y2=Y1, Y1=Y3
zzwu
2006-03-07
打赏
举报
回复
难题来了:在
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,6,
,,,,,,*,,,,,,,,,*,
,,****1,,3**,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,2*******,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
***********4,,,,*,
*,,,,,,,,,,,,,,,*,
5****************,
的基础上,如何加下面的P7:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,,,⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕6,
,,,,⊕,*,,,,,,,,,*,
,,**⊕*1,,3**,,,,*,
,,*,⊕,,,,*,*,,,,*,
,,*,⊕,,,,*,*,,,,*,
,,*,⊕,,,,*,*,,,,*,
,,2*⊕*****,*,,,,*,
,,,,⊕,,,,,,*,,,,*,
,,,,⊕,,,,,,*,,,,*,
,,,,⊕,,,,,,*,,,,*,
****⊕******4,,,,*,
*,,,⊕,,,,,,,,,,,*,
5***⊕************,
,,,,⊕,,,,,,,,,,,,,
,,,,⊕,,,,,,,,,,,,,
,,,,7,,,,,,,,,,,,,
zzwu
2006-03-06
打赏
举报
回复
最后一步仅仅是把P2与P4两个点的y分量对换一下而已.
zzwu
2006-03-06
打赏
举报
回复
接前面,我向前再看一步:
第3点:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,2***+*****
,,*,,,*,,,,,
,,*,,,*,,,,,
,,*,,,*,,,,,
,,****1,,,,,
,,,,,,,,,,,,
相交了,改为下面的路线:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,****1,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,2*********
,,,,,,,,,,,,
加入第4点:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,****1,,,,*,,,,*
,,*,,,,,,,,*,,,,*
,,*,,,,,,,,*,,,,4
,,*,,,,,,,,*
,,2*********
,,,,,,,,,,,,
加入第5点:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,****1,,,,*,,,,*
,,*,,,,,,,,*,,,,*
****************4
*,*,,,,,,,,*,,,,,
*,2*********,,,,,
*,,,,,,,,,,,,,,,,
5,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
与前面线段相交了,改为下面的路线:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,****1,,,,*,,,,*
,,*,,,,,,,,*,,,,*
,,2*********,,,,*
,,,,,,,,,,,,,,,,*
****************4
*,,,,,,,,,,,,,,,,
5,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
修改时,要保证点的数目不变,点的位置要变,但新点的坐标都
是利用已有点的坐标“重组”得到。
现在,问题变成:寻找新点和原有点的坐标的关系。
wyl1267
2006-03-06
打赏
举报
回复
,0*****,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,4
,,****1,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*, , , , ,
,,2*********, , , , ,
,,,,,,,,,,,,, , , , ,
5 ,, ,,,,,,,,,, , , , ,
如果第4点在上面的位置怎么办啊?
zzwu
2006-03-06
打赏
举报
回复
而前面加P3时的修改,仅仅是把P1与P2两个点的y分量对换一下而已.
寻开心
2006-03-03
打赏
举报
回复
“每加入一点,就画对应的一根“水平+垂直”线,并立刻处理掉这一“水平+垂直”线与已有线的相交”
这个可不一定很容易就实现,也许要绕很多弯才可以达到的
这个在某种程度上等同于,走迷宫了, :)
假设你的迷宫设好了,我把A点放在迷宫的入口,B点放在迷宫的出口
你的处理线的方法,就等同于走迷宫的算法啦
zzwu
2006-03-02
打赏
举报
回复
我也在考虑中,我的想法是:
每加入一点,就画对应的一根“水平+垂直”线,并
立刻处理掉这一“水平+垂直”线与已有线的相交,
这样一来,以后就永远不会复杂情况了。
问题剩下2个:
1. 如何防止随机产生的新点、新线不与原来的重合?
2. 新点、新线与原来的点、线有多次相交如何处理?
我认为,
要解决1,必须对新点的随机产生方法有所限制。
要解决2,原则上是:遇到交点时,一个一个地处理。
wyl1267
2006-03-01
打赏
举报
回复
上述的处理方法只是对一个个例,遇到复杂的情况怎么办?
有没有通用的处理算法?
zzwu
2006-03-01
打赏
举报
回复
抱歉,上面图中点的标识方法错了,点的个数只有3个,
从一点到其下一点,总是先走水平再走垂直,如下:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,2***+*****
,,*,,,*,,,,,
,,*,,,*,,,,,
,,*,,,*,,,,,
,,****1,,,,,
,,,,,,,,,,,,
更合理的修改方式,是改为下面的路线:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,****1,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,2*********
,,,,,,,,,,,,
这样,点的总数保持不变,而且,虽然一些点的位置改变了,但
这些新点的坐标分量都是利用原有点的坐标分量交换得到的。
加载更多回复(35)
迷宫
随机
生成及
路径
搜索
本文探讨了如何利用图的深度优先遍历算法生成迷宫,并介绍了如何使用相同的原理进行迷宫
路径
搜索。通过
随机
操作和遍历策略,可以创建复杂的迷宫结构,并找到从
起点
到
终点
的最短
路径
。
确定
起点
终点
的无闭环旅行商问题经典蚁群算法程序
本文介绍了一种基于经典蚁群算法的改进方法,用于解决旅行商问题(TSP)。通过调整算法参数和迭代过程,实现了
路径
寻优。最终展示了算法运行结果及其可视化效果。
JAVA|迷宫问题输出最短
路径
本文详细介绍了一款基于Java的迷宫游戏设计与实现过程,包括游戏的整体框架、
随机
生成
起点
与
终点
并确保可达性的算法、求解最短
路径
的方法以及
路径
可视化展示。通过深度优先搜索算法确定最短
路径
,并在游戏界面上显示出来。
基于A星和dijkstra算法的障碍物规避matlab仿真,可以设置行列数,
随机
产生
障碍物
该博客介绍了Dijkstra算法的原理及MATLAB实现。通过MATLAB代码展示了如何在
随机
生成的地图上寻找从
起点
到
终点
的最短
路径
,包括地图生成、
路径
搜索及动态显示过程。
自动驾驶算法(三):RRT算法讲解与代码实现(基于采样的
路径
规划)
本文主要介绍了RRT算法,即快速扩展
随机
树算法。阐述了其原理,通过
随机
采样、树生长等步骤寻找
起点
到
终点
的
路径
。还对算法代码进行解析,包括节点类、准备工作、导航参数等,最后给出了完整代码,该算法在自动驾驶等领域有应用。
数据结构与算法
33,026
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章