/// <summary> /// Compare the solvers we created by using the adapter desing pattern between /// the maze and searchable. /// </summary> static void CompareSolvers() { DFSMazeGenerator dfsMaze = new DFSMazeGenerator(); Maze maze = dfsMaze.Generate(100, 100); ISearchable <Position> adapt = new MazeToSearchableAdapter(maze); BFSSearcher <Position> bfs = new BFSSearcher <Position>(); DFSSearcher <Position> dfs = new DFSSearcher <Position>(); //Console.WriteLine(maze); bfs.Search(adapt); Console.WriteLine("Best First Search evaluated {0} nodes.", bfs.GetNumberOfNodesEvaluated()); dfs.Search(adapt); Console.WriteLine("DFS evaluated {0} nodes.", dfs.GetNumberOfNodesEvaluated()); }
public static void CompareSolvers() { DFSMazeGenerator mazeGen = new DFSMazeGenerator(); Maze maze = mazeGen.Generate(10, 10); SearchableMaze sm = new SearchableMaze(maze); Console.WriteLine(maze); BFSSearcher bfs = new BFSSearcher(); DFSSearcher dfs = new DFSSearcher(); Solution BFSSolution = bfs.search(sm); Solution DFSSolution = dfs.search(sm); // Console.WriteLine($"Nodes: {BFSNodes}"); // Console.WriteLine($"Nodes: {DFSNodes}"); int BFSNodes = bfs.getNumberOfNodesEvaluated(); int DFSNodes = dfs.getNumberOfNodesEvaluated(); }
/// <summary> /// Gets the algorithm th solve a maze. /// </summary> /// <param name="algorithm">The algorithm.</param> /// <returns></returns> private static ISearcher <Position> GetAlgorithm(byte algorithm) { ISearcher <Position> searcher; switch (algorithm) { case 0: searcher = new BFSSearcher <Position>(); break; case 1: searcher = new DFSSearcher <Position>(); break; default: throw new ArgumentException(string.Format("Unknown algorithm signifier \"{0}\"", algorithm)); } return(searcher); }
/// <summary> /// Compares the solvers. /// </summary> /// <param name="row">The row.</param> /// <param name="col">The col.</param> public static void CompareSolvers(int row, int col) { DFSMazeGenerator generator = new DFSMazeGenerator(); Maze maze = generator.Generate(row, col); Console.WriteLine(maze.ToString()); ISearchable <Position> searchable = new MazeAdapter(maze); ISearcher <Position> searcher = new BFSSearcher <Position>(); Solution <Position> solution = searcher.Search(searchable); Console.WriteLine("BFS solved the maze with {0} evaluated nodes", searcher.GetNumberOfNodesEvaluated()); searcher = new DFSSearcher <Position>(); solution = searcher.Search(searchable); Console.WriteLine("DFS solved the maze with {0} evaluated nodes", searcher.GetNumberOfNodesEvaluated()); Console.WriteLine(""); }
public override string Execute(string[] args, Socket client = null) { string name = args[0]; int algorithm = int.Parse(args[1]); Maze m = model.GetMazeByName(name); if (m == null) { return("No Such Maze"); } Solution sol = model.GetMazeSolution(name); if (sol == null) { ISearcher searcher; SearchableMaze sm = new SearchableMaze(m); if (algorithm == 1) { searcher = new DFSSearcher(); } else if (algorithm == 0) { searcher = new BFSSearcher(); } else { return(null); } sol = model.search(sm, searcher); sol.Name = name; model.AddMazeSolution(name, sol); } string jsonSol = sol.toJSON(); SendMessageToClient(jsonSol, client); return(jsonSol); }
static void Main(string[] args) { ISearcher <int> ser = new DFSSearcher <int>(); Dictionary <State <int>, List <State <int> > > Adj = new Dictionary <State <int>, List <State <int> > >(); State <int> one = new State <int>(1); State <int> two = new State <int>(2); State <int> three = new State <int>(3); State <int> four = new State <int>(4); State <int> five = new State <int>(5); State <int> six = new State <int>(6); State <int> seven = new State <int>(7); Adj[one] = new List <State <int> > { two, three }; Adj[two] = new List <State <int> > { four, five }; Adj[three] = new List <State <int> > { two, six }; Adj[four] = new List <State <int> >(); Adj[five] = new List <State <int> > { six }; Adj[six] = new List <State <int> > { seven }; Adj[seven] = new List <State <int> > { three }; TestSearchable <int> test1 = new TestSearchable <int>(one, six, Adj); Solution <int> sol = ser.Search(test1); printSol(sol); }
/// <summary> /// Solves the game. /// </summary> /// <param name="s">The s.</param> /// <param name="algo">The algo.</param> /// <returns></returns> public String SolveGame(String s, String algo) { if (!GameDictionary.ContainsKey(s)) { return("not such maze"); } Maze maze = GameDictionary[s]; ISearchable <Position> searchable = new MazeAdapter(maze); ISearcher <Position> searcher; if (algo.Equals("BFS")) { searcher = new BFSSearcher <Position>(); } else { searcher = new DFSSearcher <Position>(); } Solution <Position> solution = searcher.Search(searchable); return(ConvertToString(solution)); }