本帖最后由 java2python 于 2020-5-31 17:12 编辑
比如:比如之前这里先把城市编号0,1,2,3(和编程不同,0开始很违反习惯)。。。改为A,B,C,D,E(城市和路线容易搞混,最好全是分开编号)
加入起始点A,A和B,C,D相连
A->B
A->C
A->D
就像下棋,走一步能够到达的节点,把它放到STEP1l列表
然后是,走两步能到达的节点,放到STEP2
接下来3,4,5。。。就是STEP3,STEP4,STEP5
如果是这样就是手动实现了,
程序操作用循环,当STEPn的列表不为空,就再执行下一步,因为所有下一步,都是前一步再走一步来的
前一步都搜索不到节点,那么自然没有再下一步了。另外程序不会step1->step2->step3->step4->step5
而是始终step0->step1。。。一步走完后(循环完成后),把step1变成step0,STEP1变成空,继续while步骤,直到step1发展不出节点
- while len(step_n0_nodes) > 0:
- step_n0_nodes 所有节点发展下一步,加入step1
-
- step_n0_nodes = step_n1_nodes[:] #下一步step0变成1
- step_n1_nodes.clear() #step1变成空
复制代码
而搜索的起始点,就是第一个step0:
step_n0_nodes = [SRH(SRH.srh_start,-1,-1)]