2015-02-03 5 views
-1
이 같은 가득 큰 그래프와 함께 프로젝트를 가지고

계산 :부스트 :: 그래프 내 사용자 정의 그래프를 싸서 dijkstra_shortest_paths

struct EdgeItem{ 
    int mPid1; 
    int mPid2; 
    double weight; 
}; 
struct StationItem{ 
    int mPid; 
    QString mName; 
}; 
QMap<int, StationItem> StationsMap; 
QList<EdgeItem> mEdgesList; 
QVector<EdgeItem*> GetEdgesByPid(int Pid); 
// and some other service methods 

스테이션은 pid로 색인지도. MapLayerEdgeItem과 같은 그래프의 가장자리에는 가중치가 있습니다. 그래프의 데이터를 복사하거나 기존 구조를 사용할 필요가 없습니다. 나는 그것을 실행하고 dijkstra_shortest_paths를 계산할 필요가있다. 제가 시작해야 할 것을 제안하십시오.

+0

[문서] (http://www.boost.org/doc/libs/1_57_0/libs/graph/doc/dijkstra_shortest_paths.html) 및 [예] (http://www.boost.org/)를 참조하십시오. doc/libs/1_57_0/libs/graph/example/dijkstra-example.cpp) – pbible

+0

"Nix 프로그래머에게 화장지를 요청하면 도끼를주고 가장 가까운 숲을 보여줍니다." 부스트 워드 그래프와 함께 제공되는 예제는 매우 단순하며 모든 상황을 포함하지는 않습니다. 간단한 배열을 사용하여 샘플을 링크했습니다. 데이터를 다른 형식으로 복사하지 않고도 QMap 및 QList를 사용해야합니다. 고맙습니다. –

+0

당신은 내가 시작해야 할 것을 제안 해 주시기 바랍니다. 나는 문서들과 예제가 훌륭한 곳이라고 생각한다. 내장 알고리즘을 사용하려면 부스트 그래프 인터페이스를 사용해야합니다. Dijkstra는 구현하기가 어렵지 않습니다. 내가 너라면 나 자신을 굴릴거야. 그렇지 않으면 인터페이스에 구조를 적용해야합니다. – pbible

답변

2

먼저 그래프를 부스트 그래프 라이브러리 (BGL) 인터페이스에 적용해야합니다. 코멘트에서 언급 한대로 question 부스트의 how to convert existing graphs 링크.

정말 두 가지 질문을하는 것 같습니다. 그래프 표현을 BGL에 어떻게 적용합니까? 어떻게 부스트에서 Dijsktra를 수행하고 (의미를 추출합니까?)

BGL에 익숙하지 않은 경우 두 가지가 모두 중요하지 않습니다. 어댑터에 착수하여 문제가 생길 때 좀 더 구체적인 질문을 해보십시오.

필요한 경우 Djikstra가 필요하면 직접 구현을 사용하는 것이 좋습니다. 다른 BGL 기능을 사용한다고 생각되면 어댑터가 필요합니다.