Teoria dos Grafos Aula 8

Documentos relacionados
Teoria dos Grafos Aula 8

Teoria dos Grafos Aula 9

Teoria dos Grafos Aula 7

Otimização em Grafos

Algoritmo de Dijkstra Estudo e Implementação

Teoria dos Grafos Aula 9

Teoria dos Grafos Aula 6

INF 1010 Estruturas de Dados Avançadas

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

Aula 28: Listas de Prioridades

Filas de Prioridades Letícia Rodrigues Bueno

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Árvores de Suporte de Custo Mínimo

Otimização em Grafos

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

Heapsort Letícia Rodrigues Bueno

Projeto e Análise de Algoritmos. Método Guloso

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

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

Algoritmos em Grafos: Caminho Mínimo

INF 1010 Estruturas de Dados Avançadas

Lista de Prioridades. Estrutura de Dados II Prof. Erinaldo

Edsger Wybe Dijkstra

Árvores Auto-ajustadas

Teoria dos Grafos Aula 22

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Algoritmos em Grafos

Teoria dos Grafos Aula 24

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

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

Teoria dos Grafos Aula 5

Grafos Caminhos mais Curtos

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

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

Teoria dos Grafos Aula 17

Filas de Prioridade & Heaps

Sub-grafo. Árvore Geradora Mínima

Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I

Tecnicas Essencias Greedy e Dynamic

INF1010 Lista de Exercícios 2

Caminho mais curto. 1 - Caminho não pesado

Busca em vetores. Para encontrar um elemento em um vetor desordenado é caro Porém, inserir ou remover é barato.

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

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Análise de algoritmos

ESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Algoritmos e Estruturas de Dados 2006/2007

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

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

GRAFOS Aula 06 Algoritmo de Caminho Mínimo: Dijkstra Max Pereira

Árvores: Conceitos Básicos e Árvore Geradora

Linguagem C: Árvores AVL

1 Distância em Grafos

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Teoria dos Grafos Aula 18

Árvores B. Definição: Seja t a ordem da árvore B. Uma árvore B de ordem t é uma árvore ordenada que é vazia, ou que satisfaz as seguintes condições:

Prof. Marco Antonio M. Carvalho

Teoria dos Grafos Aula 11

Análise de algoritmos

Teoria dos Grafos Aula 7

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

Caminhos mínimos de única origem

Projeto e Análise de Algoritmos

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

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

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

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

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.

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Grafos Árvores Geradoras Mínimas

CES-11. Algoritmos e Estruturas de Dados. Representação. A estrutura heap. Heap é uma árvore binária com duas propriedades:

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos

Aula 20: Árvores Binárias de Busca. Algoritmos de busca e inserção

AED2 - Aula 22 Busca em largura, cálculo de distâncias

3. Conteúdo de um vértice v é conteúdo dos filhos de v.

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

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

Estruturas de Dados. Aula 08. Árvores AVL II. Karina Mochetti

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)

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

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

Teoria dos Grafos. Edson Prestes

Ordenação de Dados (III) HeapSort

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores binárias de busca

Teoria dos Grafos Aula 8

BCC204 - Teoria dos Grafos

Teoria dos Grafos. Edson Prestes

QUESTÕES DE PROVAS ANTIGAS

Algoritmo de Dijkstra Wikipédia, a enciclopédia livre

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

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

PROJETO E ANÁLISE DE ALGORITMOS (INF 2926)

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

Árvores Rubro-Negra IFRN

APOSTILA DE MÉTODO GULOSO

Transcrição:

Teoria dos Grafos Aula 8 Aula passada Grafos com pesos, caminhos e distâncias Ideia e algoritmo de Dijkstra Dijkstra o próprio Aula de hoje Corretude de Dijkstra Fila de prioridades e Heap Dijkstra eficiente

Discipline in Thought Ciência da computação não é mais sobre computadores do que astronomia é sobre telescópios Falta coragem nas universidades para ensinar ciências duras. Elas continuarão a enganar os alunos e cada etapa na infantilização do currículo será celebrada como progresso educacional Elegância (na arte de programar) não é um luxo dispensável, mas fator que decide entre sucesso e falha Elegância demanda trabalho duro para produzir e uma boa educação para apreciar. Por isto encontrou poucos adeptos Quais são suas impressões?

Algoritmo de Dijkstra Ideias: Manter dois conjuntos de vértices (explorados e não-explorados) Manter comprimento do menor caminho conhecido até o momento para cada vértice Adicionar o vértice de menor caminho (explorar) Atualizar distâncias Como tornar a ideia em algoritmo?

Algoritmo de Dijkstra 1.Dijkstra(G, s) 2.Para cada vértice v 3. dist[v] = infinito 4.Define conjunto S = 0 // vazio 5.dist[s] = 0 6.Enquanto S!= V 7. Selecione u em V-S, tal que dist[u] é mínima 8. Adicione u em S 9. Para cada vizinho v de u faça 10. Se dist[v] > dist[u] + w((u,v)) então 11. dist[v] = dist[u] + w((u,v))

Analisando o Algoritmo Provar que algoritmo sempre produz resultado correto caminho mínimo entre dois vértices Teorema: Considere um vértice u pertencente ao conjunto S em qualquer ponto do algoritmo. Temos que dist[u] é a distância entre s e u.

Prova Prova por indução no tamanho de S Caso base: S = 1 S = {s}, dist[s] = 0, devido inicialização Hipótese: S = k para S = k, assuma que dist[u] é igual a distância entre s e u Caso geral: S = k + 1 k+1 adiciona v à S, dando origem a P v temos que mostrar que P v é mínimo seja (u,v) última aresta no caminho P v pela hipótese, P u é caminho mínimo s-u

Prova Considere outro caminho s-v, P, que não passa por u Precisamos provar que P é maior (ou igual) a P v P passa pela aresta (x,y), com x em S e y fora de S (para algum x e y qualquer) Situação: s S u x y v No passo k+1, algoritmo escolhe v para adicionar a S (e não y) Então, caminho s y é maior ou igual a P v Como dist(y,v) >=0, caminho P será maior ou igual a P v Logo, P v é caminho mínimo e dist[v] será distância até v

Complexidade Qual é a complexidade do algoritmo? 1.Dijkstra(G, s) 2.Para cada vértice v 3. dist[v] = infinito 4.Define conjunto S = 0 // vazio 5.dist[s] = 0 6.Enquanto S!= V 7. Selecione u em V-S, tal que dist[u] é mínima 8. Adicione u em S 9. Para cada vizinho v de u faça 10. Se dist[v] > dist[u] + w((u,v)) então 11. dist[v] = dist[u] + w((u,v)) Depende do tempo para selecionar u tal que dist[u] seja mínima!

Algoritmo simples Complexidade Percorre vértices e encontra dist[u] mínimo Complexidade? O(n 2 ) Outra ideia? Fila de prioridades muito usada em grafos Chave: distâncias Extrair o mínimo (vértice com menor distância) Atualizar chaves (distâncias)

Fila de Prioridade Estrutura de dados poderosa (priority queue) Mantém um conjunto de elementos S Cada elemento possui uma chave (número de prioridade) Permite inserir, remover e modificar elementos de S através de sua chave Complexidade de pior caso para remoção, inserção e modificação: O(log n) caso médio para algumas operações pode ser O(1), dependendo da implementação (ex. Fibonacci Heap)

Heap Heap: Implementação de fila de prioridade Estrutura de dados em forma de árvore Armazena conjunto de elementos, todos associados a uma chave Chave dos elementos define árvore Heap order 1) Min-heap: chave(u) <= chave(v), quando u é pai de v (usado para remover menor chave primeiro) 2) Max-heap: chave(u) >= chave(v), quando u é pai de v (usado para remover maior chave primeiro)

Heap Binário Heap Binário: árvore binária cheia fácil implementação Operações básicas adicionar, remover, atualizar chave Não serve para fazer busca (não está ordenada) 9 7 8 10 12 15 Max-heap ou Min-heap? Saindo da raiz, como chegar na chave 12?

Inserção e Remoção Inserção 1) adicionar elemento na última posição da árvore 2) trocar posição com pai até garantir heap-order (subir) Remoção 1) remover raiz e mover último elemento para raiz 2) trocar de posição com menor filho até garantir heap-order (descer) Exemplos Adicionar chave 5 Remover raiz 9 7 8 10 12 15 Atualização Chave pode mudar de valor Subir ou descer, de acordo

Heap Binário 7 Considere heap binário com n elementos Qual é a altura da árvore? log 2 n 9 8 10 12 15 Complexidade das operações de inserção, remoção e atualização? Subir ou descer na árvore pior caso percorre todos os níveis, log 2 n Complexidade: O(log n)

Complexidade Quantas operações no heap? 1.Dijkstra(G, s) 2.Para cada vértice v 3. dist[v] = infinito 4.Define conjunto S = 0 // vazio 5.dist[s] = 0 6.Enquanto S!= V 7. Selecione u em V-S, tal que dist[u] é mínima 8. Adicione u em S 9. Para cada vizinho v de u faça 10. Se dist[v] > dist[u] + w((u,v)) então 11. dist[v] = dist[u] + w((u,v)) n operações de remoção m operações de atualização (cada aresta) Complexidade: O((n+m)log n) = O(m log n), se grafo for conexo