Dividir-e-Conquistar

Slides:



Advertisements
Apresentações semelhantes
Geometria Computacional Fecho Convexo II
Advertisements

Sistemas Realimentados
Katia S. Guimarães QUICKSORT Katia S. Guimarães
Amintas engenharia.
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
Aula 10 Algoritmos de Busca
Algoritmos de Ordenação
Prof. M.Sc. Fábio Francisco da Costa Fontes Outubro
Sinais e Sistemas – Capítulo 3
Sinais e Sistemas – Capítulo 2
Sinais e Sistemas – Capítulo 4
Modelos no Domínio do Tempo de Sistemas LTI Contínuos
Prof. Júlio Cesar Nievola
Análise Projeto de Algoritmos
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
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.
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
David Menotti Estruturas de Dados I DECOM – UFOP
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
Recursividade Conceitos e Aplicações.
Carolina Fonseca Neumar Ribeiro
Métodos de Classificação por Seleção: HeapSort
EQUAÇÕES POLINOMIAIS Prof. Marlon.
SISTEMAS LINEARES II Prof. Marlon.
Recorrências.
Programação Dinámica Análise de algoritmos UNISUL
3 - Equações Lineares de Segunda Ordem
Aula 11 Fábio Nakano.
Aula 12 Fábio Nakano. Aquecimento... Demonstre por indução que: S n = (2n-1)=n 2.
Teorema do Confronto   Se não pudermos obter o limite diretamente, talvez possamos obtê-lo indiretamente com o teorema do confronto. O teorema se refere.
Informática Teórica Engenharia da Computação
Aula prática 6 Vetores e Matrizes
Paradigma de Divisão e Conquista
Princípio de Prova por Indução
Cálculo Numérico / Métodos Numéricos
Cálculo Numérico / Métodos Numéricos
Aula 14.
Aulas 9,10 Fábio Nakano.
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Aula prática 6 Vetores e Matrizes
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Sistema de equações lineares
Mergesort Katia Guimarães.
Indução Matemática Recursão
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
MERGE SORT DANIEL C. MERODE NAIROBI S. DE OLIVEIRA SEGURANÇA DA INFORMAÇÃO - ESTRUTURA DE DADOS C++
Algoritmos e Estruturas de Dados I – Recursão
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de A[p…q] é menor ou igual.
Equações diferenciais ordinárias de segunda ordem
Instrumentos de Segunda Ordem
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Aula 10 Algoritmos de Busca
INE Fundamentos de Matemática Discreta para a Computação
Engenharia de Software
Programação Dinâmica.
Crescimento de Funções

Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Analise de Algoritmos e Notação Assintótica
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
TEORIA DOS NÚMEROS Aula 2 – Princípio da Indução Finita
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
Sistemas de Controle III N8SC3
FEATURE SELECTION. Introdução  Estudo de metodologias relacionadas a seleção de atributos  Maldição da dimensionalidade  O número de atributos do desenvolvedor.
Métodos de Ordenação Externa
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Dividir-e-Conquistar Recursividade em estruturas Divida o problema em vários sub-problemas menores que são similares ao original, mas de tamanho menor Conquiste os sub-problemas, resolvendo-os recursivamente. Se eles são pequenos o bastante, então resolvo-os de uma maneira direta. Combine as soluções para criar uma solução para o problema original. UFES Berilhes B. Garcia

Um Exemplo: Merge Sort Dividir: Divida a seqüência de n-elementos a ser ordenada em duas subsequências de n/2 elementos cada uma. Conquistar: Ordene as duas subseqüências recursivamente utilizando o merge sort. Combinar: Funda as duas subseqüências ordenadas de modo a produzir uma resposta ordenada. UFES Berilhes B. Garcia

Merge-Sort (A, p, r) Entrada: uma seqüência de n números armazenados em um vetor A Saída: uma seqüência ordenada de n números 1. if p < r 2. then q  [(p+r)/2] 3. Merge-Sort (A, p, q) 4. Merge-Sort (A, q+1, r) 5. Merge (A, p, q, r) UFES Berilhes B. Garcia

T(n) = 2T(n/2) +  (n) se n > 1 Análise do Merge Sort Dividir: computar o elemento do méio toma  (1) Conquistar: resolver 2 sub-problemas toma 2T(n/2) Combinar: fundir n-elementos toma  (n) Total: T(n) =  (1) se n = 1 T(n) = 2T(n/2) +  (n) se n > 1  T(n) =  (n lg n) UFES Berilhes B. Garcia

Relações de Recorrência Recurrências Método da Substituição Método da Iteração Método Mestre Surgem a partir da abordagem Dividir e Conquistar (exemplo. MERGE-SORT) T(n) =  (1) se n  c T(n) = a T(n/b) + D(n) + C(n) caso contrário UFES Berilhes B. Garcia

Método da Substituição Adivinhando a forma das soluções, e então utilizando indução matemática para encontrar as constantes e mostrar que a solução está correta. Este funciona bem quando é fácil adivinhar. Mas, não há nenhuma maneira gerak de adivinhar a solução correta. UFES Berilhes B. Garcia

Um Exemplo Resolver: T(n) = 3T(n/3) + n T(n)  3c n/3 lg n/3 + n = c n lg n - c n lg3 + n = c n lg n - n (c lg 3 - 1)  c n lg n * O último passo é verdade para c  1 / lg3. UFES Berilhes B. Garcia

Fazendo uma Boa Adivinhação Adivinhando uma solução similar para uma recorrência que você já tenha visto antes T(n) = 3T(n/3 + 5) + n similar à T(n) = 3T(n/3) + n quando n é grande, a diferença entre n/3 e (n/3 + 5) é insignificante. Outra maneira é provar limites superior e inferior para a recorrência e então reduzir o alcance da incerteza. Comece com T(n) = (n) & T(n) = O(n2)  T(n) =  (n log n) UFES Berilhes B. Garcia

Sutilezas Quando a prova matemática não pode ser obtida por indução, tente ajustar sua adivinhação com um termo de ordem mais baixa. Por exemplo: Nós adivinhamos T(n)  O(n) para T(n) = 3T(n/3)+ 4, mas nós temos que T(n)  3c n/3 + 4 = c n + 4 Nova adicinhação é T(n)  c n - b, onde b  0 T(n)  3(c n/3 - b)+4 = c n - 3b + 4 = c n - b - (2b-4) Portanto, T(n)  c n - b, se 2b - 4  0 ou se b  2 UFES Berilhes B. Garcia

Mudança de Variáveis Utilize manipulação algébrica para transformar uma recorrência desconhecida em uma similar que você já tenha visto. Considere T(n) = 2T(n1/2) + lg n Chame m = lg n e nós temos T(2m) = 2T(2m/2) + m Ajust S(m) = T(2m) e nós temos S(m) = 2S(m/2) + m  S(m) = O(m lg m) Mudando de volta de S(m) para T(n), nós temos T(n) = T(2m) = S(m) = O(m lg m) = O(lg n lg lg n) UFES Berilhes B. Garcia

Evitando Armadilhas T(n)  2c n/2 + n Cuidado para não utilizar de forma inadequada. Por exemplo: Nós podemos erroneamente provar T(n) = O(n) adivinhando que T(n)  c n para T(n) = 2T(n/2) + n T(n)  2c n/2 + n  c n + n = O(n)  Errado! O erro é que nós não provamos que T(n)  c n UFES Berilhes B. Garcia

Método da Iteração Para expandir (iterar) a recorrência e expressa-lá como uma somatória de termos dependentes somente n e das condições iniciais. Técnicas para avaliar somatórias podem ser utilizadasd para fornecer os limites da solução. A chave é focalizar-se sobre 2 parâmetros o número de vezes que a recorrência necessita ser iterada para alcançar uma condição de fronteira A soma dos termos resultantes de cada nível do processo de UFES Berilhes B. Garcia

Um Exemplo Ressolver: T(n) = 3T(n/4) + n T(n) = n + 3T(n/4) = n + 3[n/4] + 9 [n/16] + 27T(n/64) T(n)  n + 3n/4 + 9 n/16 + 27n/64 + … + 3log4 n (1)  n  (3/4)i +  (nlog43) = 4n+ o(n) = O(n) UFES Berilhes B. Garcia

Árvores de Recursão É uma maneira conveniente de visualizar o que ocorre quando a recursão é iterada. Esta ajuda a organizar a estrutura algébrica necessária para resolver a recorrência. Para T(n) = 2T(n/2) + n2, nós temos UFES Berilhes B. Garcia

Árvores de Recursão T(n) = (n2) UFES Berilhes B. Garcia

Árvores de Recursão For T(n) = T(n/3) + T(2n/3) + n T(n) = O(n lg n) UFES Berilhes B. Garcia

Método Mestre Este fornece um método “livro de receita” para a resolução de recorrências da forma: T(n) = a T(n/b) + f(n) onde a  1 e b  1 são constantes e f(n) é uma função assintoticamente positiva A solução utilizando o método mestre depende do teorema mestre (a seguir). UFES Berilhes B. Garcia

O Teorema Mestre Assuma que a  1 e b > 1 são contantes, f(n) é função e T(n) está definido para inteiros positivos por meio da recorrência T(n) = a T(n/b) + f(n) sendo n/b interpretado como n/b ou como n/b. T(n) pode ser limitado assintoticamente como mostrado a seguir: 1. Se f(n)=O(nlogba-) para alguma constante  > 0, então T(n)= (nlogba). 2. Se f(n) = (nlogba), então T(n) = (nlogba lg n). 3. Se f(n) =  ( nlogba+ ) para alguma constante  > 0, e se a f(n/b)  c f(n) para alguma constante c < 1 e n suficientemente grande, então T(n)= (f(n)). UFES Berilhes B. Garcia

Teorema Mestre Simplicado Assuma que a  1 e b > 1 são constantes e T(n) é a recorrência T(n) = a T(n/b) + c nk definida para n  0. 1. Se a > bk, então T(n) = ( nlogba ). 2. Se a = bk, então T(n) = ( nk lg n ). 3. Se a < bk, então T(n) = ( nk ). UFES Berilhes B. Garcia

Exemplos T(n) = 16T(n/4) + n a = 16, b=4, f(n) = n, assim nlogba = nlog416 = (n2) Desde que f(n) = O(nlog416 -  ) onde  = 1  caso 1. Portanto, T(n) = (nlogba ) = (n2) T(n) = T(3n/7) + 1 a = 1, b=7/3, f(n) = 1, assim nlogba = nlog 7/3 1 = n0 = 1 Desde que f(n) = O(nlogba)= (1),  caso 2. Portanto, T(n) = (nlogba lg n) = (lg n) UFES Berilhes B. Garcia

Exemplos (Cont.) T(n) = 3T(n/4) + n lg n a = 3, b=4, f(n) = n lg n, nlogba = nlog43 = O(n0.793) Desde que f(n) = (nlog43 +  ) onde   0.2  caso 3. Portanto, T(n) = (f(n)) = (n lg n) T(n) = 2T(n/2) + n lg n a = 2, b=2, f(n) = n lg n, e nlogba = nlog22 = n f(n) é assintoticamente maior que nlogba, mas não polinomialmente maior. A razão lg n é assintoticamente menor que qualquer constante positiva n. Logo, o Teorema Mestre não se aplica. UFES Berilhes B. Garcia

Exercícios Utilize o Método Mestre para resolver as seguintes recorrências: T(n) = 4T(n/2) + n T(n) = 4T(n/2) + n2 T(n) = 4T(n/2) + n3 UFES Berilhes B. Garcia