친구는 캐나다 북쪽 다음 겨울 방학에 깊은 작은 마을에 여행을 계획하고 있습니다. 그들은 모든 여행 옵션을 연구했고 노드가 중개 목적지를 나타내는 지시 된 그래프를 작성했으며 가장자리는 사이의 재로드를 나타냅니다. 이 과정에서 극단적 인 날씨로 인해이 부분의 도로에서 도로가 발생하여 겨울이 매우 느려지고 큰 여행 지연이 발생할 수 있음을 알게되었습니다. 그들은 도로를 따라 얼마나 빨리 이동할 수 있는지 예측할 수있는 우수한 여행 웹 사이트를 발견했습니다. 그러나 여행의 속도는 연중 시간에 따라 다릅니다. 더 정확하게, 웹 사이트는 다음과 같은 형식의 질의 응답 : U를 = (유, v)를 이 두 사이트 U와 V를 연결하는 에지 전자 주어진 위치에서 제안 된 시작 시간 (T)를 주어진 사이트는 값을 반환합니다 FE (t), V의 예상 도착 시간. 웹 사이트는 보장이 FE (t)> 모든 에지 e와 모든 시간 t (당신이 시간에 뒤로 여행 할 수 없음), 그 철에 대한 t (t)는 t의 단조 증가 함수입니다 (즉, 나중에 을 시작하여 일찍 도착하지 않습니다). 그것 이외의 함수 fe는 임의적 일 수 있습니다. 예를 들어, 여행 시간은 계절에 따라 변화하지 않는 지역에서, 우리는 철 (t) =의 t + e, where
전자는 에지 전자의 처음부터 끝까지 여행하는 데 필요한 시간이있을 것입니다. 친구가 웹 사이트를 사용하여 방향성 그래프를 시작 지점에서 원하는 목적지까지 가장 빨리 이동하는 방법을 결정하려고합니다. (당신은 그들이 시간 0에서 시작 을 가정해야하고 웹 사이트에 의해 만들어진 모든 예측이 완전히 올바른 있음.) 우리가 에 웹 사이트를 하나의 쿼리를 치료하는이 작업을 수행하는 다항식 시간 알고리즘을 부여 (기반 특정 에지 e 및 시간 t)를 단일 계산 단계를 취하는 것으로 가정한다.Dyanmic 최단 경로
def updatepath(node):
randomvalue = random.randint(0,3)
print(node,"to other node:",randomvalue)
for i in range(0,n):
distance[node][i] = distance[node][i] + randomvalue
def minDistance(dist,flag_array,n):
min_value = math.inf
for i in range(0,n):
if dist[i] < min_value and flag_array[i] == False:
min_value = dist[i]
min_index = i
return min_index
def shortest_path(graph, src,n):
dist = [math.inf] * n
flag_array = [False] * n
dist[src] = 0
for cout in range(n):
#find the node index that have min cost
u = minDistance(dist,flag_array,n)
flag_array[u] = True
updatepath(u)
for i in range(n):
if graph[u][i] > 0 and flag_array[i]==False and dist[i] > dist[u] + graph[u][i]:
dist[i] = dist[u] + graph[u][i]
path[i] = u
return dist
Dijkstra 알고리즘을 적용했지만 올바르지 않습니까? 동적 인 가장자리를 변경하기 위해 알고리즘을 변경하려면 어떻게해야합니까? 함수가 단조 증가 것을
우리가 분석 할 수있는 전체 문제 설명을 붙여 넣지 말고 직면 한 문제에 대한 간결하고 정확한 설명과 해결 방법을 제공하십시오. 게시 된 코드와 주석에는 아무런 배경이 없기 때문에 성취하려는 것을 따라하기가 어렵습니다. – jdehesa
문제는 친구들이 소풍을 나가기를 원하며 서로 다른 도시를 여행하고 있다는 것입니다. 비용은 한 도시에서 다른 도시로 이동하는 데 걸리는 시간입니다. 그러나 경로가 변하기 때문에 비용이 변하는 계절적 영향이 있습니다. 그러나 dijakstra는 정적 그래프 작업입니다. –
아니요. 문제는 가중치가있는 그래프를 사용하고 두 노드 사이의 최단 경로를 찾으려는 것입니다. 경로의 각 가장자리의 가중치 (예 : 양수 및 단조 함수)가 중요합니다. 이전 가장자리의 합계 가중치. – jdehesa