DistanceApproach.h
Go to the documentation of this file.
1 #pragma once
2 #include "EdgePoint.h"
3 #include "RichModel.h"
4 #define __int64 int64_t
6 {
7 protected:
8  vector<double> m_scalarField;
9  double m_maxDisValue;
10  double m_radius;
11  const CRichModel& model;
12  map<int, double> m_sources;
13  set<int> m_destinations;
17 
19 protected:
20  virtual void Initialize() = 0;
21  virtual void Dispose() = 0;
22  virtual void Propagate() = 0;
23  virtual void CollectExperimentalResults() = 0;
24 public:
25  double m_memory;
26  CDistanceApproach(const CRichModel& model, int source);
27  CDistanceApproach(const CRichModel& model, int source, int destination);
28  CDistanceApproach(const CRichModel& model, int source, double R);
29  CDistanceApproach(const CRichModel& model, const map<int, double>& sources);
30  CDistanceApproach(const CRichModel& model, const map<int, double>& sources, const set<int> &destinations);
31  CDistanceApproach(const CRichModel& model, const set<int>& sources);
32  CDistanceApproach(const CRichModel& model, const set<int>& sources, double R);
33  CDistanceApproach(const CRichModel& model, const set<int>& sources, const set<int>& destinations);
34 public:
35  virtual void Execute();
36  virtual vector<EdgePoint> BacktraceShortestPath(int end) const = 0;
37  vector<EdgePoint> BacktraceIsoline(double val) const;
38  virtual int GetAncestor(int vIndex) const = 0;
39  double GetMaxDistance() const;
40  virtual __int64 GetMaxLenOfQueue() const{return m_maxLenOfQueue;}
42  string GetAlgorithmName() const;
44  double GetMemoryCost() const {return m_memory;}
45  virtual void OutputExperimentalResults() const;
46  const vector<double>& GetDistanceField() const;
47  //vector<double> GetNormalizedDistanceField() const;
48  //vector<double> GetDistanceFieldDividedBy(double denominator) const;
49  static vector<double> DiffDistanceField(const vector<double>& field1,
50  const vector<double>& field2);
51 };
52 
53 template<class T>
54 pair<double, vector<EdgePoint>> GetShortestPathBetween(const CRichModel& model, int source, int end)
55 {
56  set<int> sources;
57  sources.insert(source);
58  set<int> destinations;
59  destinations.insert(end);
60 
61  T alg(model, sources, destinations);
62  alg.Execute();
63  return make_pair(alg.GetDistanceField()[end], alg.BacktraceShortestPath(end));
64 }
65 
66 template<class T>
67 double GetShortestDistanceBetween(const CRichModel& model, int source, int end)
68 {
69  set<int> sources;
70  sources.insert(source);
71  set<int> destinations;
72  destinations.insert(end);
73 
74  T alg(model, sources, destinations);
75  alg.Execute();
76  return alg.GetDistanceField()[end];
77 }
string GetAlgorithmName() const
virtual vector< EdgePoint > BacktraceShortestPath(int end) const =0
pair< double, vector< EdgePoint > > GetShortestPathBetween(const CRichModel &model, int source, int end)
vector< double > m_scalarField
map< int, double > m_sources
__int64 m_nTotalMilliSeconds
const vector< double > & GetDistanceField() const
virtual void Dispose()=0
virtual void Execute()
virtual void CollectExperimentalResults()=0
virtual void Propagate()=0
virtual __int64 GetMaxPropagationLevels() const
virtual void Initialize()=0
double GetMaxDistance() const
virtual __int64 GetMaxLenOfQueue() const
virtual void OutputExperimentalResults() const
double GetShortestDistanceBetween(const CRichModel &model, int source, int end)
__int64 GetRunTime() const
set< int > m_destinations
static vector< double > DiffDistanceField(const vector< double > &field1, const vector< double > &field2)
const CRichModel & model
vector< EdgePoint > BacktraceIsoline(double val) const
virtual int GetAncestor(int vIndex) const =0
CDistanceApproach(const CRichModel &model, int source)
#define __int64
__int64 m_depthOfResultingTree
double GetMemoryCost() const


co_scan
Author(s):
autogenerated on Mon Feb 28 2022 23:00:41