我正在尝试创建一个函数来在有向图中找到最高分。我确实有一个起始节点,不能两次通过同一个节点。我尝试使用递归来获取值的总和,直到我到达一个末端节点。然后我会将我的函数回调到起始节点并尝试其他选项,直到我遇到另一个选项。等等。
我的问题是,当我返回具有多个路径的节点时,该节点的得分值是它可以采用的所有路径的总和。我只想要一条特定路径的总和。
到目前为止,这是我的代码:
caminho = list()
def maxscore(start, parentals, score):
global caminho
parentals += start + '|'
if len(graph[start]) > 0:
for i in graph[start]:
if i not in parentals.split('|'):
value = graph[start][i]
if value:
score += value
func = maxscore(i, parentals, score)
else:
continue
if func[0] > score:
score = func[0]
caminho = parentals.split('|')
return score, caminho
else:
return score, start
graph = {
'a': {'b': 2, 'c': 4},
'b': {'d': 5},
'c': {'a': 1, 'e': 3},
'd': {'f': 4},
'e': {'b': 2, 'f': 3, 'g': 2},
'f': {},
'g': {}
}
print(maxscore('a', '', 0))
我怎样才能让它最终只用它所走的路径(caminho)返回最好的分数。
对不起,如果我不能让自己足够清楚。随意问任何问题。