Digressão por ‘caminhos, árvores e flores’

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Grafos Orientados (digrafos)
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos.
AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
Prof. M.Sc. Fábio Francisco da Costa Fontes Maio
Gustavo Sant´Anna Ferreira Rodrigo Ribeiro de Souza
Geometria Computacional Fecho Convexo II
Teoria dos Grafos – Aula 2
Celso C. Ribeiro Caroline T. Rocha
Fluxo em Redes Prof. Ricardo R. Santos.
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
MÁQUINAS UNIVERSAIS Fabrício Dias
Celso C. Ribeiro Caroline T. Rocha
CC/EC/PPGI/UFES Teoria dos Grafos (INF 5037/INF2781) Coloração.
Percursos em um grafo 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Coloração Teoria dos Grafos (INF 5037/INF2781) 1.
Algoritmo polinomial para geração de uma Árvore Geradora Mínima
Métodos para representação de estruturas hierárquicas
Problemas de fluxo numa rede
Tópicos de Lógica Proposicional
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
2 de Junho de 2005Conclusão1 Pedro Barahona DI/FCT/UNL Junho 2005.
1 Conclusão DI/FCT/UNL 1º Semestre 2004/ Ciclos de Simulação A técnica usada no exemplo da queda livre pode ser utilizada para trajectórias a duas.
Prof. M.Sc. Fábio Francisco da Costa Fontes Outubro
GRAFOS EULERIANOS E HAMILTONIANOS
PERCEPTRON (CONTINUAÇÃO)
Árvores.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Identificando Linguagens Não Regulares
Árvore Geradora de Peso Mínimo
WAR STORY Stripping Triangulations Luciana Oliveira e Silva
EQUAÇÕES POLINOMIAIS Prof. Marlon.
Inteligência Artificial
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Algoritmos em Grafos.
Formas de representação e manipulação básica
Algoritmos em Grafos Conceitos principais Prof. André Renato
Grafos Árvores Geradoras.
Informática Teórica Engenharia da Computação
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Teoria dos Grafos Definições e Terminologia
Otimização Inteira 5a. Aula Franklina.
Conceitos Básicos Alysson e Franklina 2ºs/
Celso C. Ribeiro Caroline T. Rocha
Histórico, exemplos e problemas
Operações com grafos União Exemplo
O problema do emparelhamento máximo
Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato
Instituto de Aplicação Fernando Rodrigues da Silveira (CAp/UERJ)
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
Conceitos básicos em grafos
Algoritmos de Busca Local
Redes ADSA António Câmara.
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
Tópicos em Sistemas Inteligentes
Disciplina Análise de Algoritmos BCC-UFU Profa. Sandra de Amo
Campus de Caraguatatuba
Fontes de Erros Aula 1 Introdução; Erros em processos numéricos;
Busca Combinatorial e Métodos de Heurística
Conexidade 1.

Algoritmos FPT para o Problema da k-Cobertura por Vértices
PROGRESSÃO ARITMÉTICA P.A.
Geometria Computacional Fecho Convexo
Aula 12 COLORAÇÃO DE GRAFOS
Análise e Síntese de Algoritmos
Celso C. Ribeiro Caroline T. Rocha
MATCHINGS Grafos e Teoria da Complexidade Prof. Fabio Tirelo.
MODELOS DE GRAFOS. Grafos de Euler Algoritmo de Fleury Atribuído ao francês M. Fleury, que o terá publicado em Além da ligação a este algoritmo.
Transcrição da apresentação:

Digressão por ‘caminhos, árvores e flores’ João Soares Departamento de Matemática Universidade de Coimbra Hotel Quinta das Lágrimas (Coimbra), 15 de Outubro de 2003 Homenagem ao Professor Doutor Mário Silva Rosa

Índice Emparelhamento Emparelhamento de Cardinalidade Máxima Definições e motivação Estrutura poliedral (Cunningham & Marsh, 1978) Emparelhamento de Cardinalidade Máxima Em grafos bipartidos Em grafos não bipartidos (Edmonds, 1965a) Emparelhamento de Peso Máximo Em grafos bipartidos (Kuhn,1955)

Emparelhamento (definição) Seja G=(V,E) um grafo não orientado V=vértices, E=arestas, com ‘pesos’ ce, e  E. Um emparelhamento de G é um subconjunto das arestas sem extremidades em comum. Peso de um emparelhamento é a soma dos pesos das arestas do emparelhamento. Um emparelhamento diz-se perfeito se “cobre” todos os vértices.

Emparelhamento (exemplos) 1 6 2 7 e f g 3 8 4 9 a b c d 5 10 In Korte&Vygen (2000) In Nemhauser&Wolsey (1988)

Emparelhamento (exemplos) ...de máxima cardinalidade? h 1 6 2 7 e f g 3 8 4 9 a b c d 5 10 In Korte&Vygen (2000) In Nemhauser&Wolsey (1988)

Emparelhamento (motivação) Afectar individuos a tarefas (... perfeito de peso máximo em G bipartido ≡ Afectação) Emparelhar colegas de quarto em dormitório (... perfeito de peso máximo) Heurística para TSP Simétrico e Euclidiano (... perfeito de peso máximo) Problema do Carteiro Chinês (... perfeito de peso máximo) Afectar alunos a Universidades (... perfeito tal que não haja nenhum par que fique melhor trocado)

Emparelhamento (algebra) Problema de Programação Inteira: ou com A matriz de incidência vértice-aresta de G

Emparelhamento (estrutura poliedral) Cunningham e Marsh, 1978: O seguinte sistema de desigualdades é TDI: Corolário: Emparelhamento de peso máximo é um Problema Linear, embora com um número exponencial de restrições (Edmonds, 1965b). Dificuldade: Como lidar com um tão elevado número de restrições em tempo polinomial? Vantagem: Possível explicitar uma caracterização algébrica do invólucro convexo para qualquer problema de emparelhamento de peso máximo.

Emparelhamento (Berge, 1957) Caminho aumentado relativamente a um emparelhamento M: Berge, 1957: Um emparelhamento M é de máxima cardinalidade se e só se não existe caminho aumentado relativamente a M. DEM: “” Por absurdo. Trivial. “” Por absurdo, existe |M’|>|M|. Então, F=MM’ é um conjunto de circuitos e caminhos simples. Circuitos têm número par de arestas. Como |M’|>|M|, existe um dos caminho simples que é aumentado(!). Ideia para obter emparelhamento de máxima cardinalidade: Identificar sucessivos caminhos aumentados. M M M M M M M

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido 1 6 2 7 3 8 4 9 5 10

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: Vértice exposto * 1 6 2 7 3 8 4 9 5 10

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: * 1 6 7 2 7 1 3 8 4 9 5 10

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: * 1 6 7 2 7 1 2 8 3 8 4 9 5 10

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: * 1 6 Caminho aumentado: 1, 7, 2, 8, 3, 6 3 7 2 7 1 8 3 8 2 4 9 3 5 10 3

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: * 1 6 3 Rótulas permitem identificar Novo emparelhamento 7 2 7 1 8 3 8 2 4 9 3 5 10 3

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: 1 6 2 7 3 8 4 9 Vértice exposto * 5 10

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: 1 6 2 7 5 3 8 5 4 9 * 5 10 5

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: 7 1 6 2 7 5 8 3 8 5 4 9 10 * 5 10 5 Não existe caminho aumentado a partir de 5! Existe a partir de 9?

Emparelhamento V2+ V1+ V2- V1- Encontrar emparelhamento de máxima cardinalidade num grafo bipartido: 7 1 6 V2+ V1+ 2 7 5 8 3 8 5 4 9 10 V2- V1- * 5 10 5 Não existe caminho aumentado a partir de 5! Existe a partir de 9?

Emparelhamento (em grafos bipartidos) Quando um vértice adquire uma posição relativa num caminho alternado ( ou ) essa posição relativa é igual em qualquer caminho aumentado. Por isso, qualquer rotulação de um vértice é definitiva o que facilmente implica que averiguação de um caminho alternado pode ser implementado em O(n2) operações. Em conclusão, a determinação de um emparelhamento de máxima cardinalidade num grafo bipartido pode ser efectuada em O(n3) operações. No final, R=V1- V2+ é uma cobertura por vértices de G tal que |R|=|M|. V1+ V2+ V1- V2-

Emparelhamento (em grafos não bipartidos) Vejamos se a mesma ideia funciona com grafos não bipartidos h e f g Vértice exposto * a b c d

Emparelhamento (em grafos não bipartidos) Vejamos se a mesma ideia funciona com grafos não bipartidos h b e f g * a b c d a

Emparelhamento (em grafos não bipartidos) Vejamos se a mesma ideia funciona com grafos não bipartidos h b e e f g * a b c d a e

Emparelhamento (em grafos não bipartidos) Vejamos se a mesma ideia funciona com grafos não bipartidos h b e f e f g * a b c d a e c

Emparelhamento (em grafos não bipartidos) Vejamos se a mesma ideia funciona com grafos não bipartidos Vértice d pode receber rótulo ou . Foi encontrado circuito ímpar! Como enumerar caminhos alternados de modo eficiente? h b e f e f g * a b c d a e c

Emparelhamento (em grafos não bipartidos) Para Berge (1957) isso não seria problema - enfim, há um número finito de caminhos alternados. Pois, só com Edmonds (1965a) veio a primeira proposta de enumeração eficiente de caminhos alternados no célebre Paths, trees and flowers. Edmonds (1965a) usou a palavra good para se referir a funcionar em tempo polinomial – só mais tarde com Karp e Cook (anos 70) veio o rigor e o formalismo da classificação de problemas. A ideia: Sempre que for encontrado um vértice que pode ser do tipo ou então substituir todos esses vértices do circuito ímpar encontrado por um novo vértice e retomar a procura de um caminho aumentado. Ilustramos esta ideia com o exemplo anterior, ...

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo não bipartido: h h b e f e f g b U * a b c d a b a e c a

Emparelhamento Encontrar emparelhamento de máxima cardinalidade num grafo não bipartido: U, f h h b e f e f g b U * a b c d a b a e c a Caminho aumentado encontrado: a, b, U, h Mais precisamente: a, b, e, c, d, g, f, h

Emparelhamento (em grafos não bipartidos) Encontrar emparelhamento de máxima cardinalidade num grafo não bipartido: h b e f e f g * a b c d a e c

Emparelhamento (em grafos não bipartidos) Encontrar emparelhamento de máxima cardinalidade num grafo não bipartido: h b e f e f g * a b c d a e c

Emparelhamento (em grafos não bipartidos) Encontrar emparelhamento de máxima cardinalidade num grafo não bipartido: h e f g a b c d

Emparelhamento (em grafos não bipartidos) Notação introduzida por Edmonds, 1965a: y x d u v a b c

Emparelhamento (em grafos não bipartidos) Notação introduzida por Edmonds, 1965a: y x d u v a b c Encontrado vértice que pode ser rotulado de dois modos diferentes

Emparelhamento (em grafos não bipartidos) Notação introduzida por Edmonds, 1965a: Flower: a união dos dois caminhos alternados encontrados y x d u v a b c

Emparelhamento (em grafos não bipartidos) Notação introduzida por Edmonds, 1965a: Flower: a união dos dois caminhos alternados encontrados y x d u v a b c Stem: o caminho comum àqueles dois caminhos alternados

Emparelhamento (em grafos não bipartidos) Notação introduzida por Edmonds, 1965a: Flower: a união dos dois caminhos alternados encontrados y x d u v a b c Stem: o caminho coumum àqueles dois caminhos Blossom: o circuito ímpar encontrado (que vai ser substituído por um novo vértice – shrinked).

Emparelhamento (em grafos não bipartidos) Cada um dos vértices do Blossom pode ser rotulado com ou para uma escolha adequado da ordem pela qual o circuito ímpar é percorrido alternadamente. Apenas uma aresta do emparelhamento é incidente no Blossom. Essa aresta é a última do stem. Por isso, podemos interpretar o Blossom como um grande vértice rotulado com . As suas arestas incidentes são as arestas incidentes de todos os vértices do Blossom. Contraccão! Sucede-se a procura de um caminho aumentado como normalmente. Quando um caminho aumentado for encontrado, recuperam-se as arestas desse caminho usando os rótulos e escolhendo as orientações adequadas sempre um vértice associado a um Blossom é encontrado. Se um caminho aumentado não for encontrado deve tentar-se um outro vértice exposto. Podem manter-se todas as contracções entretanto efectuadas. Como a rotulação de vértices é sempre definitiva, o algoritmo pode ser implementado em O(n3) operações – implementação mais delicada do que no caso bipartido.

Emparelhamento (de peso máximo num grafo bipartido) Encontrar emparelhamento perfeito de peso máximo num grafo bipartido G (Kuhn, 1955) Sem perda de generalidade, suponhamos que G é completo (arestas inexistentes têm peso -). Afectação! Uma formulação é Nota: Matriz das restrições é TU. Por isso, restrições de integralidade podem ser ignoradas.

Emparelhamento (de peso máximo num grafo bipartido) Teorema (Kuhn, 1955): Um ponto X é óptimo para o problema da Afectação se e só se existirem vectores u,v satisfazendo cij – ui – vj  0 tal que X é vector característico de um emparelhamento perfeito no grafo G[u,v]=(V,E[u,v]), com E[u,v] = {(i,j): cij – ui – vj =0 }. DEM: Dualidade Forte da P.L. Ideia: Construir G[u,v] para u,v satisfazendo cij – ui – vj  0. Obter M emparelhamento de máxima cardinalidade em G[u,v]. Se |M|=n então parar, senão modificar u,v de modo a obter mais uma aresta em M sem violar cij – ui – vj  0.

Emparelhamento (de peso máximo num grafo bipartido) Consideremos o seguinte problema de Afectação: 1 1’ 2 2’ 3 3’ 4 4’

Emparelhamento (de peso máximo num grafo bipartido) Como valores iniciais, considerem-se u=(0,-2,0,0), v=(27,19,12,8) G[u,v] 1 1’ 2 2’ 3 3’ 4 4’

Emparelhamento (de peso máximo num grafo bipartido) Como valores iniciais, considerem-se u=(0,-2,0,0), v=(27,19,12,8) G[u,v] 1 1’ 2 2’ 3 3’ 4 4’

Emparelhamento (de peso máximo num grafo bipartido) Como valores iniciais, considerem-se u=(0,-2,0,0), v=(27,19,12,8) G[u,v] 1 1’ 2 2’ * 3 3’ 4 4’

Emparelhamento (de peso máximo num grafo bipartido) Como valores iniciais, considerem-se u=(0,-2,0,0), v=(27,19,12,8) G[u,v] 1 1’ 2 2’ * 3 3’ 2 3’ 4 4’

Emparelhamento (de peso máximo num grafo bipartido) Como valores iniciais, considerem-se u=(0,-2,0,0), v=(27,19,12,8) G[u,v] 1 1’ 2 2’ * 3 3’ 2 3’ 4 4’ V1+={2,4}, V2-={1’,2’,4’},

Emparelhamento (de peso máximo num grafo bipartido) Como valores iniciais, considerem-se u=(0,-2,0,0), v=(27,19,12,8) G[u,v] 1 1’ 2 2’ * 3 3’ 2 3’ 4 4’ V1+={2,4}, V2-={1’,2’,4’},

Emparelhamento (de peso máximo num grafo bipartido) Após adequada modificação: u=(0,-4,0,-2), v=(27,19,14,8) G[u,v] 1 1’ 2 2’ * 3 3’ 2 3’ 4 4’ Nota importante: os rótulos anteriores permanecem válidos

Emparelhamento (de peso máximo num grafo bipartido) Após adequada modificação: u =(0,-4,0,-2), v=(27,19,14,8) G[u,v] 1 1’ 2 2’ * 3 3’ 2 3’ 4 4’ 4 Caminho aumentado encontrado!

Emparelhamento (de peso máximo num grafo bipartido) Após adequada modificação: u =(0,-4,0,-2), v=(27,19,14,8) G[u,v] 1 1’ 2 2’ * 3 3’ 2 3’ 4 4’ 4 Caminho aumentado encontrado!

Emparelhamento (de peso máximo num grafo bipartido) Após adequada modificação: u =(0,-4,0,-2), v=(27,19,14,8) G[u,v] Portanto, pelo Teorema de Kuhn, encontrámos solução ‘optima x11 = x21 = x32 = x44 = 1, de valor (0-4+0-2)+(27+19+14+8)=62. 1 1’ 2 2’ 3 3’ 4 4’

Emparelhamento (de peso máximo num grafo bipartido) No final de cada iteração (após modificacao de u e de v): Os custos reduzidos permanecem não positivos. Os rótulos permanecem válidos. O emparelhamento de máxima cardinalidade permanece emparelhamento no novo G[u,v]. É criada pelo menos uma aresta (i,j) com i V1+ e j V2- Por isso, no final de cada iteração, um dos seguintes acontece: É encontrado um emparelhamento com mais uma aresta, ou O conjunto V2+ fica com mais um vértice. Por isso, o esforço computacional envolvido em aumentar uma unidade ao emparelhamento é O(n2). O método Húngaro termina após O(n3) operações.

Conclusão Recordámos os métodos clássicos para a determinação de um emparelhamento de cardinalidade máxima. Procurámos justificar o desempenho desses métodos (detalhes no documento em papel) recorrendo a imagens e exemplos. Recordámos o método Húngaro usando uma notação que o torna uma extensão do método anterior para o caso bipartido.