寻找路径问题 多张图上面有N多个点,不同的点之间有连线相连,一个点可能连接多个不同的点!现在,给定两个任意的点,如何确定他们是否相连?如果相连,如何得到经过的路径(就是经过那些点)? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 判断相连很简单,就是往一个空集合里加点,从A点出发,先把A加到集合里,如果一个点与集合中的任何一个点相连则如果它不在集合中,就加入集合,最后看B点在不在集合中就知是否相连了。路径问题就麻烦些了。 我想路径的一种可能的算法(我灵感一现想起来了)是(一般不是量佳的):以上过程的逆过程,A与B相连,则在一个集合中,1、现从集合中取出B,先判断它与A是否直接相连,如果是,则转5、完成2、从集合中取出一个与取出点直接相连的点;3、如果取出点与A相连,则转5、完成;4、否则转25、完成。 !!!!算法都给出了还不具体????判断与路径同时求得:定义一个点集合SetPoint,定义一个线段集合SetLine,1、开始,两集合为空;2、把开始点A加入点集合,3、拿出一个点PX4、如果此点不在SetPoint 则以下判断;5、查看PX与SetPoint的点是否直接相连,6、只要有一点PC与PX相连则把PC加入到SetPoint,把线(PC,PX)加入到SetLine,我们这里定义PC为PX的前导;同时不再判断SetPoint中的其它点是否与PX相连7、PX是要判断的B点吗?如果是则10;8、所有点判断完成了吗?如果没有,则转3;否则结论:A与B不相连10、A到B点有一通路,路径为:在SetLine中从B开始找前导,必然最后找到A,这就是找到的一条路。 delphi7 ,ado连接SQLServer 2012的问题 delphi写的服务器版用winsocket接收信息很慢的问题 控制TIF文件 显示, 放大等操作的用什么? 一种奇怪的定义,请进 关于发送邮件的简单问题 SQL数据库的问题 Listview下如何刷新数据 急!!!可以在delphi中直接调用access提供的报表功能吗?谢谢! 请问如何在 IntraWeb 中显示一个网叶 菜青虫的困难,大伙帮忙! 如何能知道正在运行的程序的硬盘路径? 菜鸟在线求一个怪问题
如果一个点与集合中的任何一个点相连则如果它不在集合中,就加入集合,最后看B点在不在集合中就知是否相连了。路径问题就麻烦些了。
以上过程的逆过程,
A与B相连,则在一个集合中,
1、现从集合中取出B,先判断它与A是否直接相连,如果是,则转5、完成
2、从集合中取出一个与取出点直接相连的点;
3、如果取出点与A相连,则转5、完成;
4、否则转2
5、完成。
算法都给出了还不具体????
判断与路径同时求得:
定义一个点集合SetPoint,定义一个线段集合SetLine,
1、开始,两集合为空;
2、把开始点A加入点集合,
3、拿出一个点PX
4、如果此点不在SetPoint 则以下判断;
5、查看PX与SetPoint的点是否直接相连,
6、只要有一点PC与PX相连则把PC加入到SetPoint,把线(PC,PX)加入到SetLine,我们这里定义PC为PX的前导;同时不再判断SetPoint中的其它点是否与PX相连
7、PX是要判断的B点吗?如果是则10;
8、所有点判断完成了吗?如果没有,则转3;否则结论:A与B不相连10、A到B点有一通路,路径为:在SetLine中从B开始找前导,必然最后找到A,这就是找到的一条路。