9 #include "SolverConfig.h"
10 #include "NavGraphConnectionCache.h"
11 #include "SearchNodePriorityComparer.h"
21 namespace NavGraphConforming
29 virtual bool TrySolve(std::vector<const Candidate*>& solution);
34 typedef std::vector<Candidate*> TCandidatesInner;
35 typedef std::vector<const CandidateSet*> TCandidatesOuter;
39 void BuildSolutionOutput(
SolverNode* goalNode, std::vector<const Candidate*>& solutionSelectedCandidates);
41 float GetH(
const Candidate& candidate)
const;
43 void CreateDuplicatedCandidates(
const std::vector<const CandidateSet*>& originalCandidates, std::vector<const CandidateSet*>& out_duplicatedCandidates, std::vector<int>& out_candidatesToOriginalCandidates)
const;
45 void DestroyDuplicatedCandidates(std::vector<const CandidateSet*>& duplicatedCandidates)
const;
47 bool PassesPreconditions()
const;
49 int CountUniqueRoads(
const std::vector<Candidate*>& inner)
const;
51 bool TryPrecalcCandidatesH();
57 bool HasNonContiguousRoadSequence(
const SolverNode& lastNode)
const;
63 bool IsValidCandidateExtension(
const SolverNode& node);
69 const TCandidatesOuter& m_originalCandidates;
73 std::vector<int> m_candidatesToOriginalCandidates;
75 std::vector<float> m_candidatesH;
76 TCandidatesOuter m_candidates;
78 typedef Eegeo::unordered_set<const Candidate*>::type TClosedSet;
79 TClosedSet m_closedSet;
81 typedef Eegeo::unordered_map<const Candidate*, SolverNode*>::type TCandidateToOpen;
82 TCandidateToOpen m_candidateToOpenNodes;