|
发表于 2020-5-30 19:34:37
|
显示全部楼层
给点思路,感觉要说明白也不容易:
得到线路,加入线路列表,然后起点终点调换也是一条线路,也就是给定线路加一倍
然后找出某城市出发的所有线路:城市,使用线路号
然后就是搜索:
第一个点当然是起点,
加入搜索队列[起点]:上次搜索结束位置0,本次结束位置1
然后找出起点的所有连接点加入队列,比如这个数据下,有三条线路,加入队列:上次搜索结束位置1,本次结束位置4
然后针对新增加的三个全部搜索,节点再次加入队列:然后每一步都是对上一步新发展出来的节点再发展
过程中需要注意:
*到达已经搜索过的节点,比如:0->1->0,这首先是做了已访问标记的,
后来路径再次到达已访问节点,就会和上次所需距离作比较,
如果是好的路径,就用这次的。
*没有访问过的节点,当然是加入搜索队列
*已经到达目标,就把这条线路保存
- #################线路列表
- <0>0 -> 1: 里程10, 费用20
- <1>1 -> 3: 里程20, 费用30
- <2>0 -> 3: 里程40, 费用10
- <3>0 -> 2: 里程20, 费用20
- <4>2 -> 3: 里程10, 费用20
- <5>0 -> 4: 里程2, 费用20
- <6>4 -> 5: 里程3, 费用20
- <7>5 -> 2: 里程3, 费用20
- <8>1 -> 0: 里程10, 费用20
- <9>3 -> 1: 里程20, 费用30
- <10>3 -> 0: 里程40, 费用10
- <11>2 -> 0: 里程20, 费用20
- <12>3 -> 2: 里程10, 费用20
- <13>4 -> 0: 里程2, 费用20
- <14>5 -> 4: 里程3, 费用20
- <15>2 -> 5: 里程3, 费用20
- #################某城市出发的所有线路:城市,使用线路号
- 0 [0, 2, 3, 5]
- 1 [1, 8]
- 2 [4, 11, 15]
- 4 [6, 13]
- 5 [7, 14]
- 3 [9, 10, 12]
复制代码 |
|