00001 #ifndef ROUTEPLANNING_MULTICRITERIADEPENDENTDIJKSTRA_H_
00002 #define ROUTEPLANNING_MULTICRITERIADEPENDENTDIJKSTRA_H_
00003
00004 #include <queue>
00005 #include <utility>
00006 #include <vector>
00007 #include <string>
00008 #include <functional>
00009 #include "./TransitNetworkDependent.h"
00010 #include "./EdgeDependent.h"
00011 #include "./Label.h"
00012 #include "./TransitPath.h"
00013 using std::string;
00014 using std::pair;
00015 using std::vector;
00016 class MulticriteriaDependentDijkstra
00017 {
00018 public:
00019 MulticriteriaDependentDijkstra(TransitNetworkDependent* roadNetwork);
00020
00021
00022 double computeShortestPath(string startStop, Time time,
00023 string endStop, bool buildPath);
00024 FRIEND_TEST(MulticriteriaDependentTest, computeShortestPath);
00025
00026 double computeShortestPath(int startId, Time startTime,
00027 int stopId, bool buildPath);
00028
00029
00030 vector <string> transitShortestPath;
00031 vector<TransitPath> optimalPaths;
00032 size_t exploredNodes;
00033 int transferMax;
00034 int timeMax;
00035 private:
00036
00037 void reconstructShortestPath(const Time& startTime,
00038 size_t startId,
00039 size_t endId);
00040 TransitNetworkDependent* _tranGraph;
00041 bool _endStopFound;
00042 int _endStopId;
00043 int _endId;
00044 vector <Label> labels;
00045 vector <LabelSet> labelSets;
00046 };
00047 #endif // ROUTEPLANNING_MULTICRITERIADEPENDENTDIJKSTRA_H_