public List <Edge> search(Problem problem)
 {
     switch (problem.Type)
     {
     case ProblemType.SearchShortestPathProblem:
     {
         BidirectionalSearch bs = new BidirectionalSearch();
         return(bs.SynchronousSearch(problem.Graph, problem.Root, problem.Goal).GetShortestPath());
     }
     }
     return(null);
 }
 public List<Edge> search(Problem problem)
 {
     switch (problem.Type)
     {
         case ProblemType.SearchShortestPathProblem:
             {
                 BidirectionalSearch bs = new BidirectionalSearch();
                 return bs.SynchronousSearch(problem.Graph, problem.Root, problem.Goal).GetShortestPath();
             }
     }
     return null;
 }