RECURSIVIDADE Análise de algoritmos UNISUL Ciência da Computação

Slides:



Advertisements
Apresentações semelhantes
Organização e Gerência de Arquivos - OGA
Advertisements

Complexidade de Algoritmos Recursivos
Roberta Geneci Neves Weber Rafael Coninck Teigão
Marco Antonio Montebello Júnior
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.
TEORIA DE CONTROLE II (CEL039) Apresentação do Curso
05/08/2011 Professor Leomir J. Borba- –
Sílabo: Introdução à Ciência da Computação (SCC0121)
Profa. M.Sc. Yáskara Menescal
Informática Aplicada Prof. Araken Medeiros
Exemplos de recursividade no mundo
Engenharia de Computação.
Organização e Recuperação da Informação (ORI)
Recursividade Prof. Alex F. V. Machado
Lema do Bombeamento – Gramáticas Livres do Contexto
Matemática para Ciência da Computação
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.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Introdução a Computação
Dornélio Mori Ney Bermudes
Estruturas de Dados e Complexidade de Algoritmos
Recorrências.
Tópico Avançados em Sistemas de Computação (Pesquisa Operacional)
CAP-223 N. L. Vijaykumar (Vijay) Tel:
RESOLUÇÃO PROPOSICIONAL
Divisão e Conquista Análise de algoritmos UNISUL Ciência da Computação
Programação Dinámica Análise de algoritmos UNISUL
Apresentação da disciplina
Algoritmos de Ordenação 4
Fundamentos de Matemática III
ICC2 Aula 7 Fábio Nakano.
Introdução à Programação
Algoritmos em Grafos Apresentação da Disciplina Prof. André Renato 1º Semestre / 2012.
TRABALHO MATEMÁTICA DISCRETA
Cálculo Diferencial e Integral 1 – CDI 1
Matemática Discreta I BCC101
Aula 01 BCC202 - Estrutura de Dados I Túlio Toffolo
Salas de Matemática.
Projetos Interdisciplinares de Ensino II
PENSAMENTO MATEMÁTICO: DESENVOLVIMENTO DE CONCEITOS E APLICAÇÕES I
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Aula 13. Lembra... F(n)=F(n/2)+3 com F(1)=5 Obrigamos n a ser potência de 2, geralmente isso não agrada muito, pois os valores de n ficam muito restritos.
UNIDADE 6 - complemento Funções recursivas
Ordenação por inserção
ORDENAÇÃO POR CONTAGEM
Cálculo Diferencial e Integral 1 – CDI 1
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algoritmos e Estruturas de Dados Apresentação do Curso Setembro/2005.
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Mergesort Katia Guimarães.
Indução Matemática Recursão
©Prof. Lineu MialaretAula /3Cálculo Numérico Cálculo Numérico – CN Prof. Lineu Mialaret Aula 20: Zeros de Funções Instituto Federal de Educação,
Pesquisa Sequencial e Binária
Algoritmos e Estruturas de Dados I – Recursão
UNIVERSIDADE SEVERINO SOMBRA
Matemática Discreta I BCC101 Introdução. 2 Bibliografia, Slides, Exercícios etc Bibliografia: Richard Hammack: Book of Proof Velemann: How to Prove it.
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 07) Prof. Alessandro Bernardo.
Implementação e Experimentação Algorítmica
R ECURSIVIDADE LPII Professora Lucélia. M ÉTODO R ECURSIVO Um método é considerado recursivo quando possui uma chamada para si próprio. Segundo Deitel,
INE Fundamentos de Matemática Discreta para a Computação
Professor Luiz José Hoffmann Filho
Universidade Federal do Amazonas Instituto de Ciências Exatas e Tecnologia Prof. Lady Daiana de Oliveira Pinto Acadêmicos: Andrei Rodrigues Luciano Cavalcante.
MÉTODOS DE ENSINO EM CIÊNCIA BIOLOGICA.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Metodologia do Ensino de Física PONTOS DE PARTIDA Profa. Dra. Maria Lucia Vital dos Santos Abib Faculdade de Educação-USP Mar/2014.
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

RECURSIVIDADE Análise de algoritmos UNISUL Ciência da Computação Prof. Maria Inés Castiñeira, Dra.

Recursividade um procedimento recursivo é aquele que contém uma ou mais chamadas a si mesmo a todo procedimento recursivo corresponde um não recursivo os programas recursivos são mais concisos aparente relação direta com a prova por indução matemática 232

Recursividade Cálculo de fatorial x! = se x <=0 1 senão x * (x-1)! Implementação não recursiva int fatorial (int N)‏ { int result = 1; for (i=1; i<=N; i++)‏ result = result * i; return (result); } 235

Recursividade int fatorial (int N)‏ { if (N<= 1)‏ return(1); else Implementação recursiva int fatorial (int N)‏ { if (N<= 1)‏ return(1); else return( N * fatorial(N-1)); } 236

Recursividade X= fatorial (4)‏ return( 4* fatorial(3) )‏ 237

Análise de Recursividade relação de recorrência – a função é definida em termos dela própria, recursivamente substituição repetida int fatorial (int N)‏ { if (N<= 1)‏ return(1); else return( N * fatorial(N-1)); }

Análise de Recursividade T(n)‏ tempo de processar o algoritmo para entrada n em função do número de passos ou operações dominantes Fatorial T(n) = 1, se n = 0 = T(n-1) + 1, se n > 0 mas quanto é T(n-1) ?

T(n) - Fatorial = (T(n-1)) + 1 = (T(n-2) + 1) + 1 = T(n-2) + 2 ..... forma geral, T(n) = T(n-k) + k, 1  k  n fazendo n = k, reduzimos a T(n) = n

número de chamadas  complexidade de uma chamada A notação  Para procedimentos recursivos pode-se aplicar a seguinte técnica determina-se o número total de chamadas ao procedimento recursivo calcula-se a complexidade de execução de uma única chamada complexidade número de chamadas  complexidade de uma chamada 273

T(n) - Fatorial = (T(n-1)) + 1 = (T(n-2) + 1) + 1 = T(n-2) + 2 ..... forma geral, T(n) = T(n-k) + k, 1  k  n fazendo n = k, reduzimos a T(n) = n  Fatorial = O(n) 10 10

Relação de recorrência Como proceder para derivar uma relação de recorrência para a análise do tempo de execução de um algoritmo: • Determinar qual o tamanho n do problema. • Verificar que valor de n é usado como base da recursão. Em geral é um valor único (n=1, por exemplo), mas pode ser valores múltiplos. Vamos considerar esse valor como n0. • Determinar T(n0). Pode-se usar uma constante c, mas, em muitos, casos um número específico é necessário 11 273 11

Relação de recorrência • T(n) é definido como uma soma de várias ocorrências de T(m) (chamadas recursivas), mais a soma de outras instruções efetuadas. Em geral, as chamadas recursivas estão relacionadas com subproblemas do mesmo tamanho f(n), definindo um termo a.T(f(n)) na relação de recorrência. • A relação de recorrência é definida por: – T(n) = c, se n = n0 – T(n) = a.T(f(n)) + g(n), caso contrário. 12 273 12

Derivando relação de recorrência MergeSort(A, n) if n ≤ 1 return A return merge(MergeSort(A1, n/2), MergeSort(A2, n/2)) Relação de Recorrência do MergeSort T(1) = c T(n) = 2.T(n/2) + d.n 13 273 13

Resolvendo relação de recorrência • Resolver uma relação de recorrência nem sempre é fácil. • Resolvendo uma relação de recorrência, determina-se o tempo de execução do algoritmo recursivo correspondente. • Relação de recorrência: T(n) = T(n1) + T(n2) +...+ T(na) + f(n) • É mais fácil quando temos a subproblemas de mesmo tamanho que é uma fração de n (por exemplo, n/b): – T(n) = a.T(n/b) + f(n) • Como resolver: – Método do desdobramento – Método master 14 273 14

Resolvendo a relação de recorrência: Desdobramento Método do desdobramento Consiste em: – Usar (algumas poucas) substituições repetidamente até encontrar um padrão. – Escrever uma fórmula em termos de n e o número de substituições i. – Escolher i de tal forma que todas as referências a T() sejam referências ao caso base. – Resolver a fórmula. 15 273 15

Resolvendo a relação de recorrência: Desdobramento Exemplo: divisão da pizza 16 273 16

Divisão da pizza 17 273 17

Divisão da pizza Corte – Fatia 1 – 2 2 – 4 3 – 7 4 – 11 5 – 16 6 – 22 7 – 29 ....... O n-ésimo corte cria n novos pedaços. Logo o número total de pedaços obtidos com n cortes é chamado P(n): P(1) = 2 P(n) = P(n-1) + n, para n>=2 18 273 18

Divisão da pizza • Solução para o problema da pizza: – T(1) = 2 – T(n) = T(n – 1) + n , para n≥2 • Desdobrando a relação de recorrência: T(n) = T(n-1) + n T(n) = T(n-2) + (n-1) + n T(n) = T(n-3) + (n-2) + (n-1) + n ... T(n) = T(n-i) + (n-i+1) + ... + (n-1) + n 19 273 19

Divisão da pizza – T(1) = 2 – T(n) = T(n – 1) + n , para n≥2 T(n) = T(n-i) + (n-i+1) + ... + (n-1) + n • Caso base (T(1)) alcançado quando n-i=1, logo i=n-1 • T(n) = 2 + 2 + 3 + ... + (n – 1) + n • T(n) = 1+1 + 2 + 3 + ... + (n – 1) + n • T(n) = 1+ Somatória (em i de1até n) • T(n) = 1 + n.(n+1)/2 • Logo, T(n) = O(n^2) 20 273 20

Resolvendo relação de recorrência • Resolvendo uma relação de recorrência, determina-se o tempo de execução do algoritmo recursivo correspondente. • Como resolver: 1- Método do desdobramento (pizza) 2- Método master 21 273 21

Método MASTER: relação de recorrência •Teorema que resolve quase todas as recorrências. • T(n) da forma a.T(n/b) + f(n), a,b > 1 • Casos: 1. Se f(n) ∈ O(n^log ba - ε), para algum ε > 0, temos que: • T(n) ∈ Θ(n^log ba ). 2. Se f(n) ∈ O(n^log b a), temos que: • T(n) ∈ Θ(n^log b a. log n). 3. Se f(n) ∈ O(n^log b a + ε), para algum ε > 0 e se a.f(n/b)≤c.f(n) para algum c > 0 e n suficientemente grande, temos que: • T(n) ∈ Θ(f(n)). 22 273 22

Exemplo: mergesort MergeSort(A, n) if n ≤ 1 return A return merge(MergeSort(A1, n/2), MergeSort(A2, n/2)) Relação de Recorrência do MergeSort T(1) = c T(n) = 2.T(n/2) + d.n 23 273 23

Método MASTER: exemplo mergesort • T(n) da forma a.T(n/b) + f(n), a,b > 1 • MergeSort: – T(n) = 2.T(n/2) + n – a = b = 2 – f(n) = n • log b a = 1. Cai no caso 2. • Logo, T(n) = Θ(n.log n) 24 273 24

Método MASTER: exemplo 2 • T(n) da forma a.T(n/b) + f(n), a,b > 1 • Problema com Relação: T(n) = 9.T(n/3) + n – a = 9, b = 3 – f(n) = n • log b a = 2. Se ε = 1, Cai no caso 1. • Logo, T(n) = Θ(n^2). 25 273 25

Bibliografia Cormen, Leiserson e Rivest, ALGORITMOS: teoria e prática. Rio de Janeiro: Campus, 2002. FIGUEREDO, Jorge. Material didático de Técnicas e análise de algoritmos. UFCG. Disponível em www.dsc.ufcg.edu.br/~abrantes/