Exemplo n.º 1
0
        public static IEnumerable <string> ApplayFleury(this IGraph graph, IGraphAtoFactory factory)
        {
            var    cycle   = factory.CreatePoute();
            var    node    = graph.GetFirstNode();
            int    i       = 0;
            string removed = "";

            do
            {
                var edges         = node.GetEdges(graph).ToList();
                var edgesListInfo = string.Join(", ", edges.Select(e => $"{e.Print()} - {(e.IsBrige(node.GetNext(e), graph) ? "Мост" : "Не мост")}"));
                var edge          = edges.FirstOrDefault(e => !e.IsBrige(node.GetNext(e), graph)) ?? edges.FirstOrDefault();
                yield return($"{(removed == "" ? "" : $"\tУдаляем из графа грань {removed}\n")}Шаг {i}\n\tЦикл: {cycle.Print()}\n\tГафф: {graph.Print()}\n\tТекущий узел: {node}, Нерассмотренные грани: {edgesListInfo}\n\tПервая не рассмотренная грань, не являющаяся мостом: {edge}");