2011-11-16 4 views
2

무향 그래프 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, 최적의 솔루션이다.

모든 알고리즘은 무엇입니까?

+0

전혀 시도한 적이 있습니까? 숙제 냄새가납니다. – Blender

+0

아니요, 숙제가 아니기 때문에 건설적인 해결책이 있는지 또는 '무차별 대항'검색을해야하는지는 알 수 없습니다. –

+0

좋아, 그냥 "그래프에서 간단한 경로 커버"라는 유용한 문서를 찾았습니다 –

답변

2

@RafalDowgird가 설명한 바와 같이 한 경로가 충분하면 Hamiltonian Path ProblemNP-Hard이며 이러한 문제에 대한 알려진 다항식 알고리즘은 없습니다.

  1. 사용 heuristical 솔루션, 최적화되지 않을 수 있습니다

    이 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 
    

    옵션이의 순진 되돌아 솔루션

    될 것입니다 : 당신이 욕심이 솔루션을 시도해 볼 수도 있습니다, [예 알고리즘은 첨부]
  2. 사용 지수 솔루션 등 backtracking 옵션 하나

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!))이므로 최적화 된 것이지만 실용적이지 않습니다.

+0

당신이 말했듯이이 문제 자체는 NP 하드이므로 대신 heuristical 알고리즘을 찾아야합니다 ~ –

관련 문제