무향 그래프 G가 주어지면 모든 가장자리를 간단한 경로로 최소화하고 싶습니다. A--C--D--F--G , B--C , E--F
없는 반면 예단순 경로 수가 가장 적은 무향 그래프의 모든 가장자리를 덮으십시오.
이 같은 그래프,
B E
| |
A--C--D--F--G
A--C--D--F--G, B--C--D--F--E
, 최적의 솔루션이다.
모든 알고리즘은 무엇입니까?
무향 그래프 G가 주어지면 모든 가장자리를 간단한 경로로 최소화하고 싶습니다. A--C--D--F--G , B--C , E--F
없는 반면 예단순 경로 수가 가장 적은 무향 그래프의 모든 가장자리를 덮으십시오.
이 같은 그래프,
B E
| |
A--C--D--F--G
A--C--D--F--G, B--C--D--F--E
, 최적의 솔루션이다.
모든 알고리즘은 무엇입니까?
@RafalDowgird가 설명한 바와 같이 한 경로가 충분하면 Hamiltonian Path Problem 인 NP-Hard이며 이러한 문제에 대한 알려진 다항식 알고리즘은 없습니다.
이 2 옵션을 남긴다.
while (graph is not covered):
pick arbitrary 2 connected not covered vertices v1,v2
if there are none matching:
choose an arbitrary not covered vertex
add an arbitrary path starting from this vertex
else:
choose the longest simple path from v1 to v2 [can be found with BFS/DFS]
add this path
옵션이의 순진 되돌아 솔루션
될 것입니다 : 당신이 욕심이 솔루션을 시도해 볼 수도 있습니다, [예 알고리즘은 첨부]로
1. find P={all possible paths}
2. create S=2^P //the power set of P
3. chose s in S such that for each s' in S: |s| <= |s'| and both s,s' cover all vertices.
이 솔루션은 O(2^(n!))
이므로 최적화 된 것이지만 실용적이지 않습니다.
당신이 말했듯이이 문제 자체는 NP 하드이므로 대신 heuristical 알고리즘을 찾아야합니다 ~ –
전혀 시도한 적이 있습니까? 숙제 냄새가납니다. – Blender
아니요, 숙제가 아니기 때문에 건설적인 해결책이 있는지 또는 '무차별 대항'검색을해야하는지는 알 수 없습니다. –
좋아, 그냥 "그래프에서 간단한 경로 커버"라는 유용한 문서를 찾았습니다 –