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

Documentos relacionados
Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia. 9 de Novembro de 2017

CAPÍTULO 1 Operações Fundamentais com Números 1. CAPÍTULO 2 Operações Fundamentais com Expressões Algébricas 12

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

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

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

Divisão e conquista. Eficiência de divisão e conquista

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

Divisão e conquista. Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo

Introdução Paradigmas

Comparação com Divisão e Conquista

O termo Programação Dinâmica é um bocado infeliz.

Métodos iterativos para sistemas lineares.

Elementos de Análise Assintótica

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

ANÁLISE DE ALGORITMOS: PARTE 4

Solução de Recorrências

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Desafios de Programação

Técnicas de análise de algoritmos

Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02

BCC202 - Estrutura de Dados I

Resposta da pergunta 2: Θ(n 3 ). Resposta da pergunta 8: 1. 7 O(n). Sim. 22. n log n O(1). Não. 3. n + 7 O(n). Sim. 4. n + 7 O(1). Não.

PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2

Matemática Discreta - 06

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

Lucia Catabriga e Andréa Maria Pedrosa Valli

Tópicos Avançados em Algoritmos

Recursividade e relações de recorrência

Vestibular UnB: O que esperar da prova? PROFESSOR: Henrique de Faria

Análise e Complexidade de Algoritmos

Resumo Matemática Finita

Introdução a Algoritmos Parte 08

Análise de algoritmos

Projeto e Análise de Algoritmos

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

Aula prática 5. Funções Recursivas

Sistemas de Equações Lineares e Equações Vectoriais Aula 2 Álgebra Linear Pedro A. Santos

Relações de recorrência

Projeto e Análise de Algoritmos

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

ANÁLISE DE ALGORITMOS

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

Agenda do Dia Aula 14 (19/10/15) Sistemas Lineares: Introdução Classificação

EMENTA ESCOLAR III Trimestre Ano 2016

Complexidade de Algoritmos. Edson Prestes

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Projeto e Análise de Algoritmos. Prof. Ruy Luiz Milidiú

Andréa Maria Pedrosa Valli

MATRIZ DE REFERÊNCIA - SPAECE MATEMÁTICA 5 o ANO DO ENSINO FUNDAMENTAL TEMAS E SEUS DESCRITORES

Análise de Algoritmos Estrutura de Dados II

Aula 05: - Recursão (parte 1)

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

Algoritmos e Complexidade

Estruturas de Dados 2

U.C Matemática Finita. 6 de junho de Questões de escolha múltipla

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15

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

Cuidado! Use com responsabilidade.

TEORIA: 60 LABORATÓRIO: 0

Multiplicação de inteiros

TEMA I: Interagindo com os números e funções

P L A N O D E E N S I N O A N O D E ÁREA / DISCIPLINA: CIÊNCIAS DA NATUREZA / MÁTEMÁTICA

Luís Fernando Schultz Xavier da Silveira. 12 de maio de 2010

Ordenar ou identificar a localização de números racionais na reta numérica.

Métodos Numéricos. Turma CI-202-X. Josiney de Souza.

Introdução à Programação Aula 18 Método de eliminação de Gauss

NÚMEROS DE FIBONACCI E A MODELAGEM DE GENERALIZAÇÕES DA SEÇÃO ÁUREA

Cálculo Numérico BCC760

Metas/ Objetivos Conceitos/ Conteúdos Aulas Previstas

Metas/ Objetivos Conceitos/ Conteúdos Aulas Previstas

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Interpolação Polinomial. Ana Paula

4. Algoritmos de Busca em Vetores

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

Algoritmos e Estruturas de Dados LEE 2013/2014. popular devido à facilidade de implementação e eficiência

ÁLGEBRA LINEAR AULA 5 MÉTODOS ITERATIVOS

MAT 2110 : Cálculo para Química

EMENTA ESCOLAR III Trimestre Ano 2014

O TEOREMA DE CAYLEY-HAMILTON E AS MATRIZES INVERSAS

Metas/Objetivos/Domínios Conteúdos/Conceitos Número de Aulas

REVISÃO DE ÁLGEBRA. Apareceu historicamente em processos de contagem. Obs.: dependendo da conveniência, o zero pode pertencer aos naturais.

AULA 24. Algoritmos p.856/905

Exercícios: Recursão

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3

Programação de Conteúdos de Matemática SPE Ensino Médio REGULAR 2013

Ordenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I

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

Sistemas Lineares - Eliminação de Gauss

3.6 Erro de truncamento da interp. polinomial.

CCI-22 FORMALIZAÇÃO CCI-22 MODOS DE SE OBTER P N (X) Prof. Paulo André CCI - 22 MATEMÁTICA COMPUTACIONAL INTERPOLAÇÃO

Programação Acadêmica de 2011 Semestre 1

Aula 05: - Recursão (parte 1)

1º ano. Capítulo 2 - Itens: todos (2º ano) Modelos matemáticos relacionados com a função logarítmica

AES - Noções Fortes de Segurança - InfoSec. 4 de Outubro de 2016

Integração Numérica. Maria Luísa Bambozzi de Oliveira. 27 de Outubro, 2010 e 8 de Novembro, SME0300 Cálculo Numérico

Programação de Computadores

Transcrição:

Relações de Recorrência Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia 23 de Março de 2018

Aula de hoje Nesta aula veremos Conceitos de Relações de Recorrência Resolução de Recorrências Recorrências de divisão e conquista

O que são recorrências Def. uma recorrência é uma equação que recursivamente define uma sequência. Recorrências modelam custos em programas Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21,... F 0 = 0, F 1 = 1 e para N 2: F N = F N 1 + F N 2 Quicksort: 0, 2, 5, 8 + 2/3, 12 + 5/6, 17 + 2/5,... C 0 = 0, N > 1 C N = N + 1 + 0 k N 1 1 N (C k + C N k 1 )

Análise de algoritmos e resolução de recorrências: passos 1 Implementar algoritmo 2 Identificar quantidade de interesse (trocas, comparações...) 3 Instrumentalizar algoritmo e observar sequência 4 Propor relação de recorrência 5 Computar primeiros valores e comparar com observações 6 Resolver recorrência com uma função eficiente Técnicas de resolução de recorrências 7 Verificar empiricamente a função encontrada

Computar primeiros valores Usar programas recursivos: tempo exponencial 1 i n t f i b R e c ( i n t N) { 2 i f (N == 0 N == 1) r e t u r n N; 3 r e t u r n f i b R e c (N 1)+f i b R e c (N 1) ; 4 } Usar memorização: programação dinâmica força-bruta inteligente

Exemplo: memorização para resolver Fibonacci Programação Dinâmica Simplificada 1 i n t [ ] memo = i n t [ Nmax ] ; 2 i n t fibpd ( i n t N) { 3 i f (N < 2) r e t u r n memo [N ] ; 4 5 i f (memo [N] == 0) // a i n d a tem muita r e c u r s ão 6 memo [ N] = fibpd (N 1) + fibpd (N 2) ; 7 8 r e t u r n memo [N ] ; 9 }

Quicksort Quais são as quantidades de interesse? 1 v o i d q u i c k s o r t ( i n t [ ] a, i n t lo, i n t h i ) { 2 i f ( h i <= l o ) r e t u r n ; 3 4 i n t i = lo 1, j = h i ; 5 i n t t, v = a [ h i ] ; 6 7 w h i l e ( t r u e ) { 8 w h i l e ( a[++ i ] < v ) ; 9 w h i l e ( v < a[ j ] ) i f ( j == l o ) break ; 10 11 i f ( i >= j ) break ; 12 t = a [ i ] ; a [ i ] = a [ j ] ; a [ j ] = t ; 13 } 14 t = a [ i ] ; a [ i ] = a [ h i ] ; a [ h i ] = t ; 15 16 q u i c k s o r t ( a, lo, i 1) ; 17 q u i c k s o r t ( a, i +1, h i ) ; 18 }

Resolver recorrências Quicksort (comparações médias): NC N = (N + 1)C N 1 + 2N Para obter valores para C N : 1 c [ 0 ] = 0 ; 2 f o r (N = 1 ; N <= Nmax ; N++) { 3 c [N] = (N+1) c [N 1]/N+2; 4 System. out. p r i n t l n ( c [N] ) ; 5 }

Técnicas de resolução de recorrências: Expansão Analisar recorrência usando expansão para uma soma Objetivo: obter fórmula mais simples para sequências em função de N Exemplo 1 Com a 0 = 0 Expandir equação para n 1: a n = a n 1 + n a n = a n 2 + (n 1) + n Iterar: a n = a n 3 + (n 2) + (n 1) + n Iterar mais e obter soma: a n = k Avaliar soma: a n = 1 k n (n + 1)n 2

Técnicas de resolução: somas elementares Séries geométricas: Séries aritméticas: Binomial superior: Teorema binomial: Números harmônicos: Convolução de Vandermonde: x k = 1 xn 1 x 0 k<n ( ) n(n 1) n k = = 2 2 ( ) ( ) k n + 1 = m m + 1 0 k<n 0 k n 0 k n 0 k n ( n k ) x k y n k = (x + y) n 1 k = H n 1 k n ( )( ) ( ) n m n + m = k t k t

Expansão de recorrências Exemplo 2 Com a 0 = 0 Dividir por 2 n, Expandir para uma soma: Resolução: Verificar: a n = 2a n 1 + 2 n a n 2 n = a n 1 2 n 1 + 1 a n 2 n = 1 = n 1 k n a n = n2 n n2 n = 2(n 1)2 n 1 + 2 n

Técnicas de resolução: fator de soma Qual é o fator da soma para a n = x n a n 1 +...? (AoA3ed Teorema 2.1) O fator é x n x n 1 x n 2... x 1. Resolver a n dividindo a recorrência por esse fator. Exemplo 3 Com n > 0 e a 0 = 0 a n = n + 1 n a n 1 + 2 Fator x n = n + 1 n : n + 1 n n 1 n n 1 n 2... 3 2 2 1 = n + 1 a n Dividir por n + 1: n + 1 = a n 1 + 2 n n + 1 Expansão: a n n + 1 = a 0 + 2 1 k n 1 k + 1 = 2(H n+1 1)

Verificar solução de Exemplo 3 Verificar valores iniciais - fazer algumas contas a n = (1 + 1 n )a n 1 + 3 para n > 0 com a 0 = 0 a 1 = 2a 0 + 2 = 2 a 2 = 3 2 a1 + 2 = 5 a 3 = 4 a2 + 2 = 26/3 3 Prova que a n = 2(n + 1)(H n+1 1) (indução): a n = n + 1 n a n 1 {}}{ 2n(H n 1) +2 = 2(n + 1)(H n 1) + 2 = 2(n + 1)(H n + 1/(n + 1) 1) = 2 (n + 1)(H n+1 1) }{{} a n

Exercício Resolver a recorrência: na n = (n 2)a n 1 + 2 para n > 1 com a 1 = 1 Forma difícil: Usar fator de soma: n 2 n n 3 n 4 n 5 n 1 n 2 Forma fácil: 2a 2 = 2 então a 2 = 1, portanto a n = 1 n 3... = 1 n(n 1)

Tipos de recorrências Ordem 1 Linear: a n = na n 1 1 Não-linear: Ordem 2 Não-linear: a n = 0.5(a n 1 + 2/a n 1 ) a n = a n 1 a n 2 + a n 2 Coef. variáveis: a n = na n 1 + (n 1)a n 2 + 1 Ordem t a n = f (a n 1, a n 2,..., a n t ) Histórico completo a n = n + a n 1 + a n 2... + a 1 Divisão e conquista a n = a n/2 + a n/2 + n

Recorrências lineares de alta ordem (AoA Teorema 2.2) Recorrências lineares com coeficientes constantes Seja a n = x 1 a n 1 + x 2 a n 2 +... x t a n t para n t Soluções são combinações lineares de n j β n onde β são raízes de q(z) = z t x 1 z t 1 x 2 z t 2 x t 0 j < v se raiz β tem multiplicidade v

Recorrências lineares de alta ordem: exemplo Exemplo 4 Com n 2 e a 0 = 0, a 1 = 1 a n = 5a n 1 6a n 2 Fazer a n = x n x n = 5x n 1 6x n 2 Dividir por x n 2 x 2 5x + 6 = 0 Fatorar: (x 2)(x 3) = 0 Forma da solução é: a n = c 0 3 n + c 1 2 n Usar a 0 = 0 a 0 = 0 = c 0 + c 1 Usar a 1 = 1 a 1 = 1 = 3c 0 + 2c 1 Coeficientes: c 0 = 1 e c 1 = 1 Solução: a n = 3 n 2 n

Recorrências lineares de alta ordem: exemplo Sequência de Fibonacci a n = a n 1 + a n 2 para n 2 com a 0 = 0 e a 1 = 1 Definir que a n = x n x n = x n 1 + x n 2 Dividir por x n 2 x 2 x 1 = 0 Resolver equação quadrática (x φ)(x φ ) = 0 φ = 1+ 5 2 e φ = 1 5 2 Forma da solução deve ser: a n = c 0 φ n + c 1 φ n Usar condições iniciais para encontrar coeficientes a 0 = 0 = c 0 + c 1 e a 1 = 1 = φc 0 + φ c 1 Solução: a n = φn 5 φ n 5

Exercícios Resolver a n = 2a n 1 a n 2 para n 2, a 0 = 1, a 1 = 2 Resolver a n = 2a n 1 a n 2 para n 2, a 0 = 1, a 1 = 1 Em quais condições iniciais a seguinte recorrência é constante, exponencial ou flutuante? a n = 2a n 1 + a n 2 2a n 3 para n > 3 Quais valores de a 0 e a 1 para a n = 5a n 1 6a n 2, n > 1 temos que a n = 2 n? Existem condições iniciais tal que a solução é a n = 2 n 1?

Recorrências de divisão e conquista Análise de divisão e conquista Programas recursivos são mapeados diretamente para recorrências. Exemplos clássicos Busca binária Mergesort Multiplicação de Karatsuba Multiplicação de matrizes de Strassen