Grafos: aplicações. Grafos: árvore geradora mínima

Documentos relacionados
Grafos: caminhos mínimos

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

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

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

Circuitos Hamiltorianos

Noções da Teoria dos Grafos

INF 1010 Estruturas de Dados Avançadas

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

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

Oalgoritmo de Dijkstra

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

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

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

Teoria dos Grafos AULA 1

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

APLICAÇÕES DE BUSCA EM GRAFOS

Teoria dos Grafos AULA 1

Teoria e Algoritmos em Grafos

Estruturas de Dados Grafos

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

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 8 Grafos. Estrutura de Dados 1

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

INF 1010 Estruturas de Dados Avançadas

Grafos: algoritmos de busca

GRAFOS. Introdução Conceitos Fundamentais

Matemática Discreta - Exercícios de Grafos

Teoria dos grafos. FATEC Carapicuíba Augusto de Toledo Cruz Junior

Grafos: caminhos mínimos

Árvore Geradora Mínima

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

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

Grafos Parte 1. Aleardo Manacero Jr.

Algoritmos em Grafos

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

Otimização em Grafos

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

UNIVERSIDADE FEDERAL DO PARÁ BIBLIOTECA DE OBJETOS MATEMÁTICOS COORDENADOR: Dr. MARCIO LIMA

Departamento de Engenharia de Produção UFPR 57

GRAFOS Aula 04 Caminhos, Conexidade e Distância Max Pereira

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Problema do Caminho Mínimo

Grafos - Motivação. Grafos - Motivação. Algoritmos e Estruturas de Dados II Introdução a Grafos

Sub-grafo. Árvore Geradora Mínima

5COP096 TeoriadaComputação

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

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

Redes. ADSA António Câmara

Cap. 2 Conceitos Básicos em Teoria dos Grafos

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

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

Teoria dos Grafos Introdu c ao

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Algoritmos e Estruturas de Dados II Grafos conceitos gerais. Thiago A. S. Pardo Profa. M. Cristina Material de aula da Profa. Josiane M.

Comunicação e redes. Aula 2: Teoria dos Grafos Conceitos básicos. Professor: Guilherme Oliveira Mota.

SCC Modelagem Computacional em Grafos Introdução a Grafos

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

Teoria dos Grafos. Profa. Alessandra Martins Coelho

Grafos Eulerianos e o Problema do Carteiro Chinês

Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem-MST)

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Capítulo 2- Modelos de grafos.

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

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II

Teoria dos Grafos. Edson Prestes

AULA 13 PROJETO E ANÁLISE DE ALGORITMOS. Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado

Grafos IFRN. Prof. Robinson Alves

TEORIA DOS GRAFOS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MATEMÁTICA DISCRETA II PROFº MARCOS NASCIMENTO

Problema da Árvore Geradora Mínima

Escola Básica e Secundária Mouzinho da Silveira. MACS 11.º Ano Problema do Caixeiro Viajante

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE MATEMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM ENSINO DE MATEMÁTICA

Pesquisa Operacional. Teoria dos Grafos

Alguns probleminhas...

06 Grafos: Caminhos Mínimos SCC0503 Algoritmos e Estruturas de Dados II

Introdução à Teoria do Grafos Notas de aula. Socorro Rangel últimas atualizações: (2009), (2012)

GRAFOS: UMA INTRODUÇÃO

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

Grafos: caminhos mínimos em Listas de Adjacência. Profa. Graça Nunes

Algoritmos de aproximação - Problema do caixeiro viajante

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

Grafos IFRN. Prof.Robinson Alves

Alg l ori r t i m t os e E str t u r tu t ra r s d e D ados I I Intr t o r duçã ç o ã a a Gr G a r f a o f s P of o a. M. C r C ist s ina n a /

Algoritmos e Estruturas de Dados II Introdução a Grafos. Divisão do arquivo

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

Teoria dos Grafos. Motivação

Grafos: caminhos (matriz adjacência)

ANÁLISE DE ALGORITMOS (INF 1721)

MÓDULO 3 - PROBLEMAS DE COBERTURAS DE ARCOS E NÓS

Problemas de otimização

Ciclos hamiltonianos e o problema do caixeiro viajante

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

Optimização em Redes e Não Linear

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes

As pontes de Königsberg

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Teoria dos Grafos. Edson Prestes

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 21

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

Problemas de Fluxo em Redes

Transcrição:

árvore geradora mínima caminhos mínimos problemas tipo 1 desejase conectar todos os computadores em um prédio usando a menor quantidade possível de cabos uma companhia aérea deseja voar para algumas cidades mas usando um conjunto de rotas que minimize o total de distâncias percorridas problema tipo 2 alguém precisa se deslocar de uma cidade para outra. Existem várias estradas que passam por diversas cidades. Qual delas oferece uma trajetória de menor caminho? como resolver esses problemas? dentre as possibilidades de conexão, achar a que usa menor quantidade de cabos e achar a que usa menor distância entre as cidades (problemas tipo 1); e encontrar o caminho mínimo entre duas cidades (problema tipo 2) C421C árvore geradora de um grafo um grafo não orientado G é uma árvore se satisfizer às condições G é conexo (para garantir a interligação de todos os vértices) G não tem ciclos e possui n vértices e n1 arestas uma árvore obtida pela remoção dos ciclos de um grafo é chamada de árvore geradora de um grafo seja o grafo G abaixo, a remoção de qualquer uma das arestas do ciclo, leva a uma árvore geradora G: C421C 1

uma árvore geradora mínima T é dentre todas as possíveis árvores geradoras do grafo, aquela que contém todos os vértices do grafo e apresenta a menor soma dos valores (pesos) associados às arestas árvore geradora mínima T cujo peso total é 12 T não é única, como podese observar no desenho abaixo: a aresta (3,5), pode ser substituída pela aresta (2,5), obtendose outra árvore geradora mínima de custo 12, também C421C solução dos problemas 1 e 2 obter um subconjunto T A (árvore geradora mínima) acíclico que conecta todos os vértices de G e cujo peso total p(t) = Σ p(u,v) T é minimizado algoritmos para obter a árvore geradora grafos não valorados algoritmo de PATON algoritmos para obter a árvore geradora mínima grafos valorados *** algoritmo de KRUSKAL algoritmo de PRIM *** os que serão abordados no curso C421C 2

algoritmo de KRUSKAL (1956) passo 1) inicie com os n vértices e nenhuma aresta passo 2) ordene (em ordem ascendente de peso) as arestas em um FILA passo 3) acrescente uma aresta ainda não colocada e que não fecha ciclo passo 4) repita o passo 3 até que as n1 arestas tenham sido colocadas encontre a árvore geradora mínima, por Kruskal para o grafo abaixo: C421C pseudocódigo do algoritmo de KRUSTAL procedimento KRUSKAL; início para cada v G faça {para cada vértice do conjunto de vértices do grafo G} defina um conjunto disjunto C(v) {v}; {v é representante de C(v) e não pode pertencer a outro} crie uma fila ordenada Q com todas as arestas de G {em ordem ascendente de peso} T ; {inicializa a árvore geradora mínima} enquanto (T tem menos de n1 arestas) faça {n é o número de vértices de G} início retire {u, v} da fila Q; se (C(u) <> C(v)) {aresta que não forma um ciclo, os vértices não pertencem à mesma árvore} então início insira aresta {u, v} em T; unifique C(u) e C(v) em um grupo C(u,v); {o representante pode ser u ou v} destrua C(u) e C(v); fim; fim; {enquanto} liste T; {imprime as arestas da árvore geradora mínima T} fim; C421C 3

algoritmo de KRUSKAL árvore geradora mínima do grafo anterior (T) T = {(1,4), (5,6), (1,2), (4,6), (2,3)} animação do algoritmo de KRUSKAL http://students.ceid.upatras.gr/~papagel/project/kruskal.htm C421C algoritmo de PRIM (1957) notação: Grafo não orientado G (V,A) S V S = V S δs = conjunto de arestas (u,v) de G com um extremo (u) em S e o outro (v) em S T = árvore geradora mínima passo 1) construa a matriz de adjacências MA de G com pesos em MA[u,v] passo 2) escolha um vértice u qualquer de G, faça S = {u} e S = V S passo 3) encontre em MA a aresta (u,v) de menor custo de δs cujo extremo v esteja em S passo 4) inclua v em S, retireo de S passo 5) inclua (u,v) em T passo 6) repita os passos 3, 4 e 5 até que n1 arestas tenham sido incluídas em T C421C 4

pseudocódigo do algoritmo de PRIM procedimento PRIM; início construa a matriz de adjacências (MA) de G; {MA[i, j] contém o peso associado à aresta} escolha um vértice u qualquer de G; S {u}; {inclua u no conjunto S} S V S; {faça S igual aos elementos de V os elementos de S} T ; {inicializa T} enquanto (T tem menos de n1 arestas) faça {n é o número de vértices} início construa δs; {conjunto de arestas (u,v) de G com um extremo (u) em S e o outro (v) em S } encontre em MA a aresta (u,v) de menor custo de δs; S S + {v}; {inclua v no conjunto S} S S {v}; {retira v do conjunto S } insira aresta {u,v} emt; fim; {enquanto} liste T; {imprime as arestas da árvore geradora mínima T} fim; C421C algoritmo de PRIM encontre a árvore geradora mínima por Prim para o grafo abaixo: T = {(1,4), (5,6), (1,2), (4,6), (2,3)} animação do algoritmo de PRIM http://students.ceid.upatras.gr/~papagel/project/prim.htm C421C 5

Grafos: caminhos mínimos quando o grafo é sem pesos, a determinação de um caminho mais curto pode ser feita através de uma busca em largura caminho mais curto é aquele que apresenta o menor número de arestas quando o grafo tem pesos associados às arestas, o caminho mais curto pode não ser o que usa menos arestas dado um grafo dirigido e ponderado G = (V,A), desejase obter o caminho P mais curto a partir de um dado vértice origem s V até cada v V o comprimento (ou peso) de um caminho P é a soma dos pesos das arestas que compõem P C421C Grafos: caminhos mínimos exemplo prático: alguém precisa se deslocar de uma cidade para outra. Para isso, ela dispõe de várias estradas, que passam por diversas cidades. Qual delas oferece uma trajetória de menor caminho? algoritmos para solucionar o problema do caminho mais curto: Dijkstra (grafos dirigidos e não dirigidos com pesos não negativos) *** BellmanFord (grafos com pesos negativos) *** o que será abordado no curso C421C 6

Grafos: caminhos mínimos algoritmo de DIJKSTRA (1959) encontra o comprimento (ou peso) mínimo a partir de um vértice de partida s até todos os outros vértices do grafo comprimento (ou peso) mínimo de origem única se o vértice de partida for outro (# s), rodase o algoritmo novamente notação: grafo dirigido ponderado G (V,A) s é o vértice origem D[v] é o menor comprimento (ou peso) estimado de s até v em um determinado instante se é igual a, não existe caminho entre s e v Q = V S (lista ordenada com menor valor de D[v]) S contém os vértices com os caminhos mais curtos calculados até o momento NVERT é o número de vértices do grafo G MA = matriz de adjacências e LA = lista de adjacências C421C algoritmo de DIJKSTRA Grafos: caminhos mínimos passo 1) inicialização de D[v]: D[s]=0 e demais, iguais a passo 2) usase dois conjuntos: S, que representa todos os vértices v com caminhos calculados até o momento e o Q, simbolizando todos os outros vértices (V S) passo 3) realizase uma série de relaxamentos das arestas (distância dos menores caminhos são atualizadas) relaxamento (ou relaxação) de uma aresta (u,v) consiste em verificar se é possível melhorar o melhor comprimento (mínimo) até v obtido até o momento (se isto acontecer, D[v] deve ser atualizado) C421C 7

Grafos: caminhos mínimos pseudocódigo do algoritmo de DIJKSTRA procedimento DIJKSTRA (V, MA, LA, s, NVERT); início para i 0 até NVERT1 faça {para todo vértice pertencente ao grafo} D[i] infinito; D[s] 0; Q V; S ; enquanto (Q <> ) faça {enquanto houver vértice em Q} início u retira (Q); S S + {u}; {retira de Q o vértice com menor valor de D[ ]} para cada v LA[u] faça {para cada adjacente de u} se (D[v] > D[u] + MA[u,v]) {relaxamento de (u,v)} então D[v] D[u] + MA[u,v]; fim; para i 0 até NVERT1 faça imprima de, s, até, i, =, D[ i ]; {imprime o comprimento mais curto de s a i} fim; C421C algoritmo de DIJKSTRA exemplo_1 Grafos: caminhos mínimos C421C 8

algoritmo de DIJKSTRA exemplo_1 (cont.) Grafos: caminhos mínimos C421C algoritmo Dijkstra em C++ http://www.misalgoritmos.com/source154.html animação do algoritmo de Dijkstra http://students.ceid.upatras.gr/~papagel/project/kef5_7_1.htm alguns links de animações de jogos utilizando teoria de grafos http://www.math.ucalgary.ca/~laf/colorful/colorful.html problemas clássicos da literatura que envolvem grafos sete pontes de Königsberg caixeiro viajante C421C 9

o problema das sete pontes de Königsberg: foram construídas sete pontes que cruzavam o rio Pregel, ligando diferentes partes da cidade (antiga Prússia) como mostra a figura: é possível fazer um percurso de tal forma que se inicie e volte à mesma posição passando por todas as pontes somente uma única vez? C421C o problema das sete pontes de Königsberg marca o início da teoria dos grafos o matemático suíço, Leonhard Euler, em 1736, provou que não existia caminho que possibilitasse tais restrições para isso transformou os caminhos (pontes) em retas (arestas) e suas intersecções (ilhas, áreas de terra) em pontos (vértices) 4 vértices e 7 arestas C421C 10

o problema das sete pontes de Königsberg a ser resolvido é possível achar um caminho que comece e termine num vértice qualquer (A, B, C, ou D) e passe por cada aresta uma única vez? partindo do vértice A, toda vez que se passa por qualquer outro vértice, duas arestas são usadas: a de chegada e a de saída se for possível achar uma rota que usa todas as arestas do grafo e que começa e termina em A, por exemplo, o número total de chegadas e saídas de cada vértice deve ser um valor múltiplo de 2 no entanto, grau(a) = grau(c) = grau(d) = 3 e grau(b) = 5 (????) portanto a travessia proposta não é possível, cada ponto deve ter um número par de caminhos (um para entrar e outro para sair) C421C o problema do caixeiro viajante: traveling salesman problem (TSP): determinar a viagem de custo mínimo que o vendedor deve efetuar para visitar todas as cidades no seu território de vendas, começando e acabando na mesma localidade suponha o mapa abaixo mostrando quatro cidades (A,B,C,D) e as distâncias em km entre elas C421C 11

o problema do caixeiro viajante solução: enumere todos os possíveis circuitos começando e terminando em A calcule a distância de cada um deles determine o menor deles Rota (distância em km): ABCDA 30+30+25+40 = 125 ABDCA 30+35+25+50 = 140 ACBDA 50+30+35+40 = 155 ACDBA 50+25+35+30 = 140 ADBCA 40+35+30+50 = 155 ADCBA 40+25+30+30 = 125 tanto a rota ABCDA ou ADCBA tem uma distância total de 125 km C421C o problema do caixeiro viajante algoritmo para resolver o TSP atualmente, por força bruta, como feito no exemplo anterior para o grafo com 30 vértices existem 29! 8.84 10 30 circuitos diferentes começando e terminando num determinado vértice mesmo se cada circuito puder ser achado e calculado em apenas 1µs, seriam necessários, aproximadamente, 2.8 10 17 anos para solucionar o problema de descoberta dos possíveis circuitos neste tipo de computador C421C 12

Exercício 1) Existem 5 computadores em um prédio de 2 andares e a direção da empresa deseja interligálos de forma que cada um possa se comunicar a qualquer outro através de cabos: as distâncias (em metros) entre os pares de computadores são dadas pela tabela abaixo Utilizando o algoritmo de KRUSKAL, ache qual deve ser o projeto de interligação dos computadores para que se utilize o menor número possível de cabos. Apresente a quantidade total (em metros) de cabo necessário para a execução do projeto. C1 C2 C3 C4 C5 C1 C2 4 C3 10 27 C4 34 18 16 C5 22 15 33 36 C421C Exercício 2) Existem 6 pequenas ilhas em um arquipélago e o governo deseja construir 5 pontes conectandoas de forma que cada ilha possa ser alcançada de qualquer outra ilha através de uma ou mais pontes: o custo de construção de uma ponte é proporcional ao seu comprimento as distâncias (em milhas) entre os pares de ilhas são dadas pela tabela abaixo Utilizando o algoritmo de PRIM, ache quais pontes devem ser construídas para que o custo da construção seja mínimo e apresente a extensão total (em milhas) das pontes a serem construídas. I1 I2 I1 I2 24 I3 21 27 I4 34 18 I5 12 22 I6 28 16 I3 16 33 30 I4 36 40 I5 31 I6 C421C 13

Exercício 3) O grafo abaixo corresponde ao projeto de uma rede de computadores. Os vértices correspondem às máquinas e as arestas correspondem à possibilidade de conexão entre duas máquinas, juntamente com o correspondente custo de operação (por unidade de tempo) de cada uma. Esta rede deverá ser construída de forma que cada computador possa se comunicar (direta ou indiretamente) com cada um dos outros computadores, sempre a um custo mínimo de operação. como se poderia determinar quais as conexões que são inúteis? qual é o custo de operação mínimo da rede? C421C Exercício 4) Execute o algoritmo de Dijkstra para os grafos (a e b) abaixo: considerando como vértice origem s, o vértice 4 para a) considerando como vértice origem s, o vértice 1 para b) C421C 14

Exercício 5) A Empresa Brasileira de Correios e Telégrafos de Santa Rita mantém vários postos de coleta de correspondência espalhados pela cidade, inclusive em bairros mais afastados. A localização e a quantidade destes postos são algumas vezes modificadas de forma que diariamente o motorista responsável por recolher a correspondência recebe um esquema que mostra o melhor percurso para passar em todos os postos de coleta. Este esquema é montado manualmente por um funcionário da E.C.T. Este funcionário não agüenta mais as reclamações do motorista de que as rotas que ele traça nunca são as melhores. O chefe, sem saber como tratar o problema, resolve contratar um especialista (você), para resolvêlo. Como você modelaria o problema? Como encontrar a melhor rota? Que particularidades devem ser tratadas? C421C 15