Beispiel #1
0
        public IEnumerable <SearchNode1> EnumeratePaths1()
        {
            var node = new SearchNode1(start);

            var queue = new Queue <SearchNode1>();

            queue.Enqueue(node);

            while (queue.Count > 0)
            {
                var popped = queue.Dequeue();

                if (popped.isWin)
                {
                    yield return(popped);
                }
                else
                {
                    var newNodes = popped.Explore();
                    foreach (var newNode in newNodes)
                    {
                        queue.Enqueue(newNode);
                    }
                }
            }
        }
Beispiel #2
0
        public SearchNode1 GetPath1()
        {
            var node = new SearchNode1(start, target);

            var queue = new PriorityQueue <SearchNode1>();

            queue.Add(node);

            while (queue.Count() > 0)
            {
                var popped = queue.Poll();

                if (popped.isWin)
                {
                    return(popped);
                }
                else
                {
                    var newNodes = popped.Explore();
                    foreach (var newNode in newNodes)
                    {
                        queue.Add(newNode);
                    }
                }
            }

            return(null);
        }
Beispiel #3
0
            public SearchNode1(SearchNode1 parent, Cave newCurrent)
            {
                this.cantVisit = new HashSet <Cave>(parent.cantVisit);
                this.Current   = newCurrent;

                if (!parent.Current.isBig)
                {
                    this.cantVisit.Add(parent.Current);
                }
            }