Matemática Discreta Capítulo 3 Versão preliminar

Tamanho: px
Começar a partir da página:

Download "Matemática Discreta Capítulo 3 Versão preliminar"

Transcrição

1 Matemática Discreta Capítulo 3 Versão preliminar Henri Anciaux e Derek Hacon October 25, Generalidades sobre grafos Um grafo G é simplesmente um par de dois conjuntos V e A, o segundo sendo constituído de pares de elementos do primeiro. Os elementos de V serão chamados vértices do grafo G, e os de A arestas de G. Exemplo 1 G = (V, A), com V = {V 1, V 2, V 3, V 4, V 5 } e A = {(V 1, V 2 ), (V 1, V 3 ), (V 1, V 4 ), (V 2, V 3 )} Diremos que uma aresta A = (V, V ) é adjacente a V e a V. Diremos também que V e V são adjacentes se (V, V ) é uma aresta, i.e. se (V, V ) A. Na definição das arestas, não nos importaremos com a ordem dos dois vértice, ou seja (V, V ) e (V, V ) definem a mesma aresta. Como o seu nome indica, um grafo pode ser descrito graficamente, os vértices sendo representados por pontos e as arestas adjacentes a dois vértices por um segmento ou uma curva ligando os pontos correspondentes. Porém é importante reparar que não são Figure 1: Duas representações do mesmo grafo (cf Exemplo 1) 1

2 relevantes em um grafo as posições relativas dos vértices e das arestas, ou a forma delas. A única coisa que nos importará é o fato de dois vértices serem ou não ligados por uma aresta. Por exemplo, os dois desenhos da Figura 1 abaixo correspondem ambos ao grafo G do Exemplo 1 Definição 1 Um caminho de G é uma sequência de vértices tais que dois vértices consecutivos são adjacentes. Se o primeiro e o último vértice da sequência são iguais, diremos que o caminho é fechado. Caso contrario, diremos que o caminho conecta o primeiro e o último vértice. Diremos que um grafo é conexo, se para dois quaisquer vértices, existe um caminho conectando-os. Definição 2 Diremos que G = (V, A ) é um subgrafo de G = (V, A) se V V e A A, isto é se ambos os vértices e as arestas de G são vértices e arestas de G. Diremos que G é um gerador de G se além disso G é conexo. Exemplo 2 O grafo G do Exemplo 1 não é conexo, já que é impossível conectar o vértice V 5 a qualquer outro. Já o subgrafo G = (V, A ) de G definido por V = {V 1, V 2, V 3, V 4 } e A = A = {(V 1, V 2 ), (V 1, V 3 ), (V 1, V 4 ), (V 2, V 3 )} é conexo. As componentes conexas de um grafo G são os conjuntos de vértices de G que podem ser todos conectados entre si. As componentes conexas do grafo do Exemplo 1 são {V 1, V 2, V 3, V 4 } e {V 5 }. Definição 3 Uma árvore é um grafo conexo que não contem ciclos. Proposição 1 Dado um grafo conexo G = (V, A), existe sempre uma árvore geradora G = (V, A ). Teorema 1 Seja G um grafo com um número n V de vértices e um número n A de arestas; (i) Se G não contem ciclos, n V n A + 1; (ii) Se G é uma árvore, n V = n A + 1; (iii) Se G é conexo, n V n A Grau de um vértice Definição 4 O grau Gr(V ) de um vértice V de um grafo G é o número de arestas de G adjacentes a V. Exemplo 3 No Exemplo 1, Gr(V 1 ) = 3, já que as arestas adjacentes a V 1 são (V 1, V 2 ), (V 1, V 3 ) e (V 1, V 4 ); temos também Gr(V 5 ) = 0. 2

3 Teorema 2 A soma dos graus de todos os vértices de um grafo é igual a duas vezes o número de arestas. O número de vértices de grau ímpar de um grafo é par. Prova. A primeira afirmação é evidente: cada aresta liga dois vértices, então conta por dois na soma S dos graus de todos os vértices. Para provar a segunda afirmação, denotaremos por S p a soma dos graus dos vértices de grau par e por S i a soma dos graus dos vértices de grau ímpar. Temos visto que S é par, e S p, sendo uma soma de números pares, é par também. Decorre então que S i = S S p, sendo a diferença de dois números pares, é par. Lembrando das notações do Capítulo 2, podemos re-escrever o raciocínio simbolicamente: S i = S S p 0 0[2] 0[2]. Para terminar a prova, observamos que a soma de N números ímpares n i, 1 i N, é congruente a N módulo 2 (ou seja, é par quando N for par e ímpar quando N for ímpar). Com efeito, usando o fato que n i 1[2], temos N n i i=1 N 1[2] N[2]. i=1 Aplicando esse raciocínio a S i, concluimos que tem um número par de vértices de grau ímpar. 2 Grafos eulerianos Definição 5 Um ciclo euleriano em um grafo G é um caminho fechado que passa exatamente por cada aresta de G. Um grafo G é dito euleriano se ele admitir um ciclo euleriano. Teorema 3 Um grafo é euleriano se e somente se ele é conexo e o grau de cada vértice é par. Prova. Primeiramente mostraremos que se um grafo é euleriano, então ele é conexo e o grau de cada vértice é par. Com efeito, um caminho euleriano passa por todas as arestas, e em particular conecta todos os vértices entre si, logo o grafo é conexo. Além disso, seja V um vértice que não seja o vértice inicial (e final) do ciclo. Portanto o número de vezes em que o ciclo entra em V é igual ao número de vezes em que ele saí. Já que o ciclo é euleriano, todas as arestas ajacentes a V devem serem visitadas pelo ciclo, seja para entrar, seja para sair do vértice V. O caso do vértice inicial não é diferente: após ter saido uma primeira vez dele, o ciclo vai entrar e sair um certo número de vezes, visitando um número par de arestas. Pois ele vai entrar uma última vez para fechar o ciclo. Com a saida inicial, são ainda duas arestas (isto é, um número par) que foram visitadas. Logo o número total das arestas visitadas, isto é o grau de V, deve ser par. Para mostrar a recíproca, construiremos explicitamente um ciclo euleriano, dado um grafo G conexo com todos os seus graus pares. O método segue as seguintes etapas. 3

4 1) Escolha um vértice inicial V 1 e faça um caminho C 1 através do grafo, sem nunca repetir uma aresta, e continua até voltar em V 1. Afirmação 1: É sempre possível encontrar um tal caminho Se todas as arestas de G foram visitadas, obtivemos então um ciclo euleriano e paramos aqui. Caso contrario, proceda na etapa seguinte. 2) Escolha um vértice V 2 pertencente ao caminho C 1 que admite uma aresta adjacente que ainda não foi visitada Afirmação 2: Sempre existe uma tal aresta. 3) Faça um caminho saindo de V 2 por esta aresta, sem nunca repetir uma aresta nem usar uma aresta de C 1, e continua até voltar em V 2. Afirmação 3: É sempre possível encontrar um tal caminho. Se todas as arestas de G foram visitadas por C 1 e C 2, paramos aqui. Senão, passa à etapa seguinte. 2 ) Escolha um vértice V 3 pertencendo ao caminho C 1 ou ao caminho C 2 que admite uma aresta adjacente que ainda não foi visitada O algoritmo procede assim por diante, criando ciclos C 1,..., C n, de jeito que C n tem um vértice em comum com um dos ciclos anteriores, até que cada aresta seja visitada por algum ciclo. Para finalizar a nossa tarefa, criamos um ciclo C juntando os ciclos C 1,..., C n entre si da seguinte maneira: percorremos as arestas de C 1 até encontrar um vértice que seja o ponto inicial do caminho C 2. Aí bifurcamos e percorremos todas as arestas de C 2 até voltar ao ponto inicial de C 2 ou encontrar o ponto inicial de um outro caminho C 3. No segundo caso percorremos igualmente o caminho C 3, e quando isso foi feito, terminamos o percurso de C 2. Depois, voltamos a percorrer C 1, até o final, a menos de encontrar o ponto inicial de um outro caminho. Continuamos assim por diante, até voltar ao ponto inicial de C 1 e ter assim percorrido exatamente uma vez todas as arestas do grafo G. Para terminar a prova, falta demonstrar que é sempre possível seguir as etapas descritas acima, ou seja, demonstrar que a três afirmações feitas são verdadeiras. Prova da Afirmação 1: A afirmação segue da hipótese de que o grau de cada vértice é par: assim chegando pela primeira vez em um vértice, sobra um número ímpar de arestas adjacentes que nunca foram visitadas, portanto sobra pelo menos uma. Ao sair desse vértice, o caminho deixa um número par de arestas disponíveis para uma visita futura: exatamente duas delas foram visitadas, e um número par menos dois é ainda um número par. Assim é sempre possível continuar caminhando até voltar ao ponto inicial (o grafo sendo finito, sabemos que sempre chegaremos ao ponto inicial). 4

5 Figure 2: Um grafo euleriano Prova da Afirmação 2: Esta afirmação decorre da hipótese de conexidade do grafo G: com efeito, seja V um vértice que foi visitado pelo caminho C 1 e V que não foi. O grafo G sendo conexo, existe um caminho C ligando V e V. Já que o vértice V não foi visitado por C 1, é claro não todas as arestas de C foram visitadas por C 1. É fácil então verificar que a primeira aresta do caminho C que não pertence ao caminho C 1 é adjacente a C 1, e a afirmação é verificada. Prova da Afirmação 3: sendo similar à prova da Afirmação 1, deixamo-la ao leitor. Exemplo 4 Implementaremos o algoritmo descrito na demonstração acima no grafo G da Figura 2: escolhemos de sair de V 1 e definimos o ciclo C 1 = (V 1, V 2, V 5, V 4, V 1 ). Vemos claramente que poderiamos ter escolhido melhor o nosso caminho: chegando em V 4, não é muito esperto voltar para V 1 em vez de ir para V 3. Mas isso não deve nos preocupar, o que é importante aqui é entender que o algoritmo descrito sempre funciona, mesmo sem ter uma percepção global do grafo (o que é o caso de um computador que segue ao pé da letra as instruções que lhe são dadas). Com efeito, seguindo o passo 2 do algoritmo, reparamos que de V 5 saí uma aresta que não foi visitada. Iniciamos então a partir de V 5 o novo ciclo C 2 = (V 5, V 6, V 10, V 9, V 5 ). Agora, vemos que não saí de C 2 nenhuma aresta disponível, voltamos então a C 1 e vemos que saí uma aresta disponível de V 4. Iniciamos então um terceiro ciclo C 3 = (V 4, V 8, V 7, V 3, V 4 ), que será o último já que todas as arestas foram visitadas. Para concluir, falta só costurar entre si o três ciclos C 1, C 2 e C 3. O resultado é C = (V 1, V 2, V 5, V 6, V 10, V 9, V 5, V 4, V 8, V 7, V 3, V 4, V 1 ). O leitor pode verificar que esse caminho visita exatamente uma vez cada aresta. 5

6 3 O algoritmo de Dijkstra Definição 6 Um grafo com peso (G, p) é um grafo G munido de uma função positiva p definida sobre o conjunto das arestas. Em outras palavras, a cada aresta A é atribuido um número positivo p(a). Definição 7 O peso p(c) de um caminho C = (V 1, V 2,..., V n, V n+1 ) é a soma dos pesos das arestas A 1 = (V 1, V 2 ), A 2 = (V 2, V 3 ),..., A n = (V n, V n+1 ) que ele visita: p(c) = p(a 1 ) + p(a 2 ) p(a n ). Um caminho (não fechado) C é dito mínimo se, para todo caminho C com mesmos vértices inicial e final, p(c) p(c ). Denotaremos por p(v, V ) o peso de um caminho mínimo conectando os vértices V e V. Adotamos a convenção de que p(v, V ) = 0. Observação 1 Quando o grafo é uma árvore, existe sempre um único caminho entre quaisquer dois vértices (se tivesse dois caminhos distintos, teria um ciclo). Definição 8 Diremos que uma árvore H que é subgrafo de G é mínima com respeito a V 0 se para todo vértice V de H, o caminho que liga V 0 a V em H é um caminho mínimo em G. Teorema 4 (Algoritmo de Dijkstra) Dado um vértice V 0 de um grafo conexo com pesos G, existe uma árvore geradora H mínima com respeito a V 0. Prova. Vamos construir a árvore H por indução, acrescentando arestas uma depois da outra. 1) Na primeira etapa, escolhemos entre todas a arestas adjacentes a V 0 uma aresta A 1 de menor peso. Seja V 1 o outro vértice de A 1 e H 1 a árvore formada por A 1 e os seus vértices adjacentes, isto é H 1 = ({V 0, V 1 }, {A 1 }). Já que escolhamos A 1 de menor peso, é claro que qualquer caminho que conecta V 0 e V 1 tem um peso maior o igual que o peso de A 1. Portanto H 1 é uma árvore mínima. 2) Escolhemos agora uma aresta A 2 = (V, V 2 ) com V H 1 e V 2 / H 1 e tal que o número p(v 0, V ) + p(a 2 ) seja o menor possível. Observe que aqui p(v, V 0 ) = 0 se V = V 0 e p(v, V 0 ) = p(a 1 ) se V = V 1. Seja agora H 2 o grafo obtido acrescentando a H 1 o vértice V 2 e a aresta A 2, ou seja H 2 = (V 2, A 2 ) com V 2 = {V 0, V 1, V 2 } e A 2 = {A 1, A 2 }. Afirmação 1: H 1 é uma árvore mínima com respeito a V 0. 6

7 2 ) Repetimos a etapa anterior várias vezes, escolhendo uma aresta A n+1 = (V, V n+1 ) com V H n+1 e V n+1 / H n, tal que p(v 0, V ) + p(a n+1 ) seja o menor possível. Logo definimos H n+1 como sendo o grafo obtido acrescentando a H n o vértice V n+1 e a aresta A n+1, ou seja H n+1 = (V n+1, A n+1 ) com V n+1 = V n {V n+1 } e A n+1 = A n {A n+1 }. Afirmação 2: Se H n é uma árvore mínima com respeito a V 0, então H n+1 é também uma árvore mínima com respeito a V 0. Repetimos a etapa 2 ) até obter uma árvore geradora, o que sempre acontece com um grafo finito. A duas afirmações mostram por indução que as árvores da sequência H 0, H 1,..., H n são todas mínimas, em particular é o caso da última, e obtemos assim a existência de uma árvore H geradora e mínima. Para completar a prova, falta demonstrar as Afirmações 1 e 2. Prova da Afirmação 1: Primeiramente, V 2 sendo diferente de V 0 e V 1, é claro que H 1 não contém ciclo e portanto é uma árvore. Já vimos no item 1) que (V 0, V 1 ) é o caminho mínimo entre V 0 e V 1, logo basta mostrar que o caminho que liga V 0 e V 2 em H 1 é mínimo. Considere então qualquer outro caminho C que conecta V 0 e V 2 e seja A = (V, V ) a primeira aresta de C que não pertence a H 0 (tal aresta sempre existe já que V 2 / H 0 ). Pela escolha feita de A 2, sabemos que p(v 0, V 2 ) p(v 0, V ) + p(a ) e por outro lado, p(v 0, V ) + p(a ) p(c), portanto p(v 0, V 2 ) p(c). Demonstramos então que o caminho ligando V 0 a V 2 em H 1 tem menor peso que qualquer outro. Prova da Afirmação 2: É claro que se H n é uma árvore, H n+1 o é, já que não criamos ciclos acrescentando A n+1. Para mostrar que H n+1 é mínima, é suficiente provar que o caminho que liga V 0 e V n+1 em H n+1 é mínimo, o que se demonstra de modo análogo ao que foi feito na prova da Afirmação 1. Observação 2 É importante notar que o caminho que liga dois vértices quaisquer V e V em H não é mínimo a priori. O algoritmo de Dijkstra só dá os caminhos mínimos entre um dado vértice V 0 e todos os outros vértices de G. Logo, se quisermos encontrar um caminho mínimo entre dois outros vértices, teremos que aplicar novamente o algoritmo a partir de um deles, construindo uma árvore diferente. Exemplo 5 Vamos implementar o algoritmo de Dijkstra no grafo da Figura 3. Na primeira etapa, escolhemos a aresta D, a de menor peso saindo de V 0. Logo, devemos escolher entre as arestas A, H e K. Os pesos dos caminhos correspondentes (ligando V 0 a um dos vértices da aresta em questão) são 3(= 1 + 2), 8 e 10, portanto, escolhemos a aresta A. Logo, devemos escolher entre B, E, H e K. A aresta que cria um caminho de menor peso é E (com peso 4 = ). Têm duas escolhas possíveis pela quarta aresta da nossa árvore: com efeito, L e K criam ambas um caminho de peso 10, enquanto as 7

8 Figure 3: Um grafo com peso e uma árvore mínima em relação ao vértice V 0 arestas C, F e I criariam caminhos de maior peso. Observe também que a partir de agora a aresta H está excluida, (apesar de criar um caminho de peso 8) porque ela criaria um ciclo. Continuamos assim por diante até conectar todos os vértives a V 0. Têm quatro ordens possíveis de escolha das arestas: (D, A, E, B, L, K, P, I, C, J) (D, A, E, B, K, L, P, I, C, J) (D, A, E, B, L, K, P, I, C, G) (D, A, E, B, K, L, P, I, C, G) As duas primeiras possibilidades levam ambas à construção da árvore mínima da Figura 4. As duas últimas construem uma outra árvore mínima. 4 O algoritmo do carteiro Nesta seção vamos encontrar um caminho que tem peso mínimo entre todos aqueles que passam pelo menos uma vez por todas as arestas de um grafo conexo G. Este problema tem muitas aplicações práticas: é o caso do carteiro que deve passar pelo menos uma vez em cada rua de um dado bairro para distribuir o correio mas que quer percorrer a menor distância; pelas mesmas razão é também o caso de um caminhão de lixo. O caso mais fácil para resolver este problema é quando o grafo é euleriano: vimos na Seção 2 como construir um ciclo euleriano, isto é, que passa exatamente por cada aresta. É claro então que qualquer outro caminho fechado que passa pelo menos uma vez por cada aresta deve ter um peso maior ou igual, logo os ciclos eulerianos, quando existirem, são solução do problema do carteiro. 8

9 Para resolver o caso de um grafo não euleriano, vamos nos inspirar desse caso mais fácil, no sentido que vamos eulerianizar o grafo. Concretamente, vamos acrescentar a G algumas arestas, que qualificaremos de virtuais, entre os vértices que são responsáveis para o grafo G não ser euleriano, isto é, as arestas de grau ímpar. Sabemos pelo Teorema 2 que tem um número par de arestas de grau ímpar, logo a maneira mais natural de acrescentar arestas é agrupar os vértices em grupos de dois, ou seja emparelhar eles, e acrescentar uma aresta a cada par de vértices. Assim, o grau de cada um desses vértices, sendo incrementado de 1, passa a ser par e o grafo assim criado (o grafo virtual) é euleriano. Logo, podemos criar um ciclo euleriano, que chamaremos também de caminho virtual, já que ele visita todas as arestas, inclusive as virtuais. A última etapa do algoritmo consiste em associar a esse caminho virtual um caminho fechado no grafo original G, que chamaremos logicamente de caminho real. Por isso, percorremos simplesmente as arestas reais do caminho virtual, e quando encontramos uma aresta virtual, a trocamos por um caminho real, isto é, usando arestas de G. Até agora, temos descrito apenas as grandes linhas do algoritmo, faltam na verdade dois detalhes importantes: Como escolher as arestas virtuais entre todos os possíveis emparalhamentos de vértices de grau ímpar? Como escolher os caminhos reais que vão substituir as arestas virtuais na hora de determinar o caminho real? As respostas a essas duas perguntas têm a ver com o objetivo do algoritmo, isto é, encontrar um caminho (fechado e passando por todas as arestas) de peso mínimo. O ponto chave aqui é que o nosso caminho real terá como peso total a soma dos pesos de todas as arestas, mais o peso dos caminhos que irão substituir as arestas virtuais. Já que não podemos reduzir a soma dos pesos das arestas (temos que passar pelo menos uma vez por cada uma, lembra-se), devemos minimizar o peso dos caminhos que substituem as arestas virtuais. Vimos na seção anterior um jeito de encontrar caminhos mínimos entre dois vértices, usando o algoritmo de Dijkstra. Vamos usar este algoritmo para determinar, dado um par de vértices (V, V ) de G de grau ímpar, o peso p(v, V ) de um caminho mínimo ligando V e V. Podemos então escolher como emparelhar os vértices de grau ímpar: queremos que a soma dos pesos p(v, V ) de todas os pares (V, V ) de nosso emparelhamento seja a menor possível. Agora podemos também responder à nossa segunda pergunta: os caminhos reais que vão substituir as arestas virtuais são exatamente os caminhos mínimos determinados pelo algoritmo de Dijkstra. Resumindo o algoritmo: Para cada par (V, V ) de vértices de G de grau ímpar, use o algoritmo de Dijkstra para determinar um caminho de peso mínimo ligando V e V ; 9

10 Figure 4: Um grafo não euleriano O número de vértices de G de grau ímpar sendo par, podemos agrupar eles por pares (V 1, V 1), (V 2, V 2),..., (V n, V n); escolhemos o emparelhamento que minimiza a soma n i=1 p(v i, V i ); Criamos um grafo virtual G acrescentando a G as arestas (V 1, V 1), (V 2, V 2),..., (V n, V n); observamos que todos o vértices do grafo virtual têm grau par: os graus pares de G não mudaram e os graus ímpares foram acrescentados de 1; O grafo G sendo euleriano, criamos um ciclo euleriano C nele, que passa exatamente uma vez por cada aresta, inclusive as reais (isto é as que já pertenciam a G) e as virtuais, isto é (V 1, V 1), (V 2, V 2),..., (V n, V n); Criamos o caminho fechado C em G, da seguinte maneira: percorremos as arestas reais de C e trocamos cada aresta virtual (V i, V i ) por um caminho de peso mínimo ligando V i a V i em G. Teorema 5 O caminho criado no algoritmo acima tem peso mínimo entre todos aqueles que passam pelo menos uma vez por todas as arestas de G. Exemplo 6 Vamos implementar o algoritmo do carteiro no grafo G da Figura 4. Primeiramente, identificamos os vértices de grau ímpar de G, isto é, V 1, V 2, V 6 e V 7. 10

11 Logo, usamos o algoritmo de Dijkstra para calcular os pesos dos caminhos mínimos entre estes quatro vértices. Observe que precisamos usar apenas três vezes o algoritmo de Dijkstra. Com efeito, determinamos primeiramente uma árvore mínima com respeito a V 1, o que nós dá p(v 1, V 2 ) = 1, p(v 1, V 6 ) = 3 e p(v 1, V 7 ) = 6. Depois, fazemos uma árvore mínima com respeito a V 2, que nós dá p(v 2, V 6 ) = 4 e p(v 2, V 7 ) = 5. Logo falta só calcular p(v 6, V 7 ), que podemos determinar com uma árvore mínima em relação a V 6 ou a V 7, dando em ambos casos p(v 6, V 7 ) = 8. Observe também que não é necessário determinar a árvore mínima completa: uma vez que temos determinado os pesos requeridos, podemos parar o algoritmo. Agora, vamos examinar os pesos dos possíveis emparelhamentos dos vértices de grau ímpar para selecionar as arestas virtuais a acrescentar para obter um grafo virtual euleriano. Os três emparelhamentos possíveis são ( (V 1, V 2 ), (V 6, V 7 ) ), de peso total = 9, ( (V 1, V 6 ), (V 2, V 7 ) ), de peso = 8 e ( (V 1, V 7 ), (V 2, V 7 ) ), de peso = 10. Escolhemos então o segundo deles. O grafo virtual G obtido a partir de G acrescentando as arestas (V 1, V 6 ) e (V 2, V 7 ) é euleriano, portanto podemos usar o algoritmo da Seção 2 para encontrar um ciclo euleriano: C = (V 1, V 2, V 5, V 3, V 8, V 5, V 7, V 2, V 7, V 6, V 4, V 1, V 6, V 1 ). Observe que em G, têm duas arestas ligando V 1 e V 6, assim como V 2 e V 7, uma sendo real (i.e. pertencendo a G) e a outra virtual, e por isso na sequência de vértices temos em seguida V 1 e V 6 (assim como V 2 e V 7 ). Não tem importância se a primeira aresta a ser visitada é a real ou a virtual, já que não afeta o peso final do caminho. Para encontrar um caminho em G de menor peso, falto só trocar as duas arestas virtuais por um caminho de menor peso em G. Trocamos então a aresta virtual (V 1, V 6 ) pelo caminho (V 1, V 4, V 6 ) e a aresta virtual (V 2, V 7 ) por (V 2, V 5, V 7 ), obtemos finalmente um caminho fechado de peso mínimo: C = (V 1, V 2, V 5, V 3, V 8, V 5, V 7, V 2, V 5, V 7, V 6, V 4, V 1, V 4, V 6, V 1 ) 5 Árvores de peso mínimo: os algoritmos de Prim e Kruskal Seja G um grafo conexo com pesos. Um subgrafo mínimo H é uma subgrafo gerador que tem peso menor que qualquer outro gerador. É fácil ver que tal gerador é necessariamente uma árvore; com efeito se um grafo gerador tiver um ciclo, podemos tirar uma aresta deste ciclo, o grafo assim obtido fica sendo gerador, mas tem peso menor; portanto uma gerador com ciclos não pode ter peso mínimo. Em seguida veremos dois algoritmos diferentes que constroem uma árvore geradora de peso mínimo. 11

12 Observação 3 As árvores de peso mínimo não devem ser confundidas com as árvores mínimas encontradas no algoritmo de Dijkstra. 5.1 Algoritmo de Kruskal O príncipio deste algoritmo é muito simples: ele consiste em construir um subgrafo de G acrescentando arestas sem nunca criar ciclo. O algoritmo termina quando o subgrafo assim criado é gerador. Sendo gerador e sem ciclos, ele é uma árvore. Intuitivamente, para criar uma árvore de peso menor, a cada etapa acrescentaremos a aresta de menor peso possível que não crie ciclo, e de fato a árvore assim criada é mínima: Teorema 6 O algoritmo de Kruskal constrói uma árvore geradora de peso mínimo. Exemplo 7 Seja G o grafo com pesos da Figura 5. Uma sequência possível de arestas escolhidas pelo algoritmo de Kruskal é (D, T, H, C, O, E, Q, F, L, U). Observe que o algoritmo poderia começar pelas arestas H ou T que têm também peso mínimo. Além disso, a escolha da quarta aresta poderia ter sido O em vez de C. Finalmente, na escolha da oitava aresta, era possível escolher B ou L em vez de F, porém a escolha de F excluiria a de D e reciprocamente, por que criaria um ciclo. 5.2 Algoritmo de Prim O príncipio do algoritmo de Prim, que cria também uma árvore geradora de peso mínimo é parecido ao de Kruskal, a única diferença sendo que a sequência de arestas construídas é a cada etapa uma árvore, exatamente como no algoritmo de Dijkstra. Porém aqui a aresta escolhida a cada etapa é a de menor peso (nada de caminho mínimo!). O algoritmo procede então come segue: 1) Escolha uma aresta A 1 = (V 0, V 1 ) de menor peso em G; a árvore formada por A 1 e os seus vértices adjacentes é chamada H 1 ou seja, H 1 = ({V 0, V 1 }, {A 1 }); 2) Escolha uma aresta A 2 = (V, V 2 ) com V H 1 e V 2 / H 1 que não crie ciclo e que seja de menor peso; Seja H 2 o grafo obtido acrescentando a H 1 o vértice V 2 e a aresta A 2, ou seja H 2 = (V 2, A 2 ) com V 2 = {V 0, V 1, V 2 } e A 2 = {A 1, A 2 }; 2 ) Repetimos a etapa anterior: escolhemos uma aresta A n+1 = (V, V n+1 ) com V H n e V n+1 / H n que não crie ciclo e que seja de menor peso; logo definimos H n+1 como sendo o grafo obtido acrescentando a H n o vértice V n+1 e a aresta A n+1, ou seja H n+1 = (V n+1, A n+1 ) com V n+1 = V n {V n+1 } e A n+1 = A n {A n+1 }; O algoritmo termina quando a árvore H n é geradora. 12

13 13 Figure 5: Um grafo e duas árvores mínimas

14 Teorema 7 A árvore construída no algoritmo acima é uma árvore geradora de peso mínimo. Exemplo 8 Seja G o grafo com pesos da Figura 5. Uma das sequências possíveis de arestas escolhidas pelo algoritmo de Prim é (D, C, E, H, B, Q, T, O, L, U). Observe que, como no caso do algoritmo de Kruskal, o algoritmo poderia começar pelas arestas H ou T. Porém a sequência das arestas teria sida completamente diferente. Começando com H, as sequências possíveis são (H, Q, T, O, B, D, C, E, L, U) e (H, Q, T, O, F, E, D, C, L, U). Observe que podemos tomar como quinta aresta ambos B ou F. Esta escolha acarreta mudanças na seguida, já que se escolhermos B, fica possível escolher logo a aresta D que tem peso 1. No caso contrario, D não sai da árvore formada pelas arestas (H, Q, T, O, F ) e a escolha da sexta aresta é portanto E. 6 Exercícios 1. Seja G = (V, A) um grafo conexo e A uma aresta de G tal que o grafo G = (V, A ), com A = A {A} obtido tirando a aresta A de G não seja mais conexo. Demonstre que o grafo G não é euleriano. 2. Demonstre que uma árvore tem pelo menos dois vértices de grau Dê um exemplo de grafo com n V vértices e n A arestas tal que n V = n A + 1 e que não seja uma árvore. 4. Seja G um grafo com n V vértices, n A arestas e n C componentes conexas. Demonstra que n V n A + n C. 5. Implemente o algoritmo de Dijkstra no grafo da Figura 5, a partir do vértice adjacente às arestas A e C (esquina de cima a esquerda) 6. Implemente o algoritmo do carteiro no grafo com peso das Figuras 3 e (*) Seja H uma árvore com pesos. Demonstre que um caminho fechado solução do problema do carteiro (i.e. que passa pelo menos uma vez por cada aresta de H) passa exatamente duas vezes por cada aresta. 8. Implemente os algoritmos de Kruskal e Prim nos grafos das Figuras 3 e 4 9. Dê um exemplo de um árvore H de um grafo com peso G tal que H seja uma árvore mínima em relação a algum vértice V 0, mas que não seja uma árvore de peso mínimo. 14

x y Grafo Euleriano Figura 1

x y Grafo Euleriano Figura 1 Grafo Euleriano Um caminho simples ou um circuito simples é dito euleriano se ele contém todas as arestas de um grafo. Um grafo que contém um circuito euleriano é um grafo euleriano. Um grafo que não contém

Leia mais

Capítulo 2- Modelos de grafos.

Capítulo 2- Modelos de grafos. Capítulo 2- Modelos de grafos. 2.1- Introdução (pág. 8) [Vídeo 24] Grafo- é um esquema constituído por pontos (ou vértices) e por segmentos (ou arestas). (8) Exemplo 1(pág.8) Um grafo diz-se conexo se

Leia mais

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17)

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17) Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17) Professor: Pedro Nóia Livro adotado: Matemática Aplicada às Ciências Sociais- 11º ano Elisabete Longo e Isabel

Leia mais

1 Trajeto Euleriano. > Trajeto Euleriano 0/20

1 Trajeto Euleriano. > Trajeto Euleriano 0/20 Conteúdo 1 Trajeto Euleriano > Trajeto Euleriano 0/20 Um trajeto Euleriano em um grafo G é um trajeto que utiliza todas as arestas do grafo. Definição Um grafo G é Euleriano se e somente se possui um trajeto

Leia mais

Noções da Teoria dos Grafos

Noções da Teoria dos Grafos Noções da Teoria dos Grafos André Arbex Hallack Índice 1 Introdução e definições básicas. Passeios eulerianos 1 2 Ciclos hamiltonianos 7 3 Árvores 11 4 Emparelhamento em grafos 15 5 Grafos planares: Colorindo

Leia mais

Noções da Teoria dos Grafos. André Arbex Hallack

Noções da Teoria dos Grafos. André Arbex Hallack Noções da Teoria dos Grafos André Arbex Hallack Junho/2015 Índice 1 Introdução e definições básicas. Passeios eulerianos 1 1.1 Introdução histórica..................................... 1 1.2 Passeios

Leia mais

Noções da Teoria dos Grafos. André Arbex Hallack

Noções da Teoria dos Grafos. André Arbex Hallack Noções da Teoria dos Grafos André Arbex Hallack Junho/2015 Índice 1 Introdução e definições básicas. Passeios eulerianos 1 2 Ciclos hamiltonianos 5 3 Árvores 7 4 Emparelhamento em grafos 11 5 Grafos planares:

Leia mais

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos. 1 Árvores Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos. Um grafo simples sem ciclos mas não conexo (em que cada componente conexa é portanto uma árvore) chama-se uma floresta. Numa

Leia mais

As Pontes de Königsberg

As Pontes de Königsberg As Pontes de Königsberg Anderson Freitas Ferreira e Lívia Minami Borges 13 de junho de 2015 Resumo A teoria de grafos teve seu início em 1736, quando Euler utilizou uma estrutura para resolver o Problema

Leia mais

Grafos: árvores geradoras mínimas. Graça Nunes

Grafos: árvores geradoras mínimas. Graça Nunes Grafos: árvores geradoras mínimas Graça Nunes 1 Motivação Suponha que queremos construir estradas para interligar n cidades Cada estrada direta entre as cidades i e j tem um custo associado Nem todas as

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Grafos Eulerianos Preparado a partir do texto: Rangel, Socorro.

Leia mais

1 Congruências e aritmética modular

1 Congruências e aritmética modular 1 Congruências e aritmética modular Vamos considerar alguns exemplos de problemas sobre números inteiros como motivação para o que se segue. 1. O que podemos dizer sobre a imagem da função f : Z Z, f(x)

Leia mais

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 11: Introdução aos Grafos

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 11: Introdução aos Grafos Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 11: Introdução aos Grafos Indução Finita Indução Finita é uma técnica para provar teoremas também usada no projecto de algoritmos. Suponha

Leia mais

Introdução à Teoria dos Grafos

Introdução à Teoria dos Grafos Capítulo 1 Introdução à Teoria dos Grafos 1.1 História O primeiro problema cuja solução envolveu conceitos do que viria a ser teoria dos grafos, denominado "problema das pontes de Königsberg", foi resolvido

Leia mais

XXXVII OLIMPÍADA PAULISTA DE MATEMÁTICA Prova da Primeira Fase 9 de agosto de 2014 Nível (6º e 7º anos do Ensino Fundamental)

XXXVII OLIMPÍADA PAULISTA DE MATEMÁTICA Prova da Primeira Fase 9 de agosto de 2014 Nível (6º e 7º anos do Ensino Fundamental) XXXVII OLIMPÍADA PAULISTA DE MATEMÁTICA Prova da Primeira Fase 9 de agosto de 2014 Nível (6º e 7º anos do Ensino Fundamental) Resoluções www.opm.mat.br PROBLEMA 1 a) O total de segundos destinados à visualização

Leia mais

Matemática Discreta. Aula 06: Teoria dos Grafos. Tópico 01: Grafos e suas Representações. Observação

Matemática Discreta. Aula 06: Teoria dos Grafos. Tópico 01: Grafos e suas Representações. Observação Aula 06: Teoria dos Grafos Tópico 01: Grafos e suas Representações Nesta aula nós passamos a estudar um outro assunto, mas que também tem muita aplicação na vida prática, a Teoria dos Grafos. Para esta

Leia mais

Grafos IFRN. Prof.Robinson Alves

Grafos IFRN. Prof.Robinson Alves Grafos IFRN Prof.Robinson Alves Caminhos É uma seqüência de arestas onde o vértice final de uma aresta é o vértice inicial da próxima v c c3 c1 c6 c4 {c1,c,c4,c5,c6} {c,c3,c4,c5} {,v,,,v5} {v,,,v5,} c5

Leia mais

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré PERCURSOS André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré Serra 2011 Índice 1...O que é caminho e circuito 1.1...Caminho 1.2...Circuito 1.3...Classificação 2...Caminhos Eulerianos 2.1...Definição

Leia mais

1. O que podemos dizer sobre a imagem da função. f : Z Z, f(x) = x 2 + x + 1?

1. O que podemos dizer sobre a imagem da função. f : Z Z, f(x) = x 2 + x + 1? 1 Congruências e aritmética modular Vamos considerar alguns exemplos de problemas sobre números inteiros como motivação para o que se segue. 1. O que podemos dizer sobre a imagem da função f : Z Z, f(x)

Leia mais

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1 DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA 1 1. Considere a soma S n = 1 2 0 + 2 2 1 + 3 2 2 + + n 2 n 1. Mostre, por indução finita, que S n = (n 1)2 n + 1. Indique claramente a base da indução, a

Leia mais

Algoritmos de aproximação - Problema do caixeiro viajante

Algoritmos de aproximação - Problema do caixeiro viajante Algoritmos de aproximação - Problema do caixeiro viajante Marina Andretta ICMC-USP 30 de setembro de 2015 Baseado no livro Uma introdução sucinta a Algoritmos de Aproximação, de M. H. Carvalho, M. R. Cerioli,

Leia mais

Grafos Eulerianos e o Problema do Carteiro Chinês

Grafos Eulerianos e o Problema do Carteiro Chinês Prof. Ademir A. Constantino DIN - UEM 1 Grafos Eulerianos e o Problema do Carteiro Chinês Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá Prof. Ademir A. Constantino

Leia mais

Alguns passos da prova do Teorema de Runge

Alguns passos da prova do Teorema de Runge Alguns passos da prova do Teorema de Runge Roberto Imbuzeiro Oliveira 15 de Junho de 2011 1 Os principais passos da prova Teorema 1 Sejam U C aberto, K U compacto e f : U C holomorfa Seja A C \U tal que

Leia mais

Circuitos Hamiltorianos

Circuitos Hamiltorianos Circuitos Hamiltorianos Vimos que o teorema de euler resolve o problema de caracterizar grafos que tenham um circuito em que cada aresta apareça exatamente uma vez. Vamos estudar aqui uma questão relacionada.

Leia mais

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO Profa. Kathya Collazos Linares *As aulas baseiam-se no material do Professor Antonio Alfredo Ferreira Loureiro; Jorge Figueiredo e Judith Gersting Árvore

Leia mais

Teoria dos Grafos. Árvores Geradoras

Teoria dos Grafos. Árvores Geradoras Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Silvio A. de Araujo Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br, saraujo@ibilce.unesp.br Preparado a partir

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Árvores Algoritmo de Kruskal O algoritmo de Kruskal permite determinar a spanning tree de custo mínimo. Este custo corresponde à soma dos pesos (distância, tempo, qualidade,...) associados

Leia mais

Grafos. Rafael Kazuhiro Miyazaki - 21 de Janeiro de 2019

Grafos. Rafael Kazuhiro Miyazaki - 21 de Janeiro de 2019 21 de Janeiro de 2019 1 Definições Definição 1. (Grafo) Um grafo G = (V, A) é constituido por um conjunto V de vértices e um conjunto A V V de arestas. Usualmente representamos o conjunto V como pontos

Leia mais

GRAFOS: UMA INTRODUÇÃO

GRAFOS: UMA INTRODUÇÃO GRAFOS: UMA INTRODUÇÃO Vilmar Trevisan -Instituto de Matemática - UFRGS Junho de 2006 Grafos: uma introdução Informalmente, um grafo é um conjunto de pontos no plano ligados entre por flechas ou por segmentos

Leia mais

SCC603 Algoritmos e Estruturas de Dados II Prof.a Rosane Minghim 1o sem. 2013

SCC603 Algoritmos e Estruturas de Dados II Prof.a Rosane Minghim 1o sem. 2013 SCC603 Algoritmos e Estruturas de Dados II Prof.a Rosane Minghim 1o sem. 2013 Lista de Exercícios 1 1) Escrever em C funções para: a) Obter todos os nós adjacentes (vizinhos) a um nó do grafo, dado que

Leia mais

3 O Teorema de Ramsey

3 O Teorema de Ramsey 3 O Teorema de Ramsey Nesse capítulo enunciamos versões finitas e a versão infinita do Teorema de Ramsey, além das versões propostas por Paris, Harrington e Bovykin, que serão tratadas no capítulos subseqüentes.

Leia mais

Grafos. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Grafos. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo PMR2300 Escola Politécnica da Universidade de São Paulo Um grafo é uma estrutura que generaliza árvores, sendo formado por nós e arestas. Cada nó em um grafo pode ser conectado a vários outros nós por

Leia mais

Pontos extremos, vértices e soluções básicas viáveis

Pontos extremos, vértices e soluções básicas viáveis Pontos extremos, vértices e soluções básicas viáveis Marina Andretta ICMC-USP 19 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta

Leia mais

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47 1 / 47 MATEMÁTICA DISCRETA Patrícia Ribeiro Departamento de Matemática, ESTSetúbal 2018/2019 2 / 47 1 Combinatória 2 Aritmética Racional 3 3 / 47 Capítulo 3 4 / 47 não orientados Um grafo não orientado

Leia mais

Planaridade AULA. ... META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de:

Planaridade AULA. ... META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de: Planaridade AULA META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de: Distinguir grafo planar e plano; Determinar o dual de um grafo; Caracterizar

Leia mais

15 - Coloração Considere cada um dos grafos abaixo:

15 - Coloração Considere cada um dos grafos abaixo: 15 - Coloração Considere cada um dos grafos abaixo: a) Quantas cores são necessárias para colorir os vértices de um grafo de maneira que dois vértices adjacentes não recebam a mesma cor? b) Qual é o número

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 13: Árvores. Departamento de Matemática Aplicada

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 13: Árvores. Departamento de Matemática Aplicada Teoria dos Grafos Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo Departamento de Matemática Aplicada Capítulo 13: Árvores Preparado a partir do texto: Rangel, Socorro. Teoria do Grafos,

Leia mais

Corte Máximo em Grafos Notas de aula de MAC-5727

Corte Máximo em Grafos Notas de aula de MAC-5727 Corte Máximo em Grafos Notas de aula de MAC-577 (Material Extra do Capítulo ) Prof. a Yoshiko Wakabayashi Versão pós-aula feita por Bruno Takahashi C. de Oliveira em 09/03/09 15 de agosto de 016 1 Definições

Leia mais

2º Trabalho Prático - Algoritmos em grafos

2º Trabalho Prático - Algoritmos em grafos Page of LEIC - AEDII - 00/003 - º Semestre º Trabalho Prático - Algoritmos em grafos Introdução Conteúdo do trabalho O segundo trabalho consiste no desenvolvimento de um programa em Java de aplicação de

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 16: Grafos Planares. Departamento de Matemática Aplicada

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 16: Grafos Planares. Departamento de Matemática Aplicada Teoria dos Grafos Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo Departamento de Matemática Aplicada Capítulo 16: Grafos Planares Preparado a partir do texto: Rangel, Socorro. Teoria do

Leia mais

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016 Método Simplex dual Marina Andretta ICMC-USP 24 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211 - Otimização

Leia mais

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações? 8/0/06 GRAFOS Prof. André Backes Definição Como representar um conjunto de objetos e as suas relações? Diversos tipos de aplicações necessitam disso Um grafo é um modelo matemático que representa as relações

Leia mais

2. Desenhe o grafo orientado G = (X, Γ) para: 3. Em cada alínea dois grafos são iguais. Identifique-os. (a) (b) (c)

2. Desenhe o grafo orientado G = (X, Γ) para: 3. Em cada alínea dois grafos são iguais. Identifique-os. (a) (b) (c) 1. Desenhe o grafo não orientado G = (X, Γ) para: (a) X = {a, b, c, d} e Γ = {{a, b}, {b, c}, {c, d}}. (b) X = {a, b, c, d} e Γ = φ. (c) X = {1, 2, 3, 4, 5, 6, 7, 8} e Γ = {{1, 2}, {2, 2}, {2, 3}, {3,

Leia mais

Existem infinitos números de Carmichael, mas não provaremos isso neste curso.

Existem infinitos números de Carmichael, mas não provaremos isso neste curso. 6 Pseudoprimos 6.1 O Pequeno Teorema de Fermat nos diz que, se n é primo, então temos b n b (mod n) para todo b Z. Portanto, a contrapositiva diz que se temos b n b (mod n) ( ) para algum b Z, então n

Leia mais

Teoria dos Grafos. Coloração de Vértices

Teoria dos Grafos. Coloração de Vértices Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Silvio A. de Araujo Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br, saraujo@ibilce.unesp.br Coloração de

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/26 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)

Leia mais

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado.

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado. PUC-Rio Departamento de Informática Profs. Marcus Vinicius S. Poggi de Aragão Período: 0. Horário: as-feiras e as-feiras de - horas de maio de 0 ESTRUTURAS DISCRETAS (INF 6) a Lista de Exercícios Procure

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada Teoria dos Grafos Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo Departamento de Matemática Aplicada Capítulo 20: Decomposições de Arestas Preparado a partir da ref.: J.M. Aldous, R. Wilson,

Leia mais

Representação decimal dos números racionais

Representação decimal dos números racionais Representação decimal dos números racionais Alexandre Kirilov Elen Messias Linck 21 de março de 2018 1 Introdução Um número é racional se puder ser escrito na forma a/b, com a e b inteiros e b 0; esta

Leia mais

Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução matemática e divisibilidade. 5 Congruências lineares

Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução matemática e divisibilidade. 5 Congruências lineares Programa Matemática Discreta 2007/08 Jorge Manuel L. André FCT/UNL 1 Parte 1 - Conjuntos e Aplicações 1 Conjuntos 2 Relações Binárias 3 Aplicações 4 Indução matemática e divisibilidade 5 Congruências lineares

Leia mais

Capítulo 1 Conceitos e Resultados Básicos

Capítulo 1 Conceitos e Resultados Básicos Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko Capítulo 1 Conceitos e Resultados Básicos Um grafo é um par ordenado (V, A), onde V e A são conjuntos disjuntos, e cada elemento

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Existem três companhias que devem abastecer com gás, eletricidade e água três prédios diferentes através de tubulações subterrâneas. Estas tubulações podem estar à mesma profundidade? Isto

Leia mais

Material Teórico - Módulo Cônicas. Elipses. Terceiro Ano do Ensino Médio

Material Teórico - Módulo Cônicas. Elipses. Terceiro Ano do Ensino Médio Material Teórico - Módulo Cônicas Elipses Terceiro Ano do Ensino Médio Autor: Prof. Fabrício Siqueira Benevides Revisor: Prof. Antonio Caminha M. Neto 1 Introdução Conforme mencionamos na primeira aula

Leia mais

NÚMEROS INTEIROS E CRIPTOGRAFIA UFRJ

NÚMEROS INTEIROS E CRIPTOGRAFIA UFRJ NÚMEROS INTEIROS E CRIPTOGRAFIA UFRJ GABARITO LISTA 6: ALGORITMO CHINÊS DO RESTO 1. Ver gabarito das questões do livro. 2. Aplique o Algoritmo de Fermat para encontrar 999367 = 911 1097. Como 911 e 1097

Leia mais

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis.

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Solução básica viável inicial Marina Andretta ICMC-USP 10 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211

Leia mais

Grafo planar: Definição

Grafo planar: Definição Grafo planar Considere o problema de conectar três casas a cada uma de três infraestruturas (gás, água, energia) como mostrado na figura abaixo. É possível fazer essas ligações sem que elas se cruzem?

Leia mais

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira Ciência da Computação GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira Árvore Geradora (spanning tree) É um subconjunto de um grafo G que possui todos os vértices

Leia mais

Sub-grafo. Árvore Geradora Mínima

Sub-grafo. Árvore Geradora Mínima Comentários da aula anterior Componentes Fortemente Conectados (algoritmo) 1. Chama BuscaEmProfundidade (G) para obter os tempos de término (t[u], ou f[u]) para todos os vértices de G, isto é, enquanto

Leia mais

Tópicos de Matemática Finita 1 a Chamada 30 de Junho de 2001

Tópicos de Matemática Finita 1 a Chamada 30 de Junho de 2001 Código do Exame: 02 Tópicos de Matemática Finita a Chamada 30 de Junho de 200 Nome: Número: Curso: O exame que vai realizar tem a duração de 3 horas. consiste em: 2 questões de ecolha múltipla, valendo

Leia mais

Tópicos de Matemática Finita 1 a Chamada 30 de Junho de 2001

Tópicos de Matemática Finita 1 a Chamada 30 de Junho de 2001 Código do Exame: 0 Tópicos de Matemática Finita a Chamada 30 de Junho de 200 Nome: Número: Curso: O exame que vai realizar tem a duração de 3 horas. consiste em: 2 questões de ecolha múltipla, valendo

Leia mais

14 Coloração de vértices Considere cada um dos grafos abaixo:

14 Coloração de vértices Considere cada um dos grafos abaixo: 14 Coloração de vértices Considere cada um dos grafos abaixo: a) Quantas cores são necessárias para colorir os vértices de um grafo de maneira que dois vértices adjacentes não recebam a mesma cor? b) Qual

Leia mais

Departamento de Matemática da Universidade de Aveiro Matemática Discreta. A prova consta de 4 questões cada uma cotada com 5 valores.

Departamento de Matemática da Universidade de Aveiro Matemática Discreta. A prova consta de 4 questões cada uma cotada com 5 valores. Departamento de Matemática da Universidade de Aveiro Matemática Discreta Exame Final ( 2 a Chamada: 22/0/2007 Licenciatura em Matemática (8220 Mest. Int. Eng. Computadores e Telemática (8240 Informações

Leia mais

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I edmar.kampke@ufes.br Introdução Teoria dos Grafos é o estudo das propriedades e estruturas dos grafos. O objetivo é, após modelar um problema

Leia mais

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 5 a Lista de Exercícios

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 5 a Lista de Exercícios UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO MATEMÁTICA COMBINATÓRIA 5 a Lista de Exercícios 1. O grafo de intersecção de uma coleção de conjuntos A 1,..., A n é o grafo

Leia mais

4 3 10! Resposta pedida: 3! x 4! = 144 Resposta: C

4 3 10! Resposta pedida: 3! x 4! = 144 Resposta: C ágina 80. reparar o Exame 0 07 Matemática A 4 0! 4 x x 0!. Devemos escolher, das oito posições, duas para as letras A: temos 8 formas de o fazer. Das seis posições restantes, uma tem de ser para a letra

Leia mais

76) 1.1 Sim 1.2 Não 1.3 Não

76) 1.1 Sim 1.2 Não 1.3 Não 6) 1.1 Sim 1.2 Não 1. Não 2.1 2.2 2.. Os grafos dos exercícios 2.1 e 2.2 são conexos, pois existe sempre uma sequência de arestas a unir quaisquer dois vértices. 4.1 Grafo I vértices: ; arestas: 2 Grafo

Leia mais

2 Relação entre soma dos graus e número de arestas

2 Relação entre soma dos graus e número de arestas Rio de Janeiro, 24 de Outubro de 2011. LISTA DE ESTRUTURAS DISCRETAS PROFESSOR: EDUARDO LABER OBSERVAÇÕES: Exercícios marcados com são mais complicados. 1 Isomorfismo 1. Seja G =(V,E) um grafo simples.

Leia mais

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Grafos: componentes fortemente conexos, árvores geradoras mínimas Grafos: componentes fortemente conexos, árvores geradoras mínimas SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina 1 Componentes fortemente conexos Um componente fortemente

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF Estruturas de Dados Avançadas Grafos // DI, PUC-Rio Estruturas de Dados Avançadas. Aplicações de grafos grafo vértices arestas Cronograma tarefas restrições de preferência Malha viária interseções

Leia mais

Representação decimal dos números racionais

Representação decimal dos números racionais Representação decimal dos números racionais Alexandre Kirilov Elen Messias Linck 4 de abril de 2017 1 Introdução Um número é racional se puder ser escrito na forma a/b, com a e b inteiros e b 0; esta é

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 11: Grafos Eulerianos. Departamento de Matemática Aplicada

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 11: Grafos Eulerianos. Departamento de Matemática Aplicada Teoria dos Grafos Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo Departamento de Matemática Aplicada Capítulo 11: Grafos Eulerianos Preparado a partir do texto: Rangel, Socorro. Teoria do

Leia mais

Módulo 2 OTIMIZAÇÃO DE REDES

Módulo 2 OTIMIZAÇÃO DE REDES Módulo 2 OTIMIZAÇÃO DE REDES Grafos e Redes Está contida na área de Pesquisa Operacional. Pode ser considerada como uma teoria baseada na interligação de pontos e linhas, utilizada principalmente na solução

Leia mais

OBMEP 2010 Soluções da prova da 2ª Fase Nível 2. Questão 1

OBMEP 2010 Soluções da prova da 2ª Fase Nível 2. Questão 1 Questão a) Para saber o número que deve dizer ao matemágico, Joãozinho deve fazer quatro contas: ª conta: multiplicar o número no cartão escolhido por 2; 2ª conta: somar 3 ao resultado da primeira conta;

Leia mais

Lógica Proposicional Parte 3

Lógica Proposicional Parte 3 Lógica Proposicional Parte 3 Nesta aula, vamos mostrar como usar os conhecimentos sobre regras de inferência para descobrir (ou inferir) novas proposições a partir de proposições dadas. Ilustraremos esse

Leia mais

Aula 3 Propriedades de limites. Limites laterais.

Aula 3 Propriedades de limites. Limites laterais. Propriedades de ites. Limites laterais. MÓDULO - AULA 3 Aula 3 Propriedades de ites. Limites laterais. Objetivos Estudar propriedades elementares de ites, tais como: soma, produto, quociente e confronto.

Leia mais

Espaços Euclidianos. Espaços R n. O conjunto R n é definido como o conjunto de todas as n-uplas ordenadas de números reais:

Espaços Euclidianos. Espaços R n. O conjunto R n é definido como o conjunto de todas as n-uplas ordenadas de números reais: Espaços Euclidianos Espaços R n O conjunto R n é definido como o conjunto de todas as n-uplas ordenadas de números reais: R n = {(x 1,..., x n ) : x 1,..., x n R}. R 1 é simplesmente o conjunto R dos números

Leia mais

Árvores Árvores Geradoras de Custo Mínimo 0/16

Árvores Árvores Geradoras de Custo Mínimo 0/16 Conteúdo 1 Árvores 2 Árvores Geradoras de Custo Mínimo Árvores Árvores Geradoras de Custo Mínimo 0/16 Árvores Definição (Grafo Acíclico) Um grafo acíclico é um grafo que não contém ciclos. Árvores Árvores

Leia mais

Tópicos de Matemática Finita Data: I II-1 II-2 II-3 II-4 III-1 III-2 III-3 III-4 IV-1 IV-2 IV-3 IV-4 Nota Final

Tópicos de Matemática Finita Data: I II-1 II-2 II-3 II-4 III-1 III-2 III-3 III-4 IV-1 IV-2 IV-3 IV-4 Nota Final Tópicos de Matemática Finita Data: 20-06-2003 1 a Época Correcção Código: 1B Nome: Número: Curso: O exame que vai realizar tem a duração de três horas. As respostas às perguntas do grupo I não necessitam

Leia mais

Regras de Feynman no espaço das posições

Regras de Feynman no espaço das posições em termos de diagramas (note que os fatores de simetria também já saíram certos): Teoria Quântica de Campos I 115 Regras de Feynman no espaço das posições Primeiramente vamos re-escrever o teorema de Wick

Leia mais

Árvore Geradora Mínima

Árvore Geradora Mínima GRAFOS ÁRVORE GERADORA MÍNIMA Prof. André Backes Árvore Geradora Mínima Definição Uma árvore geradora (do inglês, spanning tree) é um subgrafo que contenha todos os vértices do grafo original e um conjunto

Leia mais

2 Definição do Problema

2 Definição do Problema Definição do Problema. Formulação Matemática O problema do Fluxo Máximo entre todos os pares de nós surge no contexto de redes, estas representadas por grafos, e deriva-se do problema singular de fluxo

Leia mais

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist.

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist. CAMINHO DE CUSTO MÍNIMO Dados dois pontos A e B, em muitos problemas práticos fazemos 2 perguntas: 1. existe um caminho de A para B? ou 2. se existe mais de um caminho de A para B, qual deles é o mais

Leia mais

Redes. ADSA António Câmara

Redes. ADSA António Câmara Redes ADSA António Câmara Redes Método do caminho mais curto Localização de equipamentos Minimum spanning tree Carteiro chinês Caixeiro viajante Links Redes Redes são sistemas de linhas (arcos) ligando

Leia mais

Séries de Laurent e Teoremas de Cauchy

Séries de Laurent e Teoremas de Cauchy Séries de Laurent e Teoremas de Cauchy Roberto Imbuzeiro Oliveira 3 de Abril de 20 A maior parte destas notas tem como refererência o livro de David Ullrich, Complex Made Simple. Preliminares sobre séries

Leia mais

Dízimas e intervalos encaixados.

Dízimas e intervalos encaixados. Dízimas e intervalos encaixados. Recorde que uma dízima com n casas decimais é um número racional da forma a 0.a a 2...a n = a 0 + a 0 + a 2 0 2 + + a n n 0 n = a j 0 j em que a 0,a,...,a n são inteiros

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada Teoria dos Grafos Valeriano A de Oliveira, Socorro Rangel, Silvio A de Araujo Departamento de Matemática Aplicada Capítulo 12: Grafos Hamiltonianos Preparado a partir do texto: Rangel, Socorro Teoria do

Leia mais

Percursos em um grafo

Percursos em um grafo Percursos em um grafo Definição Um percurso ou cadeia é uma seqüência de arestas sucessivamente adjacentes, cada uma tendo uma extremidade adjacente à anterior e a outra a subsequente (à exceção da primeira

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. Teoria dos Grafos Valeriano A de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilceunespbr, socorro@ibilceunespbr Grafos Hamiltonianos Preparado a partir do texto: Rangel, Socorro

Leia mais

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33 Pesquisa em Grafos Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/2015 1 / 33 Pesquisa em Grafos Uma das tarefas mais importantes é saber percorrer um grafo, ou seja

Leia mais

Teoremas de uma, duas e três séries de Kolmogorov

Teoremas de uma, duas e três séries de Kolmogorov Teoremas de uma, duas e três séries de Kolmogorov 13 de Maio de 013 1 Introdução Nestas notas Z 1, Z, Z 3,... é uma sequência de variáveis aleatórias independentes. Buscaremos determinar condições sob

Leia mais

Teoria dos Grafos Caminhos. Profª. Alessandra Martins Coelho

Teoria dos Grafos Caminhos. Profª. Alessandra Martins Coelho Teoria dos Grafos Caminhos Profª. Alessandra Martins Coelho junho/2014 Conexidade Em grande parte de aplicações do modelo em grafos, as relações que envolvem os vértices formam uma estrutura contínua;

Leia mais

Grafos I. Figura 1: Mapa de Königsberg

Grafos I. Figura 1: Mapa de Königsberg Programa Olímpico de Treinamento Curso de Combinatória - Nível Prof. Bruno Holanda Aula 0 Grafos I O que é um grafo? Se você nunca ouviu falar nisso antes, esta é certamente uma pergunta que você deve

Leia mais

Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7.

Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7. Matemática Discreta Capítulo 7 SUMÁRIO CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7 Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante Newton José Vieira 30 de julho de 2007

Leia mais

Otimização. Otimização em Redes. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2

Otimização. Otimização em Redes. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2 Otimização Otimização em Redes Paulo Henrique Ribeiro Gabriel phrg@ufu.br Faculdade de Computação Universidade Federal de Uberlândia 2016/2 Paulo H. R. Gabriel (FACOM/UFU) GSI027 2016/2 1 / 51 Conteúdo

Leia mais

Aula 10: Tratabilidade

Aula 10: Tratabilidade Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas

Leia mais

Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios

Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios 1 Conceitos 1. Prove o Teorema da Amizade: em qualquer festa com pelo menos seis pessoas, ou três se conhecem

Leia mais

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos. 1 Árvores Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos. Um grafo simples sem ciclos mas não conexo (em que cada componente conexa é portanto uma árvore) chama-se uma floresta. Numa

Leia mais

Teoria dos Grafos. Árvores

Teoria dos Grafos.  Árvores Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Silvio A. de Araujo Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br, saraujo@ibilce.unesp.br Preparado a partir

Leia mais

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6 Lista 6 Exercício. O objetivo deste exercício é modelar o problema de emparelhamento em um grafo bipartido como um problema de fluxo, e verificar que o Teorema de Konig é essencialmente o Teorema de Fluxo

Leia mais

Introdução à Teoria dos Grafos. Isomorfismo

Introdução à Teoria dos Grafos. Isomorfismo Isomorfismo Um isomorfismo entre dois grafos G e H é uma bijeção f : V (G) V (H) tal que dois vértices v e w são adjacentes em G, se e somente se, f (v) e f (w) são adjacentes em H. Os grafos G e H são

Leia mais