多张图上面有N多个点,不同的点之间有连线相连,一个点可能连接多个不同的点!
现在,给定两个任意的点,如何确定他们是否相连?如果相连,如何得到经过的路径(就是经过那些点)?

解决方案 »

  1.   

    判断相连很简单,就是往一个空集合里加点,从A点出发,先把A加到集合里,
    如果一个点与集合中的任何一个点相连则如果它不在集合中,就加入集合,最后看B点在不在集合中就知是否相连了。路径问题就麻烦些了。
      

  2.   

    我想路径的一种可能的算法(我灵感一现想起来了)是(一般不是量佳的):
    以上过程的逆过程,
    A与B相连,则在一个集合中,
    1、现从集合中取出B,先判断它与A是否直接相连,如果是,则转5、完成
    2、从集合中取出一个与取出点直接相连的点;
    3、如果取出点与A相连,则转5、完成;
    4、否则转2
    5、完成。
      

  3.   

    !!!!
    算法都给出了还不具体????
    判断与路径同时求得:
    定义一个点集合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,这就是找到的一条路。