2010-04-09 5 views
5

부스트 그래프 라이브러리를 사용하여 다양한 네트워크 문제에 적용하기 위해 조사하고 있습니다. 내가하려고하면그래프 라이브러리 부스트 : 가장자리 가중치 설정

int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 }; 

내 문제 : 나는 그래프 에지 값 ("가중치")에서보고 된 예에서

는 항상 이들 Bellman-FordKruskal 알고리즘 예에서와 같이 정수로 초기화된다 가중치를 두 배로 변경하면 변환에 대한 경고 메시지가 표시됩니다. 지금까지는이를 극복하는 방법을 찾을 수 없었습니다.

누구든지이 문제를 해결할 방법이 있습니까?

답변

6

부스트 그래프/알고리즘에 의해 에지 가중치에 사용 된 유형과 weights[] 배열 사이의 불일치로 인해 발생합니다.

예를 들어, 첫 번째 연결 샘플에서

, 당신은 또한

struct EdgeProperties { 
    int weight; 
}; 
[...] 
property_map<Graph, int EdgeProperties::*>::type 

두 번째

typedef adjacency_list < vecS, vecS, undirectedS, 
    no_property, property < edge_weight_t, int > > Graph; 

에서

struct EdgeProperties { 
    double weight; 
}; 
[...] 
property_map<Graph, double EdgeProperties::*>::type 

을 변경해야

typedef adjacency_list < vecS, vecS, undirectedS, 
    no_property, property < edge_weight_t, double > > Graph; 
+0

안녕하세요 코드는 해당 링크에서 볼 수 있습니다. bellman-example.cpp 및 kruskal-example.cpp – AndyUK

+0

이를보고 이에 따라 답변을 업데이트했습니다. – baol

+0

두 번째에 대한 제안 (Kruskal)이 효과가있었습니다. 벨맨의 장애물을 아직 극복 할 수는 없습니다. – AndyUK

관련 문제