Python方法RSBF
我不知道为什么我的代码是无限循环的 我有一个启发式的方法来计算马纳坦的距离Python方法RSBF,python,Python,我不知道为什么我的代码是无限循环的 我有一个启发式的方法来计算马纳坦的距离 def RSBF(a,limite): if heuristique(a)==0: return a fils=creer_fils(a) #fils_2=copy.deepcopy(fils) if len(fils)==0: return 0,limite V=[] #fils_2.remove(min(fils_2)) f
def RSBF(a,limite):
if heuristique(a)==0:
return a
fils=creer_fils(a)
#fils_2=copy.deepcopy(fils)
if len(fils)==0:
return 0,limite
V=[]
#fils_2.remove(min(fils_2))
for succ in fils :
sc=heuristique(succ)
k=max(sc+1,heuristique(a))
V.append(k)
while True:
succmeilleur=[meilleur_successeur(fils),min(V)]#the best node et values
#print(heuristique(succmeilleur))
if succmeilleur[1] >= limite:
return 0,succmeilleur[1]
#l=copy.deepcopy(min(V))
valeur_v=V[deuxieme_valeur(V,V.index(min(V)))]#return the second lowest values
resultat,succmeilleur[1]=RSBF(succmeilleur[0],min(limite,valeur_v))
if resultat!=0:
return resultat
如果不确切知道
heuristique
和其他方法是如何工作的,那么这段代码就有点难以诊断。特别是因为我不知道如何用数学的方法来试探性地计算这样的东西
然而,很明显,while True
循环中发生了两件事:
从来都不是>=succmeilleur[1]
limite
永远不会达到比min(V)
更大的目标。当您这样做时:limite
sc=heuristique(succ) k=max(sc+1,heuristique(a)) V.append(k)
的创建方式应确保V
的最小值永远不会大于V
。确保limite
在每个循环中返回正确的列表,我认为这是一个列表,其中V
的最小值一直接近极限V
始终=0 这意味着resultat
永远不会返回非0的内容。换句话说,您应该查看meilleur\u successeur(fils)
,并确保它总是从meilleur\u successeur
获得最佳的继任者fils
a
和limite
的多个值?这可能会影响人们给你的答案。a是一个矩阵,limit是一个无穷大的值(最大值)。StackExchange不鼓励用英语以外的语言发布,所以尽管我有这个答案的法文翻译,但我不会公开发布。Heuristique计算曼哈顿距离