public void SolvePuzzleByBFS() { // Si está correcto, no lo resuelvo (o lo puedo llamar igualmente y que me devuelva una solución vacía, ok? //if (!puzzle.IsInDefaultOrder()) { } // El resolutor ya está construido porque no requiere nada time = Time.realtimeSinceStartup; List <Operator> operators = solver.Solve(puzzle, SlidingPuzzleSolver.Strategy.BFS); time = Time.realtimeSinceStartup - time; // Crear una estructura para las metrics, algo menos libre... con campos Metrics metrics = solver.GetMetrics(); ShowSolution(operators, metrics); }
// Se crea el resolutor con la estrategia DFS y se resuelve el problema public void SolvePuzzleByDFS() { // Si está ordenado, podría optar por no hacer nada... aunque llamaré igualmente y espero que devuelva la solución vacía solver = new SlidingPuzzleSolver(rows, columns); // El resolutor ya está construido porque no requiere nada time = Time.realtimeSinceStartup; memory = SystemInfo.systemMemorySize; // Se podría sumar a la parte gráfica para tener la ocupación real en memoria (SystemInfo.graphicsMemorySize) List <Operator> operators = solver.Solve(puzzle, SlidingPuzzleSolver.Strategy.DFS); time = Time.realtimeSinceStartup - time; memory = SystemInfo.systemMemorySize - memory; // No tiene mucho sentido hacerlo aquí, porque ya se habrá liberado la mmemoria, habría que escoger el punto álgido (máximo de memoria utilizada) metrics = solver.GetMetrics().ToString(); ShowSolution(operators); }