가중치 그래프에서 최단 경로를 찾으려면 경로가 일부 매개 변수 (1000이라고 가정) 미만의 총 거리를 가져야한다는 제한 조건을 고려하십시오.그래프에서 제약 조건을 만족하는 최단 경로를 찾는 방법
다음과 같이 시도했지만 내 코드가 잘못된 이유를 알지 못합니다.
def directedDFS(digraph, start, end, maxTotalDist):
visited = []
if not (digraph.hasNode(start) and digraph.hasNode(end)):
raise ValueError('Start or end not in graph.')
path = [str(start)]
if start == end:
return path
shortest = None
for node in digraph.childrenOf(start):
if (str(node) not in visited):
visited = visited + [str(node)]
firststep_distance = digraph.childrenOf(start)[node][0]
firststep_outer_distance = digraph.childrenOf(start)[node][1]
if (firststep_distance <= maxTotalDist):
newPath = directedDFS(digraph, node, end, maxTotalDist-firststep_distance)
if newPath == None:
continue
if (shortest == None or TotalDistance(digraph,newPath) < TotalDistance(digraph,shortest)):
shortest = newPath
if shortest != None:
path = path + shortest
else:
path = None
return path
또 다른 것은
내가 지정된 노드에서 시작하는 경로의 거리를 기준으로하지만, 원래의 시작 지점에서 전체 경로의 거리를 기준으로 비교할 없다는 것입니다. 그래도 내가 할 수있는 최선의 방법은 모르겠지만.
당신은 홉의 수 또는 거리 (후자는 사소한 것이기 때문에 나는 그것이 이전 것임을 짐작하고있다)에 관하여 가장 짧은 것을 의미합니까? – NPE
전체 경로 비용 (가장자리 무게의 합)이 1000보다 작은 경우 가장 적은 가장자리를 포함하는 경로를 찾으려고합니까? –