예제 #1
0
        void Tree()
        {
            int vNum = roomLayer.Objects.OfType <Room>().Count(x => x.isMainRoom);

            var kruskal = new Kruskal(vNum, graphLayer.Objects.OfType <Line>());

            LineList = kruskal.Compute();

            var unSelectedLines = new List <Line>();

            foreach (Line line in graphLayer.Objects.OfType <Line>().Where(x => !(LineList.Any(x.Equals))))
            {
                graphLayer.RemoveObject(line);
                unSelectedLines.Add(line);
            }

            foreach (Line line in new List <Line>(unSelectedLines)
                     .OrderBy(i => Guid.NewGuid())
                     .Take((int)(unSelectedLines.Count() * 0.1))
                     )
            {
                graphLayer.AddObject(line);
                unSelectedLines.Remove(line);
            }
            foreach (Line line in unSelectedLines)
            {
                line.Dispose();
            }
        }