Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }