Exemplo n.º 1
0
        public void AdicionaAresta(Vertice v2, int peso)
        {
            Aresta a = new Aresta(this, v2, peso);

            Arestas.Add(a);
            //Adjacentes.Add(v2);
        }
        public void PintarArestasDeIdaEVolta()
        {
            var arestasDaOrigem = Arestas.Where(a => a.Antecessor.Identificador == "Sede").ToList();
            var corLaranja      = Cores.First(c => c.Nome == "Laranja");

            foreach (var aresta in arestasDaOrigem)
            {
                aresta.Cor = corLaranja.Hexadecimal;

                var arestaNova = new Aresta()
                {
                    Codigo     = Arestas.Last().Codigo + 1,
                    Custo      = aresta.Custo,
                    Antecessor = aresta.Sucessor,
                    Sucessor   = aresta.Antecessor,
                    Cor        = corLaranja.Hexadecimal
                };

                Arestas.Add(arestaNova);
            }
        }
Exemplo n.º 3
0
        public void AdicionaAresta(int Origem, int Destino, int Peso, int id = -1)
        {
            AdicionaVertice(Origem);
            AdicionaVertice(Destino);
            Aresta aresta = ObtenhaAresta(Origem, Destino);

            if (aresta is object)
            {
                EditarAresta(Origem, Destino, Peso);
            }
            else
            {
                Arestas.Add(new Aresta()
                {
                    Origem  = Origem,
                    Destino = Destino,
                    Peso    = Peso,
                    Id      = id
                });
            }
            AdicionaVerticeAdjacente(Origem, Destino);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Adds Aresta into Grafo
        /// </summary>
        /// <param name="a"></param>
        /// <returns></returns>
        public bool AddAresta(Aresta a)
        {
            if (a.isDirected == isDigraph)
            {
                if (!Vertices.Contains(a.vertice1))
                {
                    Vertices.Add(a.vertice1);
                }

                if (!Vertices.Contains(a.vertice2))
                {
                    Vertices.Add(a.vertice2);
                }

                Arestas.Add(a);

                if (a.vertice1._id == a.vertice2._id)
                {
                    isAciclic = false;                                   // no longer aciclic
                }
            }
            return(false);
        }
        public void AdicionarAresta()
        {
            MensagemDeErro = string.Empty;

            if (Arestas.Any(a => (a.Antecessor.Identificador == Antecessor && a.Sucessor.Identificador == Sucessor) ||
                            (a.Sucessor.Identificador == Antecessor && a.Antecessor.Identificador == Sucessor)))
            {
                MensagemDeErro = "Os vertices selecionados já estão ligados entre si.";
                return;
            }
            else if (Antecessor == Sucessor)
            {
                MensagemDeErro = "Não é possível fazer essa ligação.";
                return;
            }

            Aresta.Antecessor = Vertices.First(v => v.Identificador == Antecessor);
            Aresta.Sucessor   = Vertices.First(v => v.Identificador == Sucessor);
            Aresta.Codigo     = Arestas.Any() ? Arestas.Last().Codigo++ : 0;
            Arestas.Add(Aresta);

            Aresta = new Aresta();
        }
Exemplo n.º 6
0
        public void GerarGrafoParaProblemaDoCaixeiroViajante()
        {
            var origem = new Vertice()
            {
                Codigo        = 0,
                Identificador = "Sede"
            };

            var clienteA = new Vertice()
            {
                Codigo        = 1,
                Identificador = "Cliente A"
            };

            var clienteB = new Vertice()
            {
                Codigo        = 2,
                Identificador = "Cliente B"
            };

            var clienteC = new Vertice()
            {
                Codigo        = 3,
                Identificador = "Cliente C"
            };

            var clienteD = new Vertice()
            {
                Codigo        = 4,
                Identificador = "Cliente D"
            };

            var clienteE = new Vertice()
            {
                Codigo        = 5,
                Identificador = "Cliente E"
            };

            Vertices.Add(origem);
            Vertices.Add(clienteA);
            Vertices.Add(clienteB);
            Vertices.Add(clienteC);
            Vertices.Add(clienteD);
            Vertices.Add(clienteE);

            var aresta0 = new Aresta()
            {
                Codigo     = 0,
                Custo      = 10,
                Antecessor = clienteA,
                Sucessor   = clienteB
            };

            var aresta1 = new Aresta()
            {
                Codigo     = 1,
                Custo      = 7,
                Antecessor = clienteB,
                Sucessor   = clienteC
            };

            var aresta2 = new Aresta()
            {
                Codigo     = 2,
                Custo      = 8,
                Antecessor = clienteC,
                Sucessor   = clienteD
            };

            var aresta3 = new Aresta()
            {
                Codigo     = 3,
                Custo      = 10,
                Antecessor = clienteD,
                Sucessor   = clienteE
            };

            var aresta4 = new Aresta()
            {
                Codigo     = 4,
                Custo      = 10,
                Antecessor = clienteE,
                Sucessor   = clienteA
            };

            var aresta5 = new Aresta()
            {
                Codigo     = 5,
                Custo      = 18,
                Antecessor = clienteA,
                Sucessor   = clienteD
            };

            var aresta6 = new Aresta()
            {
                Codigo     = 6,
                Custo      = 12,
                Antecessor = clienteA,
                Sucessor   = clienteC
            };

            var aresta7 = new Aresta()
            {
                Codigo     = 7,
                Custo      = 12,
                Antecessor = clienteB,
                Sucessor   = clienteE
            };

            var aresta8 = new Aresta()
            {
                Codigo     = 8,
                Custo      = 12,
                Antecessor = clienteB,
                Sucessor   = clienteD
            };

            var aresta9 = new Aresta()
            {
                Codigo     = 9,
                Custo      = 12,
                Antecessor = clienteC,
                Sucessor   = clienteE
            };

            var aresta10 = new Aresta()
            {
                Codigo     = 10,
                Custo      = 10,
                Antecessor = origem,
                Sucessor   = clienteA
            };

            var aresta11 = new Aresta()
            {
                Codigo     = 11,
                Custo      = 5,
                Antecessor = origem,
                Sucessor   = clienteB
            };

            var aresta12 = new Aresta()
            {
                Codigo     = 12,
                Custo      = 5,
                Antecessor = origem,
                Sucessor   = clienteC
            };

            var aresta13 = new Aresta()
            {
                Codigo     = 13,
                Custo      = 10,
                Antecessor = origem,
                Sucessor   = clienteD
            };

            var aresta14 = new Aresta()
            {
                Codigo     = 14,
                Custo      = 10,
                Antecessor = origem,
                Sucessor   = clienteE
            };

            Arestas.Add(aresta0);
            Arestas.Add(aresta1);
            Arestas.Add(aresta2);
            Arestas.Add(aresta3);
            Arestas.Add(aresta4);
            Arestas.Add(aresta5);
            Arestas.Add(aresta6);
            Arestas.Add(aresta7);
            Arestas.Add(aresta8);
            Arestas.Add(aresta9);
            Arestas.Add(aresta10);
            Arestas.Add(aresta11);
            Arestas.Add(aresta12);
            Arestas.Add(aresta13);
            Arestas.Add(aresta14);
        }
Exemplo n.º 7
0
        public void GerarGrafoParaBuscas(bool ehOrientado)
        {
            var vertice0 = new Vertice()
            {
                Codigo        = 0,
                Identificador = "0"
            };

            var vertice1 = new Vertice()
            {
                Codigo        = 1,
                Identificador = "1"
            };

            var vertice2 = new Vertice()
            {
                Codigo        = 2,
                Identificador = "2"
            };

            var vertice3 = new Vertice()
            {
                Codigo        = 3,
                Identificador = "3"
            };

            var vertice4 = new Vertice()
            {
                Codigo        = 4,
                Identificador = "4"
            };

            var vertice5 = new Vertice()
            {
                Codigo        = 5,
                Identificador = "5"
            };

            var vertice6 = new Vertice()
            {
                Codigo        = 6,
                Identificador = "6"
            };

            Vertices.Add(vertice0);
            Vertices.Add(vertice1);
            Vertices.Add(vertice2);
            Vertices.Add(vertice3);
            Vertices.Add(vertice4);
            Vertices.Add(vertice5);
            Vertices.Add(vertice6);

            var aresta1 = new Aresta()
            {
                Codigo        = 0,
                Identificador = "a",
                Antecessor    = vertice1,
                Sucessor      = vertice2,
                Custo         = 2,
                EhOrientado   = ehOrientado
            };

            var aresta2 = new Aresta()
            {
                Codigo        = 1,
                Identificador = "b",
                Antecessor    = vertice1,
                Sucessor      = vertice6,
                Custo         = 6,
                EhOrientado   = ehOrientado
            };

            var aresta3 = new Aresta()
            {
                Codigo        = 2,
                Identificador = "c",
                Antecessor    = vertice6,
                Sucessor      = vertice4,
                Custo         = 3,
                EhOrientado   = ehOrientado
            };

            var aresta4 = new Aresta()
            {
                Codigo        = 3,
                Identificador = "d",
                Antecessor    = vertice4,
                Sucessor      = vertice5,
                Custo         = 7,
                EhOrientado   = ehOrientado
            };

            var aresta5 = new Aresta()
            {
                Codigo        = 4,
                Identificador = "e",
                Antecessor    = vertice5,
                Sucessor      = vertice0,
                Custo         = 1,
                EhOrientado   = ehOrientado
            };

            var aresta6 = new Aresta()
            {
                Codigo        = 5,
                Identificador = "f",
                Antecessor    = vertice0,
                Sucessor      = vertice1,
                Custo         = 5,
                EhOrientado   = ehOrientado
            };

            var aresta7 = new Aresta()
            {
                Codigo        = 6,
                Identificador = "g",
                Antecessor    = vertice6,
                Sucessor      = vertice3,
                Custo         = 3,
                EhOrientado   = ehOrientado
            };

            Arestas.Add(aresta1);
            Arestas.Add(aresta2);
            Arestas.Add(aresta3);
            Arestas.Add(aresta4);
            Arestas.Add(aresta5);
            Arestas.Add(aresta6);
            Arestas.Add(aresta7);
        }
Exemplo n.º 8
0
        public void GerarGrafoParaPrim()
        {
            var verticeA = new Vertice()
            {
                Codigo        = 0,
                Identificador = "A"
            };

            var verticeB = new Vertice()
            {
                Codigo        = 1,
                Identificador = "B"
            };

            var verticeC = new Vertice()
            {
                Codigo        = 2,
                Identificador = "C"
            };

            var verticeD = new Vertice()
            {
                Codigo        = 3,
                Identificador = "D"
            };

            var verticeE = new Vertice()
            {
                Codigo        = 4,
                Identificador = "E"
            };

            Vertices.Add(verticeA);
            Vertices.Add(verticeB);
            Vertices.Add(verticeC);
            Vertices.Add(verticeD);
            Vertices.Add(verticeE);

            var aresta1 = new Aresta()
            {
                Codigo        = 0,
                Identificador = "ab",
                Antecessor    = verticeA,
                Sucessor      = verticeB,
                Custo         = 9,
                EhOrientado   = false
            };

            var aresta2 = new Aresta()
            {
                Codigo        = 1,
                Identificador = "be",
                Antecessor    = verticeB,
                Sucessor      = verticeE,
                Custo         = 5,
                EhOrientado   = false
            };

            var aresta3 = new Aresta()
            {
                Codigo        = 2,
                Identificador = "ec",
                Antecessor    = verticeE,
                Sucessor      = verticeC,
                Custo         = 5,
                EhOrientado   = false
            };

            var aresta4 = new Aresta()
            {
                Codigo        = 3,
                Identificador = "ca",
                Antecessor    = verticeC,
                Sucessor      = verticeA,
                Custo         = 5,
                EhOrientado   = false
            };

            var aresta5 = new Aresta()
            {
                Codigo        = 4,
                Identificador = "ad",
                Antecessor    = verticeA,
                Sucessor      = verticeD,
                Custo         = 2,
                EhOrientado   = false
            };

            var aresta6 = new Aresta()
            {
                Codigo        = 5,
                Identificador = "db",
                Antecessor    = verticeD,
                Sucessor      = verticeB,
                Custo         = 6,
                EhOrientado   = false
            };

            var aresta7 = new Aresta()
            {
                Codigo        = 6,
                Identificador = "de",
                Antecessor    = verticeD,
                Sucessor      = verticeE,
                Custo         = 3,
                EhOrientado   = false
            };

            var aresta8 = new Aresta()
            {
                Codigo        = 7,
                Identificador = "dc",
                Antecessor    = verticeD,
                Sucessor      = verticeC,
                Custo         = 4,
                EhOrientado   = false
            };

            Arestas.Add(aresta1);
            Arestas.Add(aresta2);
            Arestas.Add(aresta3);
            Arestas.Add(aresta4);
            Arestas.Add(aresta5);
            Arestas.Add(aresta6);
            Arestas.Add(aresta7);
            Arestas.Add(aresta8);
        }
Exemplo n.º 9
0
 public void AddAresta(Aresta aresta)
 {
     Arestas.Add(aresta);
 }