public static GrafoNaoDirigido GrafoNaoDirigido(String nomeArquivo)
        {
            String s;

            String[] aux;

            StreamReader arquivoGrafo;

            try
            {
                arquivoGrafo = new StreamReader(nomeArquivo);

                int qtdVertices = int.Parse(arquivoGrafo.ReadLine());
                s = arquivoGrafo.ReadLine();

                Vertice[] vertices = new Vertice[qtdVertices];

                int verticeX;
                int verticeY;

                while (s != null)
                {
                    aux = s.Split(';');

                    verticeX = int.Parse(aux[0]) - 1;
                    verticeY = int.Parse(aux[1]) - 1;

                    if (vertices[verticeX] == null)
                    {
                        vertices[verticeX] = new Vertice(verticeX + 1);
                    }

                    if (vertices[verticeY] == null)
                    {
                        vertices[verticeY] = new Vertice(verticeY + 1);
                    }

                    vertices[verticeX].AddVerticeAdjacente(vertices[verticeY], int.Parse(aux[2]));
                    vertices[verticeY].AddVerticeAdjacente(vertices[verticeX], int.Parse(aux[2]));

                    s = arquivoGrafo.ReadLine();
                }

                GrafoNaoDirigido grafo = new GrafoNaoDirigido(VerticesPendentes(vertices));

                arquivoGrafo.Close();

                return(grafo);
            }

            catch (FileNotFoundException ex)
            {
                throw ex;
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            GrafoNaoDirigido g1 = LeituraArquivo.GrafoNaoDirigido(@"..\..\..\GrafosTests2\txts\NaoDirigido\Prim.txt");

            GrafoDirigido gDirigido = LeituraArquivo.GrafoDirigido(@"..\..\..\GrafosTests2\txts\Dirigido\SemCiclo.txt");

            Console.WriteLine("São adjacentes: " + g1.isAdjacente(g1.vertices[0], g1.vertices[1]));
            Console.WriteLine("Grau: " + g1.getGrau(g1.vertices[0]));
            Console.WriteLine("É isolado: " + g1.isIsolado(g1.vertices[0]));
            Console.WriteLine("É pendente: " + g1.isPendente(g1.vertices[0]));
            Console.WriteLine("É regular: " + g1.isRegular());
            Console.WriteLine("É nulo: " + g1.isNulo());
            Console.WriteLine("Completo: " + g1.isCompleto());
            Console.WriteLine("É conexo: " + g1.isConexo());
            Console.WriteLine("Numero de Cut Vértice: " + g1.getCutVertices());
            Console.WriteLine("É Euleriano: " + g1.isEuleriano());
            Console.WriteLine("É Unicursal: " + g1.isUnicursal());
            Console.WriteLine("Grafo Complementar: ");
            g1.getComplementar().Imprimir();
            Console.WriteLine("Arvore Geradora Prim: ");
            g1.getAGMPrim(g1.vertices[0]).Imprimir();
            Console.WriteLine("Arvore Geradora Kruskal");
            g1.getAGMKruskal().Imprimir();


            Console.ReadKey();
        }
        public GrafoNaoDirigido getComplementar()
        {
            //Gera um grafo completo
            GrafoNaoDirigido grafoComplementar = this.GerarGrafoCompleto();

            //Percorre todos os vertices e retira do grafo completo as arestas que existem no grafo original,
            //Resultando em seu grafo complementar.
            for (int i = 0; i < vertices.Length; i++)
            {
                foreach (var aresta in vertices[i].adjacentes)
                {
                    grafoComplementar.vertices[i].RemoveVerticeAdjacente(aresta.vertice.id);
                }
            }

            return(grafoComplementar);
        }
Example #4
0
        public static GrafoNaoDirigido execute(Vertice origem, GrafoNaoDirigido grafo)
        {
            GrafoNaoDirigido arvore = new GrafoNaoDirigido(grafo.gerarGrafoNulo());

            vOrigem = origem;

            Aresta aresta = selecionarAresta(origem);

            while (aresta != null)
            {
                //adiciona a aresta a arvore
                arvore.adicionarAresta(vOrigem.id, aresta.vertice.id, aresta.peso);

                //seleciona a aresta de menor peso
                aresta = selecionarAresta(aresta.vertice);
            }

            return(arvore);
        }
Example #5
0
        public bool Equals(GrafoNaoDirigido obj)
        {
            if (this.NumeroVertices() == obj.NumeroVertices())
            {
                for (int i = 0; i < this.vertices.Length; i++)
                {
                    if (obj.vertices[i].adjacentes.Count() != this.vertices[i].adjacentes.Count())
                    {
                        return(false);
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
        public static GrafoNaoDirigido execute(GrafoNaoDirigido grafo)
        {
            grafoOrigem = new GrafoNaoDirigido(grafo.vertices);
            arvore      = new GrafoNaoDirigido(grafo.gerarGrafoNulo());

            Aresta aresta = FindArestaMenorPeso();

            while (aresta != null)
            {
                if (!HasCiclo(verticeOrigem, aresta))
                {
                    arvore.adicionarAresta(verticeOrigem.id, aresta.vertice.id, aresta.peso);
                }

                RemoveArestaGrafoCompleto(verticeOrigem, aresta);

                aresta = FindArestaMenorPeso();
            }

            return(arvore);
        }