Verwenden von Paketeigenschaften als Gewichtungskarte in dijkstra_shortest_paths

8

Vielleicht ist das eine blöde Frage, aber ich versuche, BGLs dijkstra_shortest_paths zu verwenden, und insbesondere ein Feld meiner gebündelten Edge-Eigenschaft als Gewichtsmap zu verwenden. Meine Versuche haben derzeit zu Dutzenden von Compilerfehlern geführt, daher hoffe ich, dass jemand weiß, wie er mir helfen kann. Das ist im Wesentlichen, wie mein Code aussieht:

%Vor%

Ich kann die Grafik ohne Probleme füllen, aber wenn ich dijkstra_shortest_paths aufrufen muss, bekomme ich Ärger. Ich möchte das Feld length verwenden. Genauer gesagt, würde ich gerne wissen, was für ein Boost-Voodoo nötig ist, um bei einem Anruf wie diesem fit zu werden:

%Vor%

so dass wightmap irgendwie eine bestimmte Kante meines Graphen mit dem entsprechenden length Feld in der Eigenschaft assoziiert. Ich bin mir sicher, dass es einen einfachen Weg dafür gibt, aber die Dokumentation für BGL ist für mich unglaublich undurchsichtig. Wenn Sie mir sagen können, wo in der Dokumentation das Beispiel beschrieben wird, wäre ich auch sehr glücklich.

Vielen Dank im Voraus!

    
Carlos Scheidegger 20.08.2010, 00:18
quelle

3 Antworten

11

Falls jemand sich darum kümmert, scheint die Verwendung der benannten Parameterversion des Aufrufs wie folgt funktioniert zu haben:

%Vor%

Dies ist in der Dokumentation hier . Ich weiß jedoch immer noch nicht, wie ich die "nicht benannte Parameter" -Version des Anrufs verwenden soll.

    
Carlos Scheidegger 20.08.2010, 00:31
quelle
6

Ok, ich habe einfach zu viel Zeit mit diesem Problem verschwendet. Hier ist die Lösung für die Nachwelt:

%Vor%

Im Ernst, diese Bibliothek ist großartig, aber die Dokumentation ist definitiv fehlt. Dies sollte eine triviale Angelegenheit sein.

BEARBEITEN

Wenn Sie C ++ 11 verwenden, bevorzugen Sie möglicherweise die folgende Alternative.

%Vor%     
user1661473 11.09.2012 00:44
quelle
6

So mächtig das BGL auch sein mag, es ist leider nicht so einfach, es in meiner ehrlichen Meinung zu verwenden. Um dies zum Laufen zu bringen, mussten wir einige Versuche durchführen, aber hier ist eine funktionierende Version, die mit Boost 1.53.0 kompiliert wurde [wir möchten Dijkstras Algorithmus für die Variable 'rate' in __edge_data] verwenden:

%Vor%

Ich hoffe aufrichtig, dass dies hilft! Mein Versuch hier war es, zu zeigen, wie man auf alle Hauptfunktionen zugreifen kann, die für den Algorithmus verfügbar sind.

    
user2587407 16.07.2013 12:58
quelle

Tags und Links