Algoritmos gulosos (greedy)
|
|
|
- Ronaldo Branco Galvão
- 7 Há anos
- Visualizações:
Transcrição
1 Algoritmos gulosos (greedy) CLRS 16.2 Algoritmos p. 1
2 Algoritmos gulosos A greedy algorithm starts with a solution to a very small subproblem and augments it successively to a solution for the big problem. The augmentation is done in a greedy fashion, that is, paying atention to short-term or local gain, without regard to whether it will lead to a good long-term or global solution. As in real life, greedy algorithms sometimes lead to the best solution, sometimes lead to pretty good solutions, and sometimes lead to lousy solutions. The trick is to determine when to be greedy. Algoritmos p. 2
3 Algoritmos gulosos A greedy algorithm starts with a solution to a very small subproblem and augments it successively to a solution for the big problem. The augmentation is done in a greedy fashion, that is, paying atention to short-term or local gain, without regard to whether it will lead to a good long-term or global solution. As in real life, greedy algorithms sometimes lead to the best solution, sometimes lead to pretty good solutions, and sometimes lead to lousy solutions. The trick is to determine when to be greedy. One thing you will notice about greedy algorithms is that they are usually easy to design, easy to implement, easy to analyse, and they are very fast, but they are almost always difficult to prove correct. I. Parberry, Problems on Algorithms, Prentice Hall, Algoritmos p. 2
4 Problema fracionário da mochila Problema: Dados (w,v,n,w), encontrar uma mochila ótima. Algoritmos p. 3
5 Problema fracionário da mochila Problema: Dados (w,v,n,w), encontrar uma mochila ótima. Exemplo: W = 50, n = w v x valor = 840 x valor = 940 x valor = 1000 x 1 1/3 0 0 valor = 1040 Algoritmos p. 3
6 A propósito... O problema fracionário da mochila é um problema de programação linear (PL): encontrar um vetor x que maximize sob as restrições x v x w W x[i] 0 para i = 1,...,n x[i] 1 para i = 1,...,n Algoritmos p. 4
7 A propósito... O problema fracionário da mochila é um problema de programação linear (PL): encontrar um vetor x que maximize sob as restrições x v x w W x[i] 0 para i = 1,...,n x[i] 1 para i = 1,...,n PL s podem ser resolvidos por SIMPLEX: no pior caso consome tempo exponencial na prática é muito rápido ELIPSÓIDES: consome tempo polinomial na prática é lento PONTOS-INTERIORES: consome tempo polinomial na prática é rápido Algoritmos p. 4
8 Subestrutura ótima Suponha que x[1..n] é mochila ótima para o problema (w,v,n,w). Algoritmos p. 5
9 Subestrutura ótima Suponha que x[1..n] é mochila ótima para o problema (w,v,n,w). Se x[n] = δ então x[1..n 1] é mochila ótima para (w,v,n 1,W δw[n]) Algoritmos p. 5
10 Subestrutura ótima Suponha que x[1..n] é mochila ótima para o problema (w,v,n,w). Se x[n] = δ então x[1..n 1] é mochila ótima para (w,v,n 1,W δw[n]) NOTA. Não há nada de especial acerca do índice n. Uma afirmação semelhante vale para qualquer índice i. Algoritmos p. 5
11 Escolha gulosa Suponha w[i] 0 para todo i. Algoritmos p. 6
12 Escolha gulosa Suponha w[i] 0 para todo i. Se v[n]/w[n] v[i]/w[i] para todo i então EXISTE uma mochila ótima x[1..n] tal que x[n] = min { 1, } W w[n] Algoritmos p. 6
13 Algoritmo guloso Esta propriedade da escolha gulosa sugere um algoritmo que atribui os valores de x[1..n] supondo que os dados estejam em ordem decrescente de valor específico : v[1] w[1] v[2] w[2] v[n] w[n] Algoritmos p. 7
14 Algoritmo guloso Esta propriedade da escolha gulosa sugere um algoritmo que atribui os valores de x[1..n] supondo que os dados estejam em ordem decrescente de valor específico : v[1] w[1] v[2] w[2] v[n] w[n] É nessa ordem mágica que está o segredo do funcionamento do algoritmo. Algoritmos p. 7
15 Algoritmo guloso Devolve uma mochila ótima para (w,v,n,w). MOCHILA-FRACIONÁRIA (w, v, n, W) 0 ordene w e v de tal forma que v[1]/w[1] v[2]/w[2] v[n]/w[n] 1 para i n decrescendo até 1 faça 2 se w[i] W 3 então x[i] 1 4 W W w[i] 5 senão x[i] W/w[i] 6 W 0 7 devolva x Algoritmos p. 8
16 Algoritmo guloso Devolve uma mochila ótima para (w,v,n,w). MOCHILA-FRACIONÁRIA (w, v, n, W) 0 ordene w e v de tal forma que v[1]/w[1] v[2]/w[2] v[n]/w[n] 1 para i n decrescendo até 1 faça 2 se w[i] W 3 então x[i] 1 4 W W w[i] 5 senão x[i] W/w[i] 6 W 0 7 devolva x Consumo de tempo da linha 0 é Θ(nlgn). Consumo de tempo das linhas 1 7 é Θ(n). Algoritmos p. 8
17 Invariante Seja W 0 o valor original de W. No início de cada execução da linha 1 vale que Algoritmos p. 9
18 Invariante Seja W 0 o valor original de W. No início de cada execução da linha 1 vale que (i0) x = x[i+1..n] é mochila ótima para onde w = w[i+1..n] v = v[i+1..n] n = n i (w,v,n,w 0 ) Algoritmos p. 9
19 Invariante Seja W 0 o valor original de W. No início de cada execução da linha 1 vale que (i0) x = x[i+1..n] é mochila ótima para onde w = w[i+1..n] v = v[i+1..n] n = n i (w,v,n,w 0 ) Na última iteração i = 0 e portanto x[1..n] é mochila ótima para (w,v,n,w 0 ). Algoritmos p. 9
20 Conclusão O consumo de tempo do algoritmo MOCHILA-FRACIONÁRIA é Θ(n lg n). Algoritmos p. 10
21 Escolha gulosa Precisamos mostrar que se x[1..n] é uma mochila ótima, então podemos supor que { } W x[n] = α := min 1, w[n] Algoritmos p. 11
22 Escolha gulosa Precisamos mostrar que se x[1..n] é uma mochila ótima, então podemos supor que { } W x[n] = α := min 1, w[n] Depois de mostrar isto, indução faz o resto do serviço. Algoritmos p. 11
23 Escolha gulosa Precisamos mostrar que se x[1..n] é uma mochila ótima, então podemos supor que { } W x[n] = α := min 1, w[n] Depois de mostrar isto, indução faz o resto do serviço. Técnica: transformar uma solução ótima em uma solução ótima gulosa. Algoritmos p. 11
24 Escolha gulosa Precisamos mostrar que se x[1..n] é uma mochila ótima, então podemos supor que { } W x[n] = α := min 1, w[n] Depois de mostrar isto, indução faz o resto do serviço. Técnica: transformar uma solução ótima em uma solução ótima gulosa. Esta transformação é semelhante ao processo de pivotação do algoritmo SIMPLEX para programação linear. Algoritmos p. 11
25 Escolha gulosa Seja x[1..n] uma mochila ótima para (w,v,n,w) tal que x[n] é máximo. Se x[n] = α, não há o que mostrar. Algoritmos p. 12
26 Escolha gulosa Seja x[1..n] uma mochila ótima para (w,v,n,w) tal que x[n] é máximo. Se x[n] = α, não há o que mostrar. Suponha x[n] < α. Algoritmos p. 12
27 Escolha gulosa Seja x[1..n] uma mochila ótima para (w,v,n,w) tal que x[n] é máximo. Se x[n] = α, não há o que mostrar. Suponha x[n] < α. Podemos supor que x w = W. (Podemos mesmo?) Algoritmos p. 12
28 Escolha gulosa Seja x[1..n] uma mochila ótima para (w,v,n,w) tal que x[n] é máximo. Se x[n] = α, não há o que mostrar. Suponha x[n] < α. Podemos supor que x w = W. (Podemos mesmo?) Seja i em [1..n 1] tal que x[i] > 0. (Quem garante que existe um tal i?). Algoritmos p. 12
29 Escolha gulosa Seja x[1..n] uma mochila ótima para (w,v,n,w) tal que x[n] é máximo. Se x[n] = α, não há o que mostrar. Suponha x[n] < α. Podemos supor que x w = W. (Podemos mesmo?) Seja i em [1..n 1] tal que x[i] > 0. (Quem garante que existe um tal i?). Seja e δ := min { x[i],(α x[n]) w[n] w[i] β := δ w[i] w[n]. } Algoritmos p. 12
30 Escolha gulosa Seja x[1..n] uma mochila ótima para (w,v,n,w) tal que x[n] é máximo. Se x[n] = α, não há o que mostrar. Suponha x[n] < α. Podemos supor que x w = W. (Podemos mesmo?) Seja i em [1..n 1] tal que x[i] > 0. (Quem garante que existe um tal i?). Seja e δ := min Note que δ > 0 e β > 0. { x[i],(α x[n]) w[n] w[i] β := δ w[i] w[n]. } Algoritmos p. 12
31 Mais escolha gulosa Seja x [1..n] tal que x [j] := x[j] se j i e j n, x[i] δ se j = i, x[n]+β se j = n. Algoritmos p. 13
32 Mais escolha gulosa Seja x [1..n] tal que x [j] := x[j] se j i e j n, x[i] δ se j = i, x[n]+β se j = n. Verifique que 0 x[j] 1 para todo j. Algoritmos p. 13
33 Mais escolha gulosa Seja x [1..n] tal que x [j] := x[j] se j i e j n, x[i] δ se j = i, x[n]+β se j = n. Verifique que 0 x[j] 1 para todo j. Além disso, temos que x w = x [1]w[1]+ +x [i]w[i]+ +x [n]w[n] = x[1]w[1]+ +(x[i] δ)w[i]+ +(x[n]+β)w[n] ( = x[1]w[1]+ +(x[i] δ)w[i]+ + x[n]+δ w[i] ) w[n] w[n] = x[1]w[1]+ +x[i]w[i] δw[i]+ +x[n]w[n]+δw[i] = W. Algoritmos p. 13
34 Mais escolha gulosa ainda Temos ainda que x v = x [1]v[1]+ +x [i]v[i]+ +x [n]v[n] = x[1]v[1]+ +(x[i] δ)v[i]+ +(x[n]+β)v[n] ( = x[1]v[1]+ +(x[i] δ)v[i]+ + x[n]+δ w[i] ) v[n] w[n] = x[1]v[1]+ +x[i]v[i] δv[i]+ +x[n]v[n]+δw[i] v[n] w[n] ( = x v +δ w[i] v[n] ) w[n] v[i] x v +δ(w[i] v[i] w[i] = x v. v[i]) (devido a escolha gulosa!) Algoritmos p. 14
35 Escolha gulosa: epílogo Assim, x é uma mochila tal que x v x v. Algoritmos p. 15
36 Escolha gulosa: epílogo Assim, x é uma mochila tal que x v x v. Como x é mochila ótima, concluímos que x v = x v e que x é uma mochila ótima que contradiz a nossa escolha de x, já que x [n] = x[n]+β > x[n]. Conclusão Se v[n]/w[n] v[i]/w[i] para todo i e x é uma mochila ótima para (w,v,n,w) com x[n] máximo, então x[n] = min { 1, W w[n] } Algoritmos p. 15
37 Algoritmos gulosos Algoritmo guloso procura ótimo local e acaba obtendo ótimo global Algoritmos p. 16
38 Algoritmos gulosos Algoritmo guloso procura ótimo local e acaba obtendo ótimo global costuma ser muito simples e intuitivo muito eficiente difícil provar que está correto Algoritmos p. 16
39 Algoritmos gulosos Algoritmo guloso procura ótimo local e acaba obtendo ótimo global costuma ser muito simples e intuitivo muito eficiente difícil provar que está correto Problema precisa ter subestrutura ótima (como na programação dinâmica) propriedade da escolha gulosa (greedy-choice property) Algoritmos p. 16
40 Algoritmos gulosos Algoritmo guloso procura ótimo local e acaba obtendo ótimo global costuma ser muito simples e intuitivo muito eficiente difícil provar que está correto Problema precisa ter subestrutura ótima (como na programação dinâmica) propriedade da escolha gulosa (greedy-choice property) Exercício: O problema da mochila booleana pode ser resolvido por um algoritmo guloso? Algoritmos p. 16
41 Problema dos intervalos disjuntos Problema: Dados intervalos [s[1],f[1]),...,[s[n],f[n]), encontrar uma coleção máxima de intervalos disjuntos dois a dois. Solução é um subconjunto A de {1,...,n}. Algoritmos p. 17
42 Problema dos intervalos disjuntos Problema: Dados intervalos [s[1],f[1]),...,[s[n],f[n]), encontrar uma coleção máxima de intervalos disjuntos dois a dois. Solução é um subconjunto A de {1,...,n}. Exemplo: s[1] f[1] Algoritmos p. 17
43 Problema dos intervalos disjuntos Problema: Dados intervalos [s[1],f[1]),...,[s[n],f[n]), encontrar uma coleção máxima de intervalos disjuntos dois a dois. Solução é um subconjunto A de {1,...,n}. Solução: s[1] f[1] s[4] f[4] Algoritmos p. 17
44 Problema dos intervalos disjuntos Problema: Dados intervalos [s[1],f[1]),...,[s[n],f[n]), encontrar uma coleção máxima de intervalos disjuntos dois a dois. Solução é um subconjunto A de {1,...,n}. Solução: s[2] f[2] s[6] f[6] Algoritmos p. 17
45 Motivação Se cada intervalo é uma atividade, queremos coleção disjunta máxima de atividades compatíveis (i e j são compatíveis se f[i] s[j]) Nome no CLRS: Activity Selection Problem Algoritmos p. 18
46 Intervalos S := {1,...,n} Subestrutura ótima Suponha que A é coleção máxima de intervalos de S disjuntos dois a dois. Se i A então A {i} é coleção máxima de intervalos disjuntos de S {k : [s[k],f[k]) [s[i],f[i]) }. senão A é coleção máxima de intervalos disjuntos de S {i}. Demonstre a propriedade. Algoritmos p. 19
47 Subestrutura ótima II Intervalos S := {1,...,n} Suponha que A é coleção máxima de intervalos de S disjuntos dois a dois. Se i A é tal que f[i] é mínimo então A {i} é coleção máxima de intervalos disjuntos de {k : s[k] f[i]}. {k : s[k] f[i]} = todos intervalos à direita de i. Demonstre a propriedade. Algoritmos p. 20
48 Algoritmo de programação dinâmica Suponha s[1] s[2] s[n] t[i] = tamanho de uma subcoleção disjunta máxima de {i,...,n} t[n] = 1 t[i] = max{t[i+1],1+t[k]} para i = 1,...,n 1, onde k é o menor índice tal que s[k] f[i]. Algoritmos p. 21
49 Algoritmo de programação dinâmica DYNAMIC-ACTIVITY-SELECTOR (s, f, n) 0 ordene s e f de tal forma que s[1] s[2] s[n] 1 A[n+1] 2 para i n decrescendo até 1 faça 3 A[i] A[i+1] 4 k i+1 5 enquanto k n e s[k] < f[i] faça 6 k k +1 7 se A[i] < 1+ A[k] 8 então A[i] {i} A[k] 9 devolva A[1] Consumo de tempo é Θ(n 2 ). Algoritmos p. 22
50 Conclusão Invariante: na linha 2 vale que (i0) A[k] é coleção disjunta máxima de {k,...,n} (i0) para k = i+1,...,n. O consumo de tempo do algoritmo DYNAMIC-ACTIVITY-SELECTOR é Θ(n 2 ). Algoritmos p. 23
51 Escolha gulosa Intervalos S := {1,...,n} Se f[i] é mínimo em S, então EXISTE uma solução ótima A tal que i A. Demonstre a propriedade. Algoritmos p. 24
52 Algoritmo guloso Devolve uma coleção máxima de intervalos disjuntos dois a dois. INTERVALOS-DISJUNTOS (s, f, n) 0 ordene s e f de tal forma que f[1] f[2] f[n] 1 A {1} 2 i 1 3 para j 2 até n faça 4 se s[j] f[i] 5 então A A {j} 6 i j 7 devolva A Consumo de tempo da linha 0 é Θ(nlgn). Consumo de tempo das linhas 1 7 é Θ(n). Algoritmos p. 25
53 Conclusão Na linha 3 vale que (i0) A é uma coleção máxima de intervalos disjuntos de (s,f,j 1) O consumo de tempo do algoritmo INTERVALOS-DISJUNTOS é Θ(n lg n). Algoritmos p. 26
54 Coloração de intervalos Problema: Dados intervalos de tempo [s 1,f 2 ),...,[s n,f n ), encontrar uma coloração dos intervalos com o menor número possível de cores em que dois intervalos de mesma cor sempre sejam disjuntos. Solução: uma partição de {1,...,n} em coleções de intervalos dois a dois disjuntos. Algoritmos p. 27
55 Motivação Queremos distribuir um conjunto de atividades no menor número possivel de salas. Cada atividade a i ocupa um certo intervalo de tempo [s i,f i ) e duas atividades podem ser programadas para a mesma sala somente se os correspondentes intervalos são disjuntos. Cada sala corresponde a uma cor. Queremos usar o menor número possível de cores para pintar todos os intervalos. Algoritmos p. 28
56 Estratégias gulosas: Coloração de intervalos Encontre uma coleção disjunta máxima de intervalos, pinte com a próxima cor disponível e repita a idéia para os intervalos restantes. Ordene as atividades de maneira que f[1] f[2] f[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Ordene as atividades de maneira que s[1] s[2] s[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Quais destas estratégias funcionam? Quais não funcionam? Algoritmos p. 29
Mochila. Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar
Mochila Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar w[1]x[1] + w[2]x[2] + + w[n]x[n]. Suponha dado um número inteiro não-negativo W e vetores positivos w[1..n] e v[1..n].
Algoritmos gulosos (greedy) CLRS Cap 16 e KT Cap 4
Algoritmos gulosos (greedy) CLRS Cap 16 e KT Cap 4 Algoritmos gulosos A greedy algorithm starts with a solution to a very small subproblem and augments it successively to a solution for the big problem.
Algoritmos gulosos (greedy)
Algoritmos gulosos (greedy) CLRS 16.1 e mais... Algoritmos p. 1 Algoritmos gulosos Algoritmo guloso procura ótimo local e acaba obtendo ótimo global costuma ser muito simples e intuitivo muito eficiente
Alguns comentários. Segunda prova. Programação dinâmica em grafos. Guloso em grafos. Algoritmos p. 1
Alguns comentários Segunda prova Programação dinâmica em grafos Guloso em grafos Algoritmos p. 1 Problema dos intervalos disjuntos Problema: Dados intervalos [s[1],f[1]),...,[s[n],f[n]), encontrar coleção
Coloração de intervalos
Coloração de intervalos Problema: Dados intervalos de tempo [s 1,f 1 ),...,[s n,f n ), encontrar uma coloração dos intervalos com o menor número possível de cores em que dois intervalos de mesma cor sempre
Problema de seleção de atividades. Aula 14. Exemplo. Algoritmos Gulosos. Algoritmos Gulosos. Intervalo: par ordenado de números
Problema de seleção de atividades Aula 14 Algoritmos Gulosos Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Intervalo: par ordenado de números [s[i],f[i]): início e fim do intervalo
Algoritmos em Grafos - Aula 07 Algoritmos Gulosos
Algoritmos em Grafos - Aula 07 Algoritmos Gulosos Prof a. Laura Silva de Assis PPCIC - Programa de Pós-graduação em Ciência da Computação CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow
ANÁLISE DE ALGORITMOS
ANÁLISE DE ALGORITMOS Paulo Feofiloff Instituto de Matemática e Estatística Universidade de São Paulo agosto 2009 Introdução P. Feofiloff (IME-USP) Análise de Algoritmos agosto 2009 2 / 102 Introdução
Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)
Aula 2 Divisão e conquista Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT) Exemplo 2: Par de pontos mais próximos (sec 33.4 do CLRS) Essas transparências
Análise de Algoritmos
Análise de Algoritmos Estes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1 Introdução CLRS 2.2 e 3.1 AU 3.3, 3.4 e 3.6 Essas transparências foram
Melhores momentos AULA 1. Algoritmos p.38/86
Melhores momentos AULA 1 Algoritmos p.38/86 Definições x := inteiro i tal que i x < i + 1 x := inteiro j tal que j 1 < x j Exercício A1.B Mostre que n 1 2 n 2 n 2 e n 2 n 2 n + 1 2 para qualquer inteiro
Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort
Mergesort Aula 0 Divisão e Conquista- MergeSort Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Mergesort é um algoritmo de ordenação recursivo Ele recursivamente ordena as duas
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 04 Técnicas de Projeto de Algoritmos (Método Guloso) Edirlei Soares de Lima Estratégias de Projeto de Algoritmos Força Bruta (Brute Force) Dividir
Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves
Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica Gabriel Rosa Guilherme Alves Agenda O problema, definição e exemplo Construindo uma solução... Expressão recursiva Algoritmo recursivo
Ordenação em tempo linear
Ordenação em tempo linear CLRS cap 8 Algoritmos p. 1 Ordenação: limite inferior Problema: Rearranjar um vetor A[1..n] de modo que ele fique em ordem crescente. Existem algoritmos que consomem tempo O(n
Projeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais [email protected] 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada [email protected], [email protected] Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP Manber, Introduction to Algorithms (989) Livro de abril de 08 Conteúdo programático
Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência
Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1
Programação dinâmica
Programação dinâmica CLRS 15.2 15.3 = recursão com tabela = transformação inteligente de recursão em iteração Algoritmos p. 1 Multiplicação iterada de matrizes Se A é p q e B é q r então AB é p r. (AB)[i,j]
Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)
1 Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5) DECOM/UFOP 2012/2 5º. Período Anderson Almeida Ferreira Adaptado do material de Andréa Iabrudi Tavares BCC241/2012-2 3 Algoritmos Gulosos
Melhores momentos AULA 24. Algoritmos p.906/953
Melhores momentos AULA 24 Algoritmos p.906/953 Problemas polinomiais Analise de um algoritmo em um determinado modelo de computação estima o seu consumo de tempo e quantidade de espaço como uma função
ANÁLISE DE ALGORITMOS
ANÁLISE DE ALGORITMOS www.ime.usp.br/ pf/analise de algoritmos/ Paulo Feofiloff Transparências baseadas no Introduction to Algorithms de Cormen, Leiserson, Rivest, Stein A análise de algoritmos é uma disciplina
Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo
Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464 / PCC174 Departamento de Computação - UFOP Breve Revisão Programação Linear vs Programação Inteira Modelagem
Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então
PCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 7 de outubro de 2016 Marco Antonio
15 - Coloração Considere cada um dos grafos abaixo:
15 - Coloração Considere cada um dos grafos abaixo: a) Quantas cores são necessárias para colorir os vértices de um grafo de maneira que dois vértices adjacentes não recebam a mesma cor? b) Qual é o número
AULA 13. Algoritmos p.526/582
AULA 13 Algoritmos p.526/582 Ordenação em tempo linear CLRS 8.2 8.3 Algoritmos p.527/582 Ordenação por contagem Recebe vetores A[1.. n] e B[1.. n] e devolve no vetor B[1.. n] os elementos de A[1.. n] em
Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:
ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros
AULA 17. Melhores momentos. Segmento de soma máxima. Segmento de soma máxima. Conclusões. Algumas técnicas
Melhores momentos Segmento de soma máxima Um segmento de um vetor v[0 n 1] é qualquer subvetor da forma v[e d] Problema: Dado um vetor v[0 n 1] de números inteiros, determinar um segmento v[e d] de soma
Comparação com Divisão e Conquista
Programação Dinâmica Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados II Outra técnica de concepção de algoritmos, tal como Divisão e Conquista ou Estratégias Greedy. O termo Programação
Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40
Algoritmos Greedy Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/2015 1 / 40 Algoritmos Greedy Vamos falar de algoritmos greedy. Em português são conhecidos como: Algoritmos
Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1
Mediana Aula 09 Algoritmo de Seleção Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Baseado em slides do Prof. Paulo Fiofilof Mediana é o n+1 2 -ésimo menor ou o n+1 2 -ésimo
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP 18 de agosto de 2017 Conteúdo programático Introdução (4 horas/aula) Notação
AULA 20. Algoritmos p.725/759
AULA 20 Algoritmos p.725/759 Mais análise amortizada CLR 18 ou CLRS 17 Algoritmos p.726/759 Análise amortizada Análise amortizada = análise do consumo de tempo de uma seqüência de operações Usada nos casos
Trabalho de Análise de Algoritmos. Problema da Mochila
Trabalho de Análise de Algoritmos Problema da Mochila Felipe R. S. Barbosa, Flávio R. J. de Sousa, Leonardo dos Reis Vilela Faculdade de Ciência da Computação Universidade Federal de Uberlândia (UFU) Uberlândia
Algoritmos de aproximação - Problema de cobertura por conjuntos
Algoritmos de aproximação - Problema de cobertura por conjuntos Marina Andretta ICMC-USP 22 de setembro de 205 Baseado no livro Uma introdução sucinta a Algoritmos de Aproximação, de M. H. Carvalho, M.
Fernando Lobo. Algoritmos e Estrutura de Dados. Outra técnica de concepção de algoritmos, tal como Divisão e Conquista.
Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados 1 / 56 Programação Dinâmica Outra técnica de concepção de algoritmos, tal como Divisão e Conquista. O termo Programação Dinâmica é um
Otimização Combinatória - Parte 4
Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional
ANÁLISE DE ALGORITMOS (INF 1721)
PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão (3WA) Horário: 2as. e 4as. 9-11hs (3WA) 3 de dezembro de 2016 Período: 2016.2 ANÁLISE DE ALGORITMOS (INF 1721) 3 a Lista de
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar
Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6
Lista 6 Exercício. O objetivo deste exercício é modelar o problema de emparelhamento em um grafo bipartido como um problema de fluxo, e verificar que o Teorema de Konig é essencialmente o Teorema de Fluxo
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi
PCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 1 de novembro de 2018 Marco Antonio
Rascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 11 de junho de 2017
CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR 11 de junho de 017 Sumário 1 Apresentação do Curso Problemas computacionais e algoritmos 4
Classes, Herança e Interfaces
Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011
Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)
1 Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material de Andréa Iabrudi Tavares BCC241/2012-2 3 Comparação
Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder
Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver
Aula 1. Teoria da Computação III
Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável
Redução polinomial. Permite comparar o grau de complexidade de problemas diferentes.
Redução polinomial Permite comparar o grau de complexidade de problemas diferentes. Uma redução de um problema Π a um problema Π é um algoritmo ALG que resolve Π usando uma subrotina hipotética ALG que
Complexidade de Algoritmos
Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como
Análise de algoritmos
Análise de algoritmos Recorrências Conteúdo Introdução O método mestre Referências Introdução O tempo de execução de um algoritmo recursivo pode frequentemente ser descrito por uma equação de recorrência.
ORDENAÇÃO E BUSCA 1. MÉTODOS DE ORDENAÇÃO
ORDENAÇÃO E BUSCA Em computação, freqüentemente, armazenamos dados que, mais tarde, precisam ser recuperados. Como veremos, a eficiência na busca de informações depende, essencialmente, da ordem em que
Algoritmos Gulosos. Norton T. Roman
Algoritmos Gulosos Norton T. Roman Apostila baseada no trabalho de Delano M. Beder, Luciano Digianpietri, David Matuszek, Marco Aurelio Stefanes e Nivio Ziviani Algoritmos Gulosos São aqueles que, a cada
Algoritmos de Caminho Mínimo Parte 1
Algoritmos de Caminho Mínimo Parte 1 A journey of a thousand miles starts with a single step and if that step is the right step, it becomes the last step. Index 1. Introduction 2. Applications 3. Tree
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br Consumo de tempo assintótico Seja A um algoritmo para um problema
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 :
Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.
Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. José Lucas Rangel 9.1 - Introdução. Como já vimos anteriormente, a classe das linguagens sensíveis ao contexto (lsc) é uma
EEL470 Algoritmos e Estruturas de Dados Prof. Heraldo L. S. Almeida Prova 1 (22/05/2009)
1) Demonstre que, se f(n) Θ(g(n)) e g(n) O(h(n)), então h(n) Ω(f(n)). Valor: 2,0 pontos Se f(n) Θ(g(n)), então existem c 1, c 2 e n 1 tais que c 1 g(n) f(n) c 2 g(n), n n 1 Se g(n) O(h(n)), então existem
Teoria dos Grafos. Coloração de Vértices
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Silvio A. de Araujo Departamento de Matemática Aplicada [email protected], [email protected], [email protected] Coloração de
Análise de Algoritmos. Slides de Paulo Feofiloff
Análise de Algoritmos Slides de Paulo Feofiloff [com erros do coelho e agora também da cris] Algoritmos p. 1 Redução polinomial Permite comparar o grau de complexidade de problemas diferentes. Uma redução
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Grafos 7. Complexidade 8. Ordenação 9. Busca Sugestão bibliográfica: ESTRUTURAS DE DADOS
Estruturas de Dados 2
Estruturas de Dados 2 IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/34 Introdução Técnica de Projeto de Algoritmos utilizada para Problemas de Otimização; Idéia:
RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1
DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA 1 1. Considere a soma S n = 1 2 0 + 2 2 1 + 3 2 2 + + n 2 n 1. Mostre, por indução finita, que S n = (n 1)2 n + 1. Indique claramente a base da indução, a
