Projeto de Algoritmos por Indução

Documentos relacionados
Projeto de Algoritmos por Divisão e Conquista

Indução Matemática. Profa. Sheila Morais de Almeida. junho DAINF-UTFPR-PG

Teoria dos Grafos. Teoria dos Grafos. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. agosto

Introdução à Teoria dos Grafos

Complexidade de Tempo e Espaço

Teoria dos Grafos Aula 1 - Introdução

Relações de Recorrência

Teoria dos Grafos Aula 6

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 5: Grafos Conexos. Departamento de Matemática Aplicada

Invariantes de Laço. Profa. Sheila Morais de Almeida. junho DAINF-UTFPR-PG

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6

CONCEITOS BÁSICOS EM GRAFOS

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

Estruturas de Dados Grafos

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

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ

Teoria dos Grafos AULA 3

Algoritmos e Estruturas de Dados II

Otimização em Grafos

Teoria dos Grafos. Grafos Planares

Teoria dos Grafos. Edson Prestes

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

Algoritmos em Grafos

Teoria dos Grafos. Edson Prestes

Teorema 1 - Todo corte de arestas de um grafo conexo G contém pelo menos uma aresta em comum com qualquer árvore geradora de G. Exemplo 2 - Seja T:

Introdução à Teoria dos Grafos. Isomorfismo

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Pesquisa Operacional

Teoria dos Grafos. Fluxo Máximo em Redes

Matemática Combinatória Gabarito Lista 7 Artur Souza, Bruno Leite e Marcos Castro

Teoria dos Grafos. Edson Prestes

Coloração total distinta na vizinhança em grafos 4-partidos completos

CI065 CI755 Algoritmos e Teoria dos Grafos

Teoria dos Grafos. Conjuntos de Corte e Conectividade

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

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

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

A resposta para este problema envolve a partição do conjunto de arestas de tal forma que arestas adjacentes não pertençam a um mesmo conjunto.

Teoria dos Grafos Conceitos Básicos

CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo:

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

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

Teoria dos Grafos Aula 2

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

Aula 6: Dedução Natural

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

Indução Matemática. Matemática Discreta. Indução Matemática. Mayara Midori Omai e Sheila Morais de Almeida UTFPR-PG. Abril

A resposta para este problema envolve a partição do conjunto de arestas de tal forma que arestas adjacentes não pertençam a um mesmo conjunto.

Teoria dos Grafos Introdu c ao

Introdução à classe de problemas NP- Completos

Teoria dos Grafos. Cobertura, Coloração de Arestas, Emparelhamento

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

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

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

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

Teoria dos Grafos. Árvores

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

Problema. Quantas cores são necessárias para pintar este mapa? Número. Cromático. Estruturas de Dados - Grafos. Problema. Problema

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

INF 1010 Estruturas de Dados Avançadas

Teoria dos Grafos Aula 5

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

Teoria dos Grafos. Edson Prestes

If969 - Algoritmos e Estruturas de Dados

Algoritmo da IFT 2 / 16. Algoritmo da IFT Estrutura da fila de prioridade Resolvendo empates. Algoritmo 1 Algoritmo geral da IFT

Matemática Discreta. Teoria de Conjuntos - Parte 2. Profa. Sheila Morais de Almeida. abril DAINF-UTFPR-PG

1.3 Isomorfismo 12 CAP. 1 CONCEITOS BÁSICOS

Matemática Discreta. Lógica Proposicional. Profa. Sheila Morais de Almeida. agosto DAINF-UTFPR-PG

Algoritmos de aproximação - Problema do caixeiro viajante

Transcrição:

Projeto de Algoritmos por Indução Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 1 / 40

Este material é preparado usando como referência o texto do seguinte livro. Udi Manber. Introduction to Algorithms: a creative approach., 1st ed., 1989. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 2 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Um subgrafo H de um grafo G é um grafo constituído por: um subconjunto dos vértices de G, V (H) V (G), o conjunto de todas as arestas de G que conectam vértices do conjunto V (H). Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 3 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k G H Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 4 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k G H Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 5 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k G H Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 6 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k O grau de um vértice é o número de arestas incidentes no mesmo. O menor grau de um grafo G é denotado por δ(g). No exemplo, δ(g) = 2 e δ(h) = 1. G H Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 7 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Suponha que você está organizando uma conferência. Você tem um lista de pessoas que quer convidar. Você acredita que as pessoas aceitarão o convite se houver muitas outras pessoas com quem possam trocar ideias. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 8 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Para cada cientista, você colocou abaixo do nome dele outros cientistas convidados com quem ele possivelmente gostaria de interagir. Você quer convidar o maior número possível de cientistas da sua lista. Mas também quer garantir que cada convidado terá pelo menos k colegas na conferência com quem ele gostaria de trocar ideias. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 9 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Modelando o problema como um grafo: Problema Dado um grafo não-orientado G e um inteiro k, encontrar um subgrafo induzido de tamanho máximo tal que δ(h) k ou concluir que tal subgrafo não existe. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 10 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Sabemos resolver o problema para um grafo com número de vértices no máximo k? sim! não existe subrafo H com δ(h) = k. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 11 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Sabemos resolver o problema para um grafo com número de vértices no máximo k? Sim! não existe subrafo H com δ(h) = k. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 12 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Se o grafo tiver k + 1 vértices, sabemos resolver? H só existe se G é um grafo completo, ou seja, todos os seus vértices tem grau k. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 13 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Se o grafo tiver k + 1 vértices, sabemos resolver? H só existe se G é um grafo completo, ou seja, todos os seus vértices tem grau k. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 14 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Suponha que sabemos resolver o problema para um grafo que tenha até n vértices. Podemos usar essa solução para um grafo que tenha n + 1 vértices? Podemos remover um dos vértices desse grafo, resolver e depois ver como o vértice removido impacta na solução. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 15 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Suponha que sabemos resolver o problema para um grafo que tenha até n vértices. Podemos usar essa solução para um grafo que tenha n + 1 vértices? Podemos remover um dos vértices desse grafo, resolver e depois ver como o vértice removido impacta na solução. Pergunta: Qual vértice remover? Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 16 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Se estamos procurando um subgrafo em que todos os vértices tem grau pelo menos k, então vértices com grau menor que k não podem estar em H. Remova um vértice com grau menor que k. E se todos os vértices tem grau maior que k? Então G H. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 17 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Se estamos procurando um subgrafo em que todos os vértices tem grau pelo menos k, então vértices com grau menor que k não podem estar em H. Remova um vértice com grau menor que k. E se todos os vértices tem grau maior que k? Então G H. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 18 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Se existe vértice com grau menor que k, remova um desses vértices. A remoção de um vértice e suas arestas pode diminuir o grau de outros vértices. Se um vértice car com grau menor que k, ele terá que ser removido. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 19 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k Em que ordem devemos remover os vértices? Primeiro os que já tinham grau menor que k e depois os que tiveram o grau reduzido na ordem em que são afetados? (busca em largura) Primeiro um vértice com grau menor que k e depois os afetados por ele (busca em profundidade)? O grafo resultante tem tamanho máximo? Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 20 / 40

Encontrar H: um subgrafo induzido maximal com δ(h) = k A remoção dos vértices com grau menor que k é obrigatória para a construção de H. Então, tanto faz a ordem em que eles são removidos. Quando a eliminação obrigatória de um vértice v causa a redução do grau de um outro vértice w, fazendo com que w tenha que ser eliminado, vê-se que não há escolha, a eliminação de w é obrigatória, vai acontecer em qualquer subgrafo H escolhido. Como apenas vértices cuja eliminação é obrigatória são retirados, o grafo resultante é máximo. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 21 / 40

Problema da Celebridade Em um conjunto com n pessoas, uma celebridade é uma pessoa conhecida por todos e que não conhece ninguém. Problema Identicar a celebridade, se existir, em um conjunto de n pessoas, fazendo somente perguntas no formato: "Desculpe-me, você conhece aquela pessoa ali?" Assumindo que todas as respostas são verdadeiras e que mesmo a celebridade vai responder. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 22 / 40

Problema da Celebridade O objetivo é minimizar o número de perguntas. Como existem n pessoas, no pior caso teremos que fazer a pergunta n(n 1) 2 vezes. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 23 / 40

Problema da Celebridade Formulando o problema como um grafo: Considere um grafo orientado onde: as pessoas são vértices, se a pessoa A conhece B, então existe uma aresta orientada de A para B. A celebridade é uma fonte (um vértice onde chegam arestas e de onde não saem arestas). Observação: Note que se existir celebridade, ela é a única do conjunto. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 24 / 40

Problema da Celebridade Então a entrada do problema pode ser uma matriz de adjacências n n, onde a célula M[i][j] = 1 se a pessoa i conhece a pessoa j; caso contrário, M[i][j] = 0. Problema Dada uma matriz de adjacências, determinar se existe um i tal que todas as células da coluna i são iguais a 1 e todas as células da linha i são iguais a 0, exceto M[i][i]. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 25 / 40

Problema da Celebridade Base: Considere um conjunto com duas pessoas. Sabemos vericar se uma delas é uma celebridade? Se M[A][B] = 0 e M[B][A] = 1, A é celebridade. Se M[B][A] = 0 e M[A][B] = 1, B é celebridade. Nos demais casos, não há celebridade. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 26 / 40

Problema da Celebridade Base: Considere um conjunto com duas pessoas. Sabemos vericar se uma delas é uma celebridade? Se M[A][B] = 0 e M[B][A] = 1, A é celebridade. Se M[B][A] = 0 e M[A][B] = 1, B é celebridade. Nos demais casos, não há celebridade. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 27 / 40

Problema da Celebridade Considere, por indução, que sabemos resolver para n pessoas. Pergunta: sabemos resolver em um conjunto com n + 1 pessoas? Separe uma pessoa do conjunto. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 28 / 40

Problema da Celebridade Considere, por indução, que sabemos resolver para n pessoas. Pergunta: sabemos resolver em um conjunto com n + 1 pessoas? Separe uma pessoa do conjunto. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 29 / 40

Problema da Celebridade Há três casos: 1 A celebridade é uma das pessoas do conjunto com n pessoas. 2 A celebridade é a pessoa que foi separada. 3 Não há celebridade. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 30 / 40

Problema da Celebridade Caso 1: A celebridade é uma das pessoas do conjunto com n pessoas. Então basta vericar: a se a pessoa separada também conhece a celebridade e b se a celebridade não conhece a pessoa separada do conjunto. Se as duas respostas são sim, então a celebridade do conjunto de n pessoas é uma celebridade no conjunto de n + 1 pessoas. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 31 / 40

Problema da Celebridade Caso 2: A celebridade é a pessoa que foi separada. Para determinar que essa pessoa não conhece ninguém e que todos a conhecem, são necessárias 2(n 1) perguntas. Se usarmos essa quantidade de perguntas em cada passo da indução, vamos ter uma número de perguntas O(n 2 ). Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 32 / 40

Problema da Celebridade É difícil identicar uma celebridade. É mais fácil identicar quem não é celebridade. Então podemos identicar quem não é celebridade e remover essa pessoa do conjunto de n + 1 pessoas! Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 33 / 40

Problema da Celebridade Considere duas pessoas quaisquer do conjunto de n + 1 pessoas: Alice e Bob. Ao perguntarmos para Alice se ela conhece Bob, há duas possibilidades: Se sim: então Alice não é celebridade. Removemos Alice do conjunto. Se não: então Bob não é celebridade: removemos Bob do conjunto. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 34 / 40

Problema da Celebridade Há três casos: 1 A celebridade é uma das pessoas do conjunto com n pessoas. 2 A celebridade é a pessoa que foi separada. 3 Não há celebridade. Se eliminarmos a pessoa certa, o caso 2 não ocorre. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 35 / 40

Problema da Celebridade Caso 3: Se não há celebridade. Se não há celebridade no conjunto com n pessoas, então não há celebridade, pois a pessoa separada dos demais não é celebridade. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 36 / 40

Problema da Celebridade Voltando ao caso 1: A celebridade é uma das pessoas do conjunto com n pessoas. Então basta vericar: a) se a pessoa separada também conhece a celebridade e b) se a celebridade não conhece a pessoa separada do conjunto. Se as duas respostas são sim, então a celebridade do conjunto de n pessoas é uma celebridade no conjunto de n + 1 pessoas. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 37 / 40

Problema da Celebridade Implementação da solução: Primeira fase: eliminar todos os candidatos exceto 1. Segunda fase: vericar se esse candidato é de fato uma celebridade. Considere que os candidatos estão em uma pilha, pegue dois deles. Verique com uma pergunta qual dos dois não pode ser celebridade e remova-o. Pegue outro candidato da pilha para comparar com o que sobrou e repita o processo. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 38 / 40

Problema da Celebridade Implementação da solução: Quando restar apenas um candidato, basta vericar se ele é mesmo uma celebridade: faça 2(n 1) perguntas para saber se todos o conhecem e se ele conhece todos. Total de perguntas: 3(n 1) O(n). Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 39 / 40

Referências U. MAMBER, Introduction to Algorithms: a Creative Approach, Addison Wesley, 1st ed., 1989. Sheila Almeida (DAINF-UTFPR-PG) Projeto de Algoritmos por Indução junho - 2018 40 / 40