예제 #1
0
        private void ExpandClusterOrder(Point p)
        {
            var neighbors = db.Neighbors(p, Epsilon);
            p.Processed = true;
            p.ReachDistance = Globals.Undefined;		// UNDEFINED
            p.SetCoreDistance(neighbors, Epsilon, MinPts);
            orderedList.Add(p);

            // core distance of pt is not undefined. (core object)
            if (p.CoreDistance.Equals(Globals.Undefined) == false)
            {
                var orderSeeds = new OrderSeeds();	// empty priority queue
                orderSeeds.update(neighbors, p);

                while (orderSeeds.Empty() == false)
                {
                    var curPt = orderSeeds.Next();
                    var newNeighbors = db.Neighbors(curPt, Epsilon);
                    curPt.Processed = true;
                    curPt.SetCoreDistance(newNeighbors, Epsilon, MinPts);
                    orderedList.Add(curPt);

                    // core distance of current point is not undefined. (core object)
                    if (curPt.CoreDistance.Equals(Globals.Undefined) == false)
                        orderSeeds.update(newNeighbors, curPt);
                }
            }
        }