Grafo: Algoritmos e Aplicações Leandro Colombi Resendo leandro@ifes.edu.br
Grafos: Algortimos e Aplicações Referências Basicas: Boaventura Netto, P. O., Grafos: Teoria, Modelos, Algoritmos, 2ª, SP, Edgar Blücher, 1996. Goldbarg, M.C. e Luna, H.P.L., Otimização Combinatória e Programação Linear: Modelos e Algoritmos, RJ, Campus, 2000. Referência complementar: Cormen, T.H, Leiserson, C.E, Rivest, R.L. e Stein, C., Algoritmos: Teoria e Prática, RJ, Campos, 2002. Ahuja, R.K., Magnanti, T.L. e Orlin, J.B., Network Flows, New Jersey, Prentice Hall, 1993.
Grafos: Algortimos e Aplicações Avaliação: Artigo (100%)
História Leonhard Euler e as Pontes de Königsberg (Primeira formalização de uma problema de grafos) É possível cruzar cada ponte uma única vez e voltar ao ponto de partida?
História Modelo de teoria de grafo 1º Teorema da Teoria dos Grafos: Euler estabeleceu um teorema que diz em que condições é possível percorrer cada linha exatamente uma vez e voltar ao ponto inicial.
Introdução Você é capaz de desenhar essa figura sem tirar o lapiz do papel? Temos que ligar luz, gás e telefone a três casas sem que as linhas se cruzem. Você é capaz de fazer isso?
Introdução - Aplicações Representação (em grafo) dos vôos internacionais em uma determinada hora do dia.
Introdução - Aplicações Jogos: Manipulação de dados
Introdução - Aplicações Industria de Confecções
Diagramas UML Introdução - Aplicações
Introdução - Aplicações Quantas cores são necessárias?
Introdução - Aplicações Localização de centros de distribuição
Notações e Definições: Informalmente Um conjunto de objetos e ligações (relações) entre eles, onde os objetos são chamados de vértices (nós) e as ligações, de arestas (enlace, arcos). Matemáticamente Um grafo pode ser definido como a relação, G, entre dois conjunto (G(V,A)); onde V é o conjunto dos vértices e A o conjunto das arestas.
Notações e Definições: Uma aresta é dita incidente com os vértices que ela liga. Se uma aresta é incidente em um único vértice é chamado de laço. Dois vértices são chamados de adjacentes se estão ligados pôr arestas. Um vértice é dito isolado, se não tem aresta incidindo sobre ele. Exemplo: Vértices Adjacentes: (v 1,v 2 ), (v 1,v 5 ), (v 2,v 3 ), (v 2,v 4 ), (v 3,v 5 ), (v 4,v 5 ). Vértice Isolado: v 6
Notações e Definições: Ordem de um Grafo, é o número de nós do mesmo( V = n). Grau de um vértice, é o número de arestas incidentes em um nó. Grafo regular, se dá quando todos os vértices possuem o mesmo grau. Exemplo: a) Grafo regular. b) Arestas paralelas em (v 5,v 3 ), Multigrafo.
Notações e Definições: Grafo ponderado Multigrafo Modelo da Pontes de Königsberg
Notações e Definições: Grafo direcionados Grafos bipartidos: dividindo os nós em dois conjunto (N 1 e N 2 ), somente existem arestas de N 1 para N 2 e vice-versa. Grafo Completo 1º Resultado: A max = n(n 1)/2 Grafo Complementar: O que falta para o grafo completo.
Grafo bipartidos Aplicações: Problema de Atribuição Problema de Transportes de carga Problema de transbordo Grafo direcionados e completos Aplicações: Roterisação de veículos e variações
Notações e Definições: Árvores: se o grafo não possui ciclos. Planar: quando traço em um plano duas arestas quaisquer não se cruzam. Planar NÃO Planar Aplicações: Indexação e busca de informações Aplicações: Problema das 4 cores Construção de circuito impresso
Notações e Definições: Rede (malha): Anel: NSF-net Compressão de nós RNP
Notações e Definições: Caminho: é uma sequência de arestas em que todos os nós visitados são distintos. Origem = H Destino = F Caminho = H A C F Comprimento = 22 Origem = 4 Destino = 2 Caminho = 4 3 2 Comprimento = 2
Notações e Definições: Isomorfismo: são grafos analiticamente idênticos, contudo são representados graficamente de forma diferentes. Uma aplicação:
Representação computacional Teoria de Grafos Matriz de adjacências (Grafo NÃO direcionado)
Representação computacional Teoria de Grafos Matriz de incidência (Grafo direcionado)
Representação computacional Lista encadeada Teoria de Grafos
Problemas Clássicos Problema do Caminho Teoria de Grafos Histórico 1ª solução: Sugerida por Trémaux para o labirinto do Minotauro. Aplicações: trânsito, transporte, roteamento, localização de sistemas discretos, etc. Não basta obter um caminho, para otimização de recursos precisamos do caminho mínimo.
Problemas Clássicos Problema do Caminho Mínimo entre s e d: é uma sequência de arestas que, passando por vétices distintos, liga o nó s ao d de forma a acumular o menor comprimento. Formulação: i x ij x ij i Min : x ji c x ij ij 1; 1; 0; i {0,1} ( i, j) s i i A ou s d i d s = origem d = destino
Problemas Clássicos Problema do Caminho Mínimo entre s e d: Algoritmos mais famosos: Algoritmo de Dijkstra Resolve o problema com um vérticefonte em grafos cujas arestas tenham peso maior ou igual a zero. Algoritmo de Bellman-Ford Resolve o problema para grafos com um vértice-fonte e arestas que podem ter pesos negativos.
Problemas Clássicos Ciclos e Circuito, Euleriano e Hamiltoniano: Ciclo: é um caminho fechada, ou seja, que inicia e termina em um mesmo nó. Onde cada aresta é vizitada um única vez. Circuito: é um caminho fechado em um grafo orientado. Percurso fechado: Euleriano: utiliza cada aresta do grafo um única vez. Hamiltoniano: Utiliza cada vértice do grafo unica vez.
Problemas Clássicos Ciclo Euleriano Teoria de Grafos Você é capaz de desenhar essa figura sem tirar o lapiz do papel? É possível cruzar cada ponte uma única vez e voltar ao ponto de partida? Sugestão: inicie pelo nó A.
Problemas Clássicos Ciclo Euleriano Resultado de Euler (Teorema): G tem uma ROTA EULERIANA precisamente quando todos os nós de G têm grau par. Idéia:
Problemas Clássicos Problema do Caixeiro Viajante: Consiste em vizitar todos os nós do grafo e voltar ao ponto de origem (percurso Hamiltoniano). Problema proposto por Willian Rowan Hamilton.
Problemas Clássicos Ciclo Hamiltoniano Problema do Caixeiro Viajante Teoria de Grafos
Problemas Clássicos Problema do Caixeiro Viajante: Algumas aplicações e referências Programação de operações de máquinas em manufaturas (Kusiak e Finke [1987]). Programação de transporte entre células de manufatura (Kusiak e Finke [1985]). Otimização de perfuração em placas de circuito impressos (Reinelt [1989]). Otimização do movimento de ferramentas de corte (Chauny et al. [1987]). Problemas de Roteamento de Veículos (Bodin [1983]). Problemas de Sequênciamento (Whitley [1991]). Trabalhos administrativos (Laporte et al. [1996]). Retirado de: Goldbarg M. C. e Luna, H. P. L., Otimização Combinatória e Programação Linear, Ed. Campus, pág. 403, 2000.
Problemas Clássicos Problema do Caixeiro Viajante (PCV): Algumas Variações PCV Simétrico: se dá quando a matriz de custos é simétrica PCV Generalizado: está sujeito ao agrupamento dos nós, onde cada grupo contribui com certo número do nó. PCV com Backhauls: ocorre quando é dado prioridade para um grupo de nós. PCV com Janelas de Tempo: se dá associando uma variável de tempo a cada aresta ij. PCV Múltiplo: encontra as K-melhores rotas para o PCV. PCV com prioridades (bônus): quando existe um bônus associado à cada nós.
Problemas Clássicos Fluxo em Redes: em um grafo orientado, onde a partir de um nó de origem busca-se um nó de destino, tendo as aresta uma capacidade máxima. Defini-se um fluxo com as seguintes propriedades: Capacidade: f(i,j) c(i,j) Conservação de fluxo: Fluxo que chega ao vétice Fluxo produzido no vétice Fluxo que sai do vétice + = + Fluxo consumido no vétice
Problemas Clássicos Fluxo em Redes: Exemplo Demanda: origem-destino (s,t) carga: 8u.t. Restrições: Capacidade: Conservação de fluxo: Uma solução
Problemas Clássicos (Fluxo em Redes) Fluxo Máximo: consiste em encontrar a capacidade máxima em que uma rede tem de escoar um determinado tráfego. Fluxo Máximo com mínimo custo: corresponde à necessidade de circular em fluxo em uma rede pagando o mínimo o possível. Normente, nesse caso, as arestas possuem as informações de limite inferior, custo do fluxo e limite superior.
Problemas Clássicos (ainda sobre o fluxo em redes) Problema de Transporte (grafo bipartido): consiste em determinar o menor custo para transportar produtos de várias origens para vários destinos. Obedecendo as restrições de capacidade de produção, demanda, custo de transporte. u i : capacidades de produção do fornecedor i. d i : demanda do cliente j. C ij : custe de transporte do fornecedor i para o cliente j.
Problemas Clássicos (ainda sobre o fluxo em redes) Problema de Designação (Alocação ou Atribuição): é definido como um problema de transporte com oferta e demanda unitática. Isto é, consiste em designar n pessoas a n tarefas com o objetivo de otimizar algum critério. Exemplo: Alocação de escala de trabalho Problema da grade de horário
Problemas Clássicos (ainda sobre o fluxo em redes) Problema de Transbordo: no Problema de transporte, suponha agora a existência de nós intermediários sem produção e nem demanda (como portos, armazéns,...).
Problemas Clássicos (ainda sobre o fluxo em redes) Problema de Caminho Crítico (PERT): Supondo que temos um trabalho a executar, e que esse trabalho pode ser dividido em um certo número de atividades. Algumas atividades podem ser feitas simultaneamente, enquanto algumas precisam ser terminadas para que outras sejam iniciadas.
Grafos Planares: Um grafo G é dito planar se existir alguma representação geométrica de G que possa ser desenhada um plano, de tal modo que não existe cruzamento de arestas. Para lembrar: Temos que ligar luz, gás e telefone a três casas sem que as linhas se cruzem. Você é capaz de fazer isso? As ligações do Cubo abaixo pode ser representado por um grafo planar?
Grafos Planares: Pode-se fazer uma associação entre um grafo planar e um mapa, onde cada região do mapa corresponde a um vértice e as fronteiras entre as regiões correspondem às arestas. Exemplo: Uma aplicação que utiliza o conceito de grafos planares é a disposição de componente em um circuitos impressos.
Problemas Clássicos (Coloração) Problema de Colorir as arestas de uma Multigrafo: Quantas cores são necessária para colorir as arestas de uma multigrafo, sem repetição de cor entre dois nós adjacentes. Usuários da rede Recurso Computacinal Nó de Borda 1 Nó de núcleo 7 2 Usuários da rede Rede óptica 6 3 Nó de Borda 5 8 4 Nó de Borda Usuários da rede Recurso Computacinal Servidor De dados
Temas Selecionados Problema de Alocação Quadrática: Consideremos o problema de se designar n objetos a n locais de modo que cada objeto seja atribuído a um único local, quando são conhecidas as distâncias e os custos entre os pares de locais.
Proposição de novos problemas!