Melhores momentos AULA 14
|
|
|
- Helena Alcântara Veiga
- 9 Há anos
- Visualizações:
Transcrição
1 Melhores momentos AULA
2 Problema O algoritmo de Dijkstra resolve o problema da SPT: Dado um vértice s de um digrafo com custos não-negativos nos arcos, encontrar uma SPT com raiz s 5 5 5
3 Simulação 5
4 Simulação 5
5 Simulação 5
6 Simulação 5
7 Simulação 5
8 Simulação 5
9 Simulação 5
10 Simulação 5
11 Simulação 5
12 Simulação 5
13 Simulação 5 5
14 Simulação 5 5
15 Simulação 5 5
16 Simulação 5 5
17 Simulação 5 5
18 Simulação 5
19 Simulação 5
20 Simulação 5
21 Simulação 5
22 Simulação 6 5
23 Simulação 6 5
24 Simulação 6 5
25 Simulação 6 5
26 Simulação 6 6 5
27 Simulação 6 6 5
28 Simulação 6 6 5
29 Simulação 6 6 5
30 Simulação 6 6 5
31 Simulação 6 6 5
32 dijkstra Recebe digrafo G com custos não-negativos nos arcos e um vértice s Calcula uma arborescência de caminhos mínimos com raiz s. A arborescência é armazenada no vetor parnt As distâncias em relação a s são armazenadas no vetor cst void dijkstra(digraph G, Vertex s, Vertex parnt[], double cst[]);
33 Fila com prioridades A função dijkstra usa uma la com prioridades A la é manipulada pelas seguintes funções: PQinit(): inicializa uma la de vértices em que cada vértice v tem prioridade cst[v] PQempty(): devolve se a la estiver vazia e em caso contrário PQinsert(v): insere o vértice v na la PQdelmin(): retira da la um vértice de prioridade mínima. PQdec(w): reorganiza a la depois que o valor de cst[w] foi decrementado.
34 dijkstra #dene INFINITO maxcst void dijkstra(digraph G, Vertex s, { Vertex parnt[], double cst[]); Vertex v, w; link p; for (v = ; v < G->V; v++) { cst[v] = INFINITO; parnt[v] = -; } 5 PQinit(G->V); 6 cst[s] = ; parnt[s] = s;
35 dijkstra 8 PQinsert(s); 9 while (!PQempty()) { v = PQdelmin(); for(p=g->adj[v];p!=null;p=p->next) if (cst[w=p->w]==infinito) { cst[w]=cst[v]+p->cst; parnt[w]=v; 5 PQinsert(w); }
36 dijkstra 6 else if(cst[w]>cst[v]+g->adj[v][w]) 8 cst[w]=cst[v]+g->adj[v][w]; 9 parnt[w] = v; PQdec(w); } } }
37 Conclusão O consumo de tempo da função dijkstra é O(V + A) mais o consumo de tempo de execução de PQinit e PQfree, V execuções de PQinsert, V + execuções de PQempty, V execuções de PQdelmin, e A execuções de PQdec.
38 Conclusão O consumo de tempo da função dijkstra é O(V ). Este consumo de tempo é ótimo para digrafos densos.
39 AULA 5
40 Mais algoritmo de Dijkstra S. e.
41 Relações invariantes S = vértices examinados Q = vértices visitados = vértices na la U = vértices ainda não visitados (i) não existe arco v-w com v em S e w em U S Q U
42 Relações invariantes (i) para cada u em S, v em Q e w em U cst[u] cst[v] cst[w] S Q U u v w
43 Relações invariantes (i) O vetor parnt restrito aos vértices de S e Q determina um árborescência com raiz s s S Q U
44 Relações invariantes (i) Para arco v-w na arborescência vale que cst[w] = cst[v] + custo do arco vw s S Q U
45 Relações invariantes (i) Para cada arco v-w com v ou w em S vale que cst[w] cst[v] custo do arco vw s S Q U
46 Relações invariantes (i5) Para cada vértice v em S vale que cst[v] é o custo de um caminho mínimo de s a v. s S Q U
47 Iteração s S v Q U
48 Iteração s S Q U v
49 Iteração s S Q U v
50 Outra implementação para digrafos densos #dene INFINITO maxcst void DIGRAPHsptD (Digraph G, Vertex s, Vertex parnt[], double cst[]) { Vertex w, w, fr[maxv]; for (w = ; w < G->V; w++) { parnt[w] = -; cst[w] = INFINITO; 5 } 6 fr[s] = s; cst[s] = ;
51 8 while () { 9 double mincst = INFINITO; for (w = ; w < G->V; w++) if (parnt[w]==- && mincst>cst[w]) mincst = cst[w=w]; if (mincst == INFINITO) break; parnt[w] = fr[w]; 5 for (w = ; w < G->V; w++) 6 if(cst[w]>cst[w]+g->adj[w][w]) { cst[w] = cst[w]+g->adj[w][w]; 8 fr[w] = w; } } }
52 Dijkstra para digrafos esparços S. e.
53 Representação de árvores em vetores puta que o pariu!!! nível
54 Pais e filhos A[.. m] é um vetor representando uma árvore. Diremos que para qualquer índice ou nó i, i/ é o pai de i ; i é o filho esquerdo de i ; i + é o filho direito. Todo nó i é raiz da subárvore formada por A[i, i, i +, i, i +, i +, i +, 8i,..., 8i +,...]
55 Min-heap nível
56 Rotina básica de manipulação de max-heap Recebe A[.. m] e i tais que subárvores com raiz i e i + são min-heaps e rearranja A de modo que subárvore com raiz i seja min-heap.
57 Rotina básica de manipulação de min-heap 5 nível
58 Rotina básica de manipulação de min-heap 8 nível
59 Rotina básica de manipulação de min-heap 8 nível
60 Rotina básica de manipulação de min-heap 8 nível
61 Rotina básica de manipulação de min-heap 8 nível
62 Implementação clássica Min-Heap O vetor qp é o "inverso" de pq: para cada vértice v, qp[v] é o único índice tal que pq[qp[v]] == v. É claro que qp[pq[i]]==i para todo i. static Vertex pq[maxv+]; static int N; static int qp[maxv];
63 PQinit, PQempty, PQinsert void PQinit(void) { N = ; } int PQempty(void) { return N == ; } void PQinsert(Vertex v) { } qp[v] = ++N; pq[n] = v; fixup(n);
64 PQdelmin e PQdec Vertex PQdelmin(void) { exch(, N); --N; fixdown(); return pq[n+]; } void PQdec(Vertex w) { } fixup(qp[w]);
65 exch e fixup static void exch(int i, int j) { Vertex t; t = pq[i]; pq[i] = pq[j]; pq[j] = t; qp[pq[i]] = i; qp[pq[j]] = j; } static void fixup(int i) { while (i> && cst[pq[i/]]>cst[pq[i]]){ } } exch(i/, i); i = i/;
66 fixdown static void fixdown(int i) { int j; while (*i <= N) { } } j = *i; if (j< N && cst[pq[j]] > cst[pq[j+]]) j++; if (cst[pq[i]] <= cst[pq[j]]) break; exch(i, j); i = j;
67 Consumo de tempo Min-Heap heap d-heap bonacci heap PQinsert O(lg V) O(log D V) O() PQdelmin O(lg V) O(log D V) O(lg V) PQdec O(lg V) O(log D V) O() dijkstra O(A lg V) O(A log D V) O(A + V lg V)
68 Consumo de tempo Min-Heap bucket heap radix heap PQinsert O() O(lg(VC)R PQdelmin O(C) O(lg(VC) PQdec O() O(A + V lg(vc)) dijkstra O(A + VC) O(A + V lg(vc)) C = maior custo de um arco.
69 Conclusão O consumo de tempo da função dijkstra implementada com um min-heap é O(A lg V). Este consumo de tempo é ótimo para digrafos esparsos.
Melhores momentos AULA 15
Melhores momentos AULA 5 Arborescência de caminhos mínimos Uma arborescência com raiz s é de caminhos mínimos (= shortest-paths tree = SPT) se para todo vértice t que pode ser alcançado a partir de s,
Demonstração. Relação invariante chave. Implementações do algoritmo de Prim. Implementação grosseira
Algoritmo de Prim Simulação S. Algoritmos em Grafos º sem / Franja A franja (= fringe) de uma subárvore T é o conjunto de todas as arestas que têm uma ponta em T e outra ponta fora Exemplo: As arestas
Algoritmo Floyd-Warshall. Problema dos caminhos mínimos entre todos os pares. Programação dinâmica
Algoritmo Floyd-Warshall S. Problema dos caminhos mínimos entre todos os pares Problema: Dado um digrafo com custo nos arcos, determinar, para cada par de vértices s, t o custo de um caminho mínimo de
Algoritmo de Kruskal. Algoritmo de Kruskal. Floresta geradora 26. Subfloresta S 20.3
Algoritmo de Kruskal Algoritmo de Kruskal S. Algoritmos em Grafos º sem / Subfloresta Uma subfloresta de G é qualquer floresta F que seja subgrafo de G. Exemplo: As arestas vermelhas que ligam os vértices
Filas de prioridade e heapsort
1 Filas de prioridade e heapsort Além do Sedgewick (sempre leiam o Sedgewick), veja http://www.ime.usp.br/~pf/algoritmos/aulas/hpsrt.html 2 Filas de prioridade e heapsort Fila de prioridade: fila na qual
ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES
ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES Listas de Prioridades! Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade! A prioridade associada a um dado pode
Grafos Caminhos mais curtos
rafos Caminhos mais curtos Cada caminho num digrafo ponderado possui um peso -a soma dos pesos das arestas que o constituem. Esta característica origina directamente problemas como: determinar o caminho
Ordenação: Heapsort. Algoritmos e Estruturas de Dados II
Ordenação: Heapsort Algoritmos e Estruturas de Dados II Introdução Possui o mesmo princípio de funcionamento da ordenação por seleção Selecione o menor item do vetor Troque-o pelo item da primeira posição
Filas com prioridade - Introdução (1)
AED Algoritmos e Estruturas de Dados LEEC - 2004/2005 Filas com Prioridade Filas com prioridade - Introdução (1) Filas com prioridade (Priority Queues) usadas em diversas aplicações: Despacho (scheduler)
Algoritmo de Dijkstra Estudo e Implementação
Teoria dos Grafos 0/0 Algoritmo de Dijkstra Estudo e Implementação Professora: Claudia Boeres Alunos: José Alexandre Macedo Maycon Maia Vitali Problema do Caminho Mínimo Qual o caminho mínimo entre um
INF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um
Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma
Grafos Árvores espalhadas mínimas Conteúdo Introdução Como construir uma árvore geradora miníma Algoritmos Referências Introdução Dado um grafo conectado não orientado G = (V, E) e uma função peso w :
Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Aula 13: Ordenação - Heapsort Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Filas de Prioridades É uma estrutura de dados onde a chave de cada item reflete sua habilidade relativa de abandonar
UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior
UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior ALGORITMO DE ORDENAÇÃO HEAPSORT Alyson Pereira Barbosa Erisvaldo
Estruturas de dados elementares
AED 2002/2003 p.1/31 Estruturas de dados elementares Tipos básicos Estruturas Tabelas Listas Amontoados AED 2002/2003 p.2/31 Tipos básicos Inteiros Reais Caracteres Ponteiros short a1; int a2; long a3;
QUESTÕES DE PROVAS ANTIGAS
CT-24 QUESTÕES DE PROVAS ANTIGAS ) Preencha a tabela abaixo com Î ou Ï: ω(log n) Θ(n) O(n log n) Ω(n 2 ) o(n ) 6n + 2n 2 + 2.log n + 4n + n.log n + log n 2) Dada a árvore binária abaixo, escreva os seus
Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas
Filas de Prioridade & Heaps
Filas de Prioridade & SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto
Otimização em Grafos
Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 33 Definição do Problema Dado: um grafo ponderado G = (V, E), orientado ou não, onde d : E R + define as distâncias
HeapSort Filas de Prioridade Heap. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
HeapSort Filas de Prioridade Heap David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Filas de Prioridades É uma estrutura de dados onde a chave de cada item reflete sua habilidade relativa de
Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos
Grafos Caminhos mais curtos de única origem Conteúdo Subestrutura ótima Inicialização Propriedades de caminhos mais curtos Algoritmos Algoritmo de Bellman-Ford Caminhos mais curtos de única origem em gaos
Representações de Grafos
Representações de Grafos Teoria dos Grafos 1 É possível diversas representações dos grafos. Vamos estudar as três utilizadas mais comumente: as matrizes de adjacência, as listas de adjacência e as multilistas
O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste
O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os
Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo
Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária Túlio Toffolo www.decom.ufop.br/toffolo Pesquisa em Memória Primária n Introdução - Conceitos Básicos n Pesquisa Sequencial n Pesquisa Binária n Árvores
PROJETO E ANÁLISE DE ALGORITMOS (INF 2926)
PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão Horário: 4as-feiras de 13 às 16 horas - Sala 511 RDC 29 de abril de 2015 Data da Entrega: 10 de junho de 2015 Período: 2015.1
Algoritmos de ordenação Heapsort
Algoritmos de ordenação Heapsort Sumário Introdução A estrutura de dados heap Definição Manutenção da propriedade de heap A construção de um heap O algoritmo heapsort Introdução Características do heapsort
SCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira
SCC-60 Introdução à Ciência da Computação II Ordenação e Complexidade Parte 3 Lucas Antiqueira Ordenação: Utiliza uma estrutura de dados chamada heap para ordenar. Um heap é um vetor (array) que representa
AED2 - Aula 11 Problema da separação e quicksort
AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos
Grafos - O que é um grafo? Algoritmos e Estruturas de Dados LEE 2014/15. Algoritmos e Estruturas de Dados - C. Teoria de Grafos e Algoritmos em Grafos
Algoritmos e Estruturas de Dados LEE / Teoria de Grafos e Algoritmos em Grafos Grafos - O que é um grafo? Objecto abstracto Dois tipos de entidades Nós ou Vértices Ramos ou Arestas Vértices representam
Algoritmos e Estruturas de Dados
Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A LEIC Alameda, 2007/2008 Data: 12 de Junho de 2008 2 o Semestre Duração: 2h RESOLUÇÃO I. (2.5+2.5 = 5.0 val.) I.a) Suponha que está a trabalhar
Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Heaps Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Introdução Definição de Heap Heap Binária Implementação com vetor Fila de Prioridades
Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I
2014-01 Aula 16 Fila de Prioridade / HeapSort Adaptado por Reinaldo Fortes para o curso de 2014-01 Arquivo original: Aula 17: HeapSort Ordenação: HeapSort Prof. Túlio Toffolo http://www.toffolo.com.br
Acessibilidade e Fecho Transitivo de Grafos Dirigidos
1 Acessibilidade e Fecho Transitivo de Grafos Dirigidos 1. Fecho transitivo 2. Multiplicação de matrizes booleanas 3. Algoritmo de Warshall 4. Equivalência em termos de complexidade computacional com o
Teoria dos Grafos Aula 8
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
Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.
Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira [email protected] Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados
Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Aula 15: Pesquisa em Memória Primária Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial Pesquisa Binária Árvores de
Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford
Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 28 Caminho mais curto a partir de um nó Input: Um grafo com pesos nos arcos
Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Árvores (parte 3) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.
Otimização em Grafos
Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 35 Teoria dos Grafos - Relembrando Árvore Um grafo G é uma árvore se é conexo e não possui ciclos (acíclico).
ALGORITMOS em linguagem C
ALGORITMOS em linguagem C Paulo Feofiloff Instituto de Matemática e Estatística Universidade de São Paulo Campus/Elsevier. Algoritmos em linguagem C Paulo Feofiloff editora Campus/Elsevier, 2009 www.ime.usp.br/
HeapSort. Estrutura de Dados II Jairo Francisco de Souza
HeapSort Estrutura de Dados II Jairo Francisco de Souza HeapSort Algoritmo criado por John Williams (1964) Complexidade O(NlogN) no pior e médio caso Mesmo tendo a mesma complexidade no caso médio que
DAINF - Departamento de Informática
DAINF - Departamento de Informática Algoritmos 2 - Árvore binária de busca Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 30 de Novembro de 2015 Slides adaptados do material produzido pelo Prof.
INF111 Programação II Aulas 11, 12, 13 Ordenação
INF Programação II Aulas,, Ordenação Departamento de Informática UFV Ordenação A ordenação é o processo de organizar um conunto (vetor) de n obetos ou registros segundo uma determinada ordem crescente
AULA 19 AULA 20. Ordenação: algoritmo Quicksort. Resumo. Melhores momentos
Melhores momentos Resumo AULA 19 função consumo de observação tempo bubble O(n 2 ) todos os casos insercao O(n 2 ) pior caso O(n) melhor caso insercaobinaria O(n 2 ) pior caso O(n lg n) melhor caso selecao
Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade
Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Gustavo E.A.P.A. Batista 25 de janeiro de 2005 1 Contextualização 2 Caminhos Mínimos Caminhos Mínimos de uma Origem
Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010
Filas de prioridade Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Qual a Utilidade das Filas de Prioridade? Trabalhos maiores devem ser executados no fim (mesmo que não tenha sido o último
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
INF 1010 Estruturas de Dados Avançadas
INF Estruturas de Dados Avançadas Grafos // DI, PUC-Rio Estruturas de Dados Avançadas. Algoritmo de Dijkstra 8 8 Algoritmo de Dijkstra 8 8 8 Algoritmo de Dijkstra 8 8 8 Algoritmo de Dijkstra 8 8 8 8 8
ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO
