public List <Puzzle> BFS() { var visited = new List <Puzzle>(); //if () // return visited; Queue <Node <Puzzle> > q = new Queue <Node <Puzzle> >(); q.Enqueue(repo.insert().root); while (q.Count != 0) { var nod = q.Dequeue(); visited.Add(nod.Value); if (repo.isGoal(nod.Value)) { return(visited); } foreach (var el in nod.Childrens) { q.Enqueue(el); } } return(visited); }
public override List <Puzzle> searchFromAnInstance(Puzzle puzzle) { var visited = new List <Puzzle>(); Queue <Node <Puzzle> > q = new Queue <Node <Puzzle> >(); q.Enqueue(repoPuzzle.insert().root); while (q.Count != 0) { Node <Puzzle> node = null; int dife = 0; var nod = q.Dequeue(); visited.Add(nod.Value); if (repoPuzzle.isGoal(nod.Value)) { return(visited); } foreach (var el in nod.Childrens) { int auxD = repoPuzzle.checkDiferences(el.Value); auxD = auxD + el.ChildrensCount; if (auxD > dife) { Console.WriteLine(auxD); node = el; dife = auxD; } } if (node != null) { q.Enqueue(node); } } return(visited); }
public override List <Puzzle> searchFromAnInstance(Puzzle puzzle) { var visited = new List <Puzzle>(); Queue <Node <Puzzle> > q = new Queue <Node <Puzzle> >(); q.Enqueue(repoPuzzle.insert().root); while (q.Count != 0) { var nod = q.Dequeue(); visited.Add(nod.Value); if (repoPuzzle.isGoal(nod.Value)) { return(visited); } foreach (var el in nod.Childrens) { q.Enqueue(el); } } return(null); }