public IEnumerable <Route> Handle(CostProblem costProblem)
 {
     if (costProblem.Algorithm == "Dijkstra")
     {
         return(DijkstraCostAlgorithm.Solve(costProblem.Graph, costProblem.Graph.GetByName(costProblem.From), costProblem.Graph.GetByName(costProblem.To)));
     }
     return(Next != null?Next.Handle(costProblem) : null);
 }
Esempio n. 2
0
 public IEnumerable <Route> TrySolve(CostProblem problem)
 {
     return(new DFS().Solve(
                problem.Graph,
                problem.Graph.GetByName(problem.From),
                problem.Graph.GetByName(problem.To)
                ));
 }
Esempio n. 3
0
 public IEnumerable <Route> Visit(CostProblem costProblem)
 {
     if (costProblem.Algorithm == this.description)
     {
         costProblem.Solved = true;
     }
     return(this.costAlgorithm.Solve(costProblem.Graph, costProblem.Graph.GetByName(costProblem.From), costProblem.Graph.GetByName(costProblem.To)));
 }
Esempio n. 4
0
 public IRouteProblem GetProblem(Request request, IGraphDatabase database)
 {
     if (request.Problem == "Cost")
     {
         IRouteProblem problem = new CostProblem(request.From, request.To);
         problem.SetGraph(database);
         return(problem);
     }
     return(null);
 }
        public IRouteProblem Apply(Request request)
        {
            IRouteProblem problem = null;

            if (Next != null)
            {
                problem = Next.Apply(request);
            }
            if (problem == null && request.Problem == "Cost")
            {
                problem = new CostProblem(request.From, request.To, request.Solver);
            }

            return(problem);
        }
 public override IEnumerable <Route> Solve(Request request, IRouteProblem problem, IGraphDatabase database)
 {
     if (NextInChain == null)
     {
         return(null);
     }
     if (request.Problem == "Cost")
     {
         IRouteProblem newproblem = new CostProblem(request.From, request.To);
         newproblem.Graph = database;
         return(NextInChain.Solve(request, newproblem, database));
     }
     else
     {
         return(NextInChain.Solve(request, problem, database));
     }
 }
 public override bool TrySolveProblem(CostProblem costProblem, out IEnumerable <Route> routes)
 {
     routes = Solve(costProblem.Graph, costProblem.Graph.GetByName(costProblem.From), costProblem.Graph.GetByName(costProblem.To));
     return(true);
 }
 public abstract bool TrySolveProblem(CostProblem costProblem, out IEnumerable <Route> routes);
 public override bool TrySolveProblem(CostProblem timeProblem, out IEnumerable <Route> routes)
 {
     routes = null;
     return(false);
 }
Esempio n. 10
0
 public bool CanSolve(CostProblem problem)
 {
     return(false);
 }
Esempio n. 11
0
 public bool CanSolve(CostProblem problem)
 {
     return(true);
 }