ANÁLISE DE ALGORITMOS: PARTE 4

Documentos relacionados
ANÁLISE DE ALGORITMOS: PARTE 3

05 Análise de Algoritmos (parte 4) SCC201/501 - Introdução à Ciência de Computação II

Técnicas de análise de algoritmos

Solução de Recorrências

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Comportamento assintótico

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

Técnicas de projeto de algoritmos: Indução

Análise de algoritmos

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão

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

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade

Equações Exponenciais e Logarítmicas

BCC202 - Estrutura de Dados I

Análise de Algoritmos Estrutura de Dados II

Equações exponenciais

COMPLEXIDADE DE ALGORITMOS

Complexidade de Algoritmos

Problemas Singulares e Métodos Assimptóticos Desenvolvimento da solução de uma EDO em série de potências na vizinhança de uma singularidade regular

Algoritmos de Ordenação

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Quantidade de memória necessária

Dada uma função contínua a(t) definida num intervalo I = [0, T ], considere o problema x = a(t) x, x(0) = x 0. (1) Solução do Problema. 0 a(s) ds.

Estruturas de Dados Algoritmos

01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II

Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Complexidade de Algoritmos

Análise de Algoritmos Parte 4

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 4 a Lista de Exercícios Gabarito de algumas questões.

Análise de algoritmos

Teoria dos Grafos Aula 7

Gabarito da G3 de Equações Diferenciais

Técnicas de Programação III Análise de Algoritmos (Continuação)

7. Introdução à Complexidade de Algoritmos

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira

Análise de Algoritmos

Estruturas de Dados 2

Para temos : que é a ideia de um polinômio. A série pode convergir para alguns valores de mas pode divergir para outros valores de.

Aula 06: Análise matemática de algoritmos recursivos

7. Introdução à Complexidade de Algoritmos

Aula 1. Teoria da Computação III

Elementos de Análise Assintótica

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia. 23 de Março de 2018

2. Complexidade de Algoritmos

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS

Notas de Aula Disciplina Matemática Tópico 09 Licenciatura em Matemática Osasco -2010

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira

Análise de algoritmos. Parte I

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

5. EQUAÇÕES E INEQUAÇÕES EXPONENCIAIS E LOGARÍTMICAS

SCC Capítulo 3 Análise de Algoritmos - Parte 2

Fórmula de Taylor. Cálculo II Cálculo II Fórmula de Taylor 1 / 15

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Instituto Nacional de Matemática Pura e Aplicada Atualizado em 16/06/2011. Resumo Geral dos Vídeos do PAPMEM por ASSUNTO

Instituto Nacional de Matemática Pura e Aplicada Atualizado em 16/06/2011. Resumo Geral dos Vídeos do PAPMEM por PROFESSOR

Funções Elementares. Sadao Massago. Maio de Alguns conceitos e notações usados neste texto. Soma das funções pares é uma função par.

Projeto e Análise de Algoritmos

Aula 2: Funções. Margarete Oliveira Domingues PGMET/INPE. Aula 2 p.1/57

Medida do Tempo de Execução de um Programa

DIVISÃO DE POLINÔMIOS

Equações Exponenciais e Logarítmicas. Equações Exponenciais e Logarítmicas. Exemplos: Exemplos: a x = b x= log a b. 1) Resolva as equações: ) 5 = 3

Lista de Exercícios 6 Funções

Lista de Exercícios 6: Soluções Funções

Monitor: Rodrigo Soares de Abreu. 4º Lista de Exercícios

Noções de complexidade de algoritmos

Aula prática 5. Funções Recursivas

MATEMÁTICA I LIMITE. Profa. Dra. Amanda L. P. M. Perticarrari

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

LOGARITMOS: se e somente se. Obs.: Temos que é a base do logaritmo, é o logaritmando e o logaritmo.

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

SUMÁRIO. Unidade 1 Matemática Básica

Análise de algoritmos

Análise e Complexidade de Algoritmos

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Análise de Algoritmos

PROVAS Ciência da Computação. 2 a Prova: 13/02/2014 (Quinta) Reavaliação: 20/02/2014 (Quinta)

Projeto e Análise de Algoritmos

Sequências e Séries Infinitas. Copyright Cengage Learning. Todos os direitos reservados.

Análise de algoritmos. Parte I

Projeto e Análise de Algoritmos

Análise e Complexidade de Algoritmos

Análise de complexidade

Mat.Semana. PC Sampaio Alex Amaral Rafael Jesus. (Roberta Teixeira)

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Análise de algoritmos Parte I

Função Logarítmica. Formação Continuada em Matemática. Matemática -2º ano do Ensino Médio Plano de trabalho - 1º Bimestre/2014

Construção de Algoritmos II Aula 06

Melhores momentos AULA 3. Algoritmos p.148/188

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Funções I. Funções Lineares Funções Quadráticas

Informática I. Aula 14. Aula 14-10/10/2007 1

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Módulo de Números Naturais. Divisibilidade e Teorema da Divisão Euclideana. 8 ano E.F.

Transcrição:

ANÁLISE DE ALGORITMOS: PARTE 4 Prof. André Backes 2 Função recursiva Função que chama a si mesma durante a sua execução Exemplo: fatorial de um número N. Para N = 4 temos 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1 * 0! 0! = 1 1

3 Função recursiva Matematicamente, o fatorial é definido como N! = N * (N-1)! 0! = 1 Implementação 4 Recorrência ou Relação de Recorrência Expressão que descreve uma função em termos de entradas menores da função Exemplo: definição de um função recursiva Muitos algoritmos se baseiam em recorrência Ferramenta importante para a solução de problemas combinatórios Relação de recorrência do fatorial T(n) = T(n-1) + n 2

5 Complexidade da recorrência Uma recursão usualmente não utiliza estruturas de repetição, apenas comandos condicionais, atribuições etc Podemos erroneamente imaginar que essa funções possuem complexidade O(1) 6 Complexidade da recorrência Saber a complexidade da recursão envolve resolver a sua relação de recorrência T(n) = T(n-1) + n 3

7 Complexidade da recorrência Temos que encontrar uma fórmula fechada que nos dê o valor da função T(n) = T(n-1) + n em termos de seu parâmetro n Geralmente obtido como uma combinação de polinômios, quocientes de polinômios, logaritmos, exponenciais etc. 8 Considere a seguinte relação de recorrência T(n) = T(n-1) + 2n + 3 Para n 2, 3, 4,, existem inúmeras funções T que satisfazem a recorrência Depende do caso base, T(1) Exemplos T(1) = 1 n 1 2 3 4 5 T(n) 1 8 17 28 41 T(1) = 5 n 1 2 3 4 5 T(n) 5 12 21 32 45 4

9 Problema Para cada valor i e o intervalo n 2, 3, 4, existe uma (e apenas uma) função T que tem caso base T(1) = i e satisfaz a recorrência T(n) = T(n-1) + 2n + 3 n 1 2 3 4 5 T(n) 1 8 17 28 41 n 1 2 3 4 5 T(n) 5 12 21 32 45 10 Solução Precisamos encontrar uma fórmula fechada para a recorrência Podemos expandir a relação de recorrência T(n)=T(n- 1) + 2n + 3 até que se possa detectar um comportamento no seu caso geral 5

11 Para entender essa técnica de expansão, considere a seguinte recorrência T(n) = T(n-1) + 3 Essa relação de recorrência representa um algoritmo que possui 3 operações mais uma chamada recursiva 12 Expandindo a recorrência T(n) = T(n-1) + 3 Se aplicarmos o termo T(n-1) sobre a relação T(n). Com isso, obtemos T(n-1) = T(n-2) + 3 Se aplicarmos o termo T(n-2) sobre a relação T(n), teremos T(n-2) = T(n-3) + 3 6

13 Expandindo a recorrência T(n) = T(n-1) + 3 Se continuarmos esse processo, teremos a seguinte expansão T(n) = T(n-1) + 3 T(n) = (T(n-2) + 3) + 3 T(n) = ((T(n-3) + 3) + 3) + 3 Perceba que a cada passo um valor 3 é somado a expansão e o valor de n é diminuído em uma unidade 14 Expandindo a recorrência T(n) = T(n-1) + 3 Podemos resumir essa expansão para usando a seguinte equação T(n) = T(n-k) + 3k Resta saber quando esse processo de expansão termina Isso ocorre no caso base 7

15 Expandindo a recorrência T(n) = T(n-1) + 3 O caso base ocorre quando n-k = 1 ou seja, k=n-1 Substituindo, temos T(n) = T(n-k) + 3k T(n) = T(1) + 3(n-1) T(n) = T(1) + 3n - 3 16 Expandindo a recorrência T(n) = T(n-1) + 3 Obtemos T(n) = T(1) + 3n - 3 T(1) é o caso base: recursão termina Logo, seu custo é constante: O(1) Complexidade da recorrência T(n) = 3n - 3 + O(1) Ou seja, linear: O(n) 8

17 Outro exemplo: considere a seguinte recorrência T(n) = T(n/2) + 5 Essa relação de recorrência representa um algoritmo que possui 5 operações mais uma chamada recursiva que divide os dados sempre pela metade (n/2) 18 Neste caso, a recorrência existe apenas para valores de n que representem uma potência de 2 n {2 1, 2 2, 2 3, } Considerando n = 2 k, podemos reescrever a recorrência como T(2 k ) = T(2 k-1 ) + 5 9

19 Expandindo a recorrência T(2 k ) = T(2 k-1 ) + 5 Se aplicarmos o termo T(2 k-1 ) sobre a relação T(2 k ). Com isso, obtemos T(2 k-1 ) = T(2 k-2 ) + 5 Se aplicarmos o termo T(2 k-2 ) sobre a relação T(2 k ), teremos T(2 k-2 ) = T(2 k-3 ) + 5 20 Expandindo a recorrência T(2 k ) = T(2 k-1 ) + 5 Se continuarmos esse processo, teremos a seguinte expansão T(2 k ) = T(2 k-1 ) + 5 T(2 k ) = (T(2 k-2 ) + 5) + 5 T(2 k ) = ((T(2 k-3 ) + 5) + 5) + 5 Perceba que a cada passo um valor 5 é somado a expansão e o valor de k é diminuído em uma unidade 10

21 Expandindo a recorrência T(2 k ) = T(2 k-1 ) + 5 Ao final da expansão, teremos T(2 k ) = T(2 k-k ) + 5k T(2 k ) = T(2 0 ) + 5k T(2 k ) = T(1) + 5k Podemos resumir essa expansão usando a seguinte equação, a qual já considera o seu caso base T(2 k ) = T(1) + 5k 22 Expandindo a recorrência T(2 k ) = T(2 k-1 ) + 5 Temos que substituir o custo do caso base, O(1) Complexidade da recorrência T(2 k ) = O(1) + 5k Devemos lembrar que substituímos n por 2 k no início da expansão, de modo que n = 2 k 11

23 Expandindo a recorrência T(2 k ) = T(2 k-1 ) + 5 Aplicando o logaritmo em n = 2 k, temos que k=log 2 n Substituindo, temos T(2 k ) = O(1) + 5k T(n) = O(1) + 5 log 2 n Complexidade da recorrência T(n) = O(1) + 5 log 2 n Ou seja, logarítmica: O(log 2 n) Material Complementar 24 Vídeo Aulas Aula 99: Análise de Algoritmos Aula 100: Análise de Algoritmos Contando Instruções Aula 101: Análise de Algoritmos Comportamento Assintótico Aula 102: Análise de Algoritmos Notação Grande-O Aula 103: Análise de Algoritmos Tipos de Análise Assintótica Aula 104: Análise de Algoritmos Classes de Problemas Aula 122 Relações de Recorrência 12