最佳路径搜索算法

算法,就是(结合各种数学知识)解决问题的有限步骤,可以表现为程序、流程图。

假设要寻找一条路径,从起点S,终点G。

有几个关键原则:

1. 路径的下一个节点,不能和以往节点相同,否则会造成死循环。

2. 所有“待选”,“待算”路径,放在一个列表中;

OK,现在可以假设,有基础数据,各个点的坐标:

struct Point {

  char ID;

  double x;

  double y;

}

各个可走路径的长度

struct distance

{

  char Id1;

  char id2;

  double lenght;

}

那么,我们想要的结果,是:

struct Path {

  List<int> Ids; //一个有序的节点集合


british museum算法

这个算法,说白了就是构造一颗树,没什么目的的构造,造到死胡同为止,最后看看那条包含S和G

要实现这个算法,需要两个列表,一个存放所有走到死胡同的路径R,一个存放还没走到死胡同的路径T。

被划去的路径,例如:在上一步演变到下一步中划去的。

算法开始:

1.  T:(S)   R:空

2.  T:(S,A),(S,B)  R:空

3.  T:(S,A,B),(S,A,D),(S,B)  R:空

4.  T:(S,A,B,C),(S,A,D),(S,B)  R:空

5.  T:(S,A,B,C,E),(S,A,D),(S,B)  R:空

6.  T:

猜你喜欢

转载自www.cnblogs.com/pylblog/p/10287740.html
今日推荐