30pt algoritmos e estruturas de dados i noções básicas de...

71
Breve revis˜ ao de ponteiros e estruturas dinˆ amicas Algoritmos e Estruturas de Dados I No¸ oes B´ asicas de Complexidade de Algoritmos Mirtha Lina Fern´ andez Venero Sala 529-2, Bloco A [email protected] http://professor.ufabc.edu.br/ ~ mirtha.lina/aedi.html 6 de mar¸ co de 2019

Upload: others

Post on 11-Jul-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Algoritmos e Estruturas de Dados I

Nocoes Basicas de Complexidade deAlgoritmos

Mirtha Lina Fernandez VeneroSala 529-2, Bloco [email protected]

http://professor.ufabc.edu.br/~mirtha.lina/aedi.html

6 de marco de 2019

Page 2: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Agenda

Introducao

Analise Assintotica e Notacoes O,Ω,Θ

Complexidade de Algoritmos nao Recursivos

Complexidade de Algoritmos Recursivos

Variantes Simples do Teorema Mestre

Consideracoes finais

Referencias Bibliograficas

Page 3: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Aulas Anteriores: Vetores, Listas, Pilhas, Filas?

I Dado um problema, como escolher a estrutura de dadosapropriada?

I Custo? Dos recursos que serao usados pelo algoritmo queimplementa a operacao

• numero de linhas de codigo, dificuldade de implementacao (?):depende da linguagem e o programador

• tempo de execucao e quantidade de memoria interna/externa:depende do computador

Page 4: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Aulas Anteriores: Vetores, Listas, Pilhas, Filas?

I Dado um problema, como escolher a estrutura de dadosapropriada? Depende das operacoes a serem realizadas e ocusto delas

I Custo? Dos recursos que serao usados pelo algoritmo queimplementa a operacao

• numero de linhas de codigo, dificuldade de implementacao (?):depende da linguagem e o programador

• tempo de execucao e quantidade de memoria interna/externa:depende do computador

Page 5: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Aulas Anteriores: Vetores, Listas, Pilhas, Filas?

I Dado um problema, como escolher a estrutura de dadosapropriada? Depende das operacoes a serem realizadas e ocusto delas

I Custo? Dos recursos que serao usados pelo algoritmo queimplementa a operacao

• numero de linhas de codigo, dificuldade de implementacao (?):depende da linguagem e o programador

• tempo de execucao e quantidade de memoria interna/externa:depende do computador

Page 6: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Aulas Anteriores: Vetores, Listas, Pilhas, Filas?

I Dado um problema, como escolher a estrutura de dadosapropriada? Depende das operacoes a serem realizadas e ocusto delas

I Custo? Dos recursos que serao usados pelo algoritmo queimplementa a operacao

• numero de linhas de codigo, dificuldade de implementacao (?):depende da linguagem e o programador

• tempo de execucao e quantidade de memoria interna/externa:depende do computador

Como medir o custo ou complexidade de tempo e espacodum algoritmo independentemente do hardware, da linguagemde programacao, compilador, SO, estilo de codificacao, etc?

Page 7: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Objetivos da Analise da Complexidade de Algoritmos

I ajudar a determinar qual algoritmo e mais eficiente pararesolver um problema

I medir como o tempo ou espaco aumenta com relacao aotamanho da entrada

Page 8: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Objetivos da Analise da Complexidade de Algoritmos

I ajudar a determinar qual algoritmo e mais eficiente pararesolver um problema

I medir como o tempo ou espaco aumenta com relacao aotamanho da entrada

Tamanho da entrada: numero de elementos de dados que saorelevantes na entrada do algoritmo. Varia dependendo do problema

I Numero de elementos dum conjunto/sequencia

I Dimensoes duma matriz

I quantidade de bits na representacao dum numero

I numero de vertices e/ou arestas dum grafo

Page 9: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Analise da Complexidade de Algoritmos∗

I Analise de caso pior: considera as entradas para a qual oalgoritmo tem o maior custo

I Analise de caso melhor: considera as entradas para as quaiso algoritmo tem o menor custo

I Analise de caso medio: calcula a media do custo sobretodas entradas, assumindo uma distribuicao

∗ Sera estudado em profundidade na disciplina Analise de Algoritmos

Page 10: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Introducao

Analise da Complexidade de Algoritmos∗

I Analise de caso pior: considera as entradas para a qual oalgoritmo tem o maior custo

I Analise de caso melhor: considera as entradas para as quaiso algoritmo tem o menor custo

I Analise de caso medio: calcula a media do custo sobretodas entradas, assumindo uma distribuicao

Importante

1. O custo exato do algoritmo e irrelevante. O importante eobter uma boa aproximacao ou limite (tigh bound)

2. Entradas pequenas sao irrelevantes. O importante e ocomportamento do algoritmo quando o tamanho da entrada egrande (asymptotic complexity)

∗ Sera estudado em profundidade na disciplina Analise de Algoritmos

Page 11: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Agenda

Introducao

Analise Assintotica e Notacoes O,Ω,Θ

Complexidade de Algoritmos nao Recursivos

Complexidade de Algoritmos Recursivos

Variantes Simples do Teorema Mestre

Consideracoes finais

Referencias Bibliograficas

Page 12: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Analise Assintotica de Algoritmos

I Assume um modelo abstrato de computador com um conjuntobasico de operacoes e seus custos

I O custo de tempo e uma funcao T (n) onde n representa otamano da entrada.

Page 13: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Analise Assintotica de Algoritmos

I Assume um modelo abstrato de computador com um conjuntobasico de operacoes e seus custos

I O custo de tempo e uma funcao T (n) onde n representa otamano da entrada. Exemplo: Insertion-Sort

Ver Cormen cap 2.

Page 14: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Analise Assintotica de Algoritmos

I Assume um modelo abstrato de computador com um conjuntobasico de operacoes e seus custos

I O custo de tempo e uma funcao T (n) onde n representa otamano da entrada. Exemplo: Insertion-Sort, n = A.length

Ver Cormen cap 2.

Page 15: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Analise Assintotica de Algoritmos

I Assume um modelo abstrato de computador com um conjuntobasico de operacoes e seus custos

I O custo de tempo e uma funcao T (n) onde n representa otamano da entrada. Exemplo: Insertion-Sort, n = A.length

Page 16: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Analise Assintotica de Algoritmos

I Caso melhor: A ja ordenado ⇒ ∀j = 2 . . . n, tj = 1

Page 17: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Analise Assintotica de Algoritmos

I Caso pior: A em ordem decrescente ⇒ ∀j = 2 . . . n, tj = j

Page 18: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Notacoes assintoticas ou de Bachmann-Landau (O)

Permitem descrever o comportamento assintotico duma funcaoquando o argumento tende a infinito.

I Notacao O: expressa um limite superior para ocomportamento assintotico de uma funcao, de formaaproximada

O(g(n)) = f(n) | ∃c > 0, n0,∀n > n0, f(n) ≤ c ∗ g(n)

Informalmente, f(n) ∈ O(g(n)) (se escreve f(x) = O(g(x))),significa que f(n) nao cresce mais rapidamente que g(n), paravalores de n suficientemente grandes (como se f(x) ≤ g(x))

Exemplo: 5n = O(n2), 10n2 + 5n = O(n2), n3 6= O(10n2)

Page 19: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Notacoes assintoticas ou de Bachmann-Landau (Ω)

Permitem descrever o comportamento assintotico duma funcaoquando o argumento tende a infinito.

I Notacao Ω: expressa um limite inferior para ocomportamento assintotico de uma funcao, de formaaproximada

Ω(g(n)) = f(n) | ∃c > 0, n0, ∀n > n0, f(n) ≥ c ∗ g(n)

Informalmente, f(n) ∈ Ω(g(n)) (se escreve f(x) = Ω(g(x))),significa que f(n) cresce mais rapidamente que g(n), para valoresde n suficientemente grandes (como se f(x) ≥ g(x))

Exemplo: n2 = Ω(300n + 1000), 10n2 + 5n = Ω(n2)

Page 20: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Notacoes assintoticas ou de Bachmann-Landau (Θ)

Permitem descrever o comportamento assintotico duma funcaoquando o argumento tende a infinito.

I Notacao Θ: expressa um limite firme ou restrito para ocomportamento assintotico de uma funcao, de formaaproximada

Θ(g(n)) = f(n) | ∃c1 > 0, c2 > 0, n0,∀n > n0,

c1 ∗ g(n) ≤ f(n) ≤ c2 ∗ g(n)

Informalmente, f(n) ∈ Θ(g(n)) (se escreve f(x) = Θ(g(x))),significa que f(n) cresce tao rapidamente quanto g(n) dentrodum fator, para valores de n suficientemente grandes.

Exemplo: 10n2 + 5n = Θ(n2), n 6= Θ(n2), n3 6= Θ(10n2)

Page 21: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Algumas Propriedades das Notacoes O,Ω,Θ

Page 22: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Algumas Propriedades das Notacoes O,Ω,Θ

1. Todas reflexivas e transitivas; Θ e simetrica;

2. f(x) = O(g(x)) sse g(x) = Ω(f(x))

3. f(x) = Θ(g(x)) sse f(x) = O(g(x)) e f(x) = Ω(g(x))

4. O(kf(x)) = O(f(x)),∀k 6= 0

5. O(f(x)) + O(g(x)) = O(max(f(x), g(x))

Page 23: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Analise Assintotica e Notacoes O,Ω,Θ

Propriedades das Notacoes O,Ω,Θ

Permitem desprezar constantes e termos de menor grau. Pex:

Aqui, pelo caso pior T (n) = O(n2). Porem, T (n) 6= Θ(n2)pois no caso melhor T (n) 6= Ω(n2), e sim T (n) = Ω(n).

Page 24: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos nao Recursivos

Agenda

Introducao

Analise Assintotica e Notacoes O,Ω,Θ

Complexidade de Algoritmos nao Recursivos

Complexidade de Algoritmos Recursivos

Variantes Simples do Teorema Mestre

Consideracoes finais

Referencias Bibliograficas

Page 25: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos nao Recursivos

Pequena guia para a analise de T (n) no caso pior

I Operacoes predefinidas sobre tipos basicos: O(1)

I Sequencia de instrucoes: max(T (I1), . . . , T (In))

I Condicional: max(T (cond + then), T (cond + else))

I Lacos: O(∑iterNum

it=1 T (cond + body))

Page 26: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos nao Recursivos

Pequena guia para a analise de T (n) no caso pior

I Operacoes predefinidas sobre tipos basicos: O(1)

I Sequencia de instrucoes: max(T (I1), . . . , T (In))

I Condicional: max(T (cond + then), T (cond + else))

I Lacos: O(∑iterNum

it=1 T (cond + body))

Exemplo: Qual o custo T (n) do seguinte trecho de programa?

Page 27: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos nao Recursivos

Pequena guia para a analise de T (n) no caso pior

I Operacoes predefinidas sobre tipos basicos: O(1)

I Sequencia de instrucoes: max(T (I1), . . . , T (In))

I Condicional: max(T (cond + then), T (cond + else))

I Lacos: O(∑iterNum

it=1 T (cond + body))

Exemplo: Qual o custo T (n) do seguinte trecho de programa?

Page 28: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos nao Recursivos

Pequena guia para a analise de T (n) no caso pior

I Operacoes predefinidas sobre tipos basicos: O(1)

I Sequencia de instrucoes: max(T (I1), . . . , T (In))

I Condicional: max(T (cond + then), T (cond + else))

I Lacos: O(∑iterNum

it=1 T (cond + body))

Exemplo: Qual o custo T (n) do seguinte trecho de programa?

Page 29: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos nao Recursivos

Classes de Complexidades

Permite definir uma hierarquia na complexidade dos algoritmos

O(1) ⊂ O(log n) ⊂ O(n) ⊂ O(n2) ⊂ O(2n) ⊂ O(n!) ⊂ O(nn)

I ∀a, b, a > 0, O((log n)b) ⊂ O(na)

I ∀a, b, a > 1, O(nb) ⊂ O(an)

Page 30: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Agenda

Introducao

Analise Assintotica e Notacoes O,Ω,Θ

Complexidade de Algoritmos nao Recursivos

Complexidade de Algoritmos Recursivos

Variantes Simples do Teorema Mestre

Consideracoes finais

Referencias Bibliograficas

Page 31: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Analise de Algoritmos recursivos

Recursividade e um recurso de programacao de grande importancia

Vantagens

I Fornece uma forma natural, simples e elegante de resolver umproblema

I Facilidade para analisar as propriedades de um algoritmo

Page 32: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Analise de Algoritmos recursivos

Recursividade e um recurso de programacao de grande importancia

Vantagens

I Fornece uma forma natural, simples e elegante de resolver umproblema

I Facilidade para analisar as propriedades de um algoritmo

Como analizar a complexidade dum algoritmo recursivo?!

Page 33: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Algoritmos recursivos e Recorrencias

As propriedades de um programa recursivo podem ser analisadasusando uma funcao recursiva, chamada relacao de recorrencia

Na matematica, uma relacao de recorrencia e definida para umconjunto de valores iniciais e em termos de ela mesma.

f(0) = c0, f(1) = c1, . . . , f(k) = ck

f(n) = g(f(n− 1), f(n− 2), . . . , f(n− t)), n > k

Page 34: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Algoritmos recursivos e Recorrencias

As propriedades de um programa recursivo podem ser analisadasusando uma funcao recursiva, chamada relacao de recorrencia

I Numero de chamadas recursivas:

C(0) = 0, C(n) = C(n− 1) + 1

I Tempo de execucao:

T (0) = c1, T (n) = T (n− 1) + c2

Page 35: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Relacoes de recorrencias e seus Tipos

f(0) = c0, f(1) = c1, . . . , f(k) = ck

f(n) = g(f(n− 1), f(n− 2), . . . , f(n− t)), n > k

I Linear: se nao ha produtos ou potencias de termos recursivos,e.g. C(n)−

√nC(n− 1) = n

I Nao Linear: e.g.C(n) = C(n− 1) ∗ C(n− 2) + C(n− 3)

I Homogenea: se nao ha um termo nao recursivo

I de segundo/terceiro/quarto ordem (em geral de ordem ougrau fixo), dependendo do menor termo recursivo, e.g.D(n)− 3 ∗D(n− 2) + D(n− 4) = 1 e de ordem 4

I com coeficientes constantes ou naoI Divisao e conquista: T (n) =

∑ki=1 ai ∗ T ( n

bi) + f(n)

Page 36: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Exemplos de Recorrencias Simples

I Linear, homogenea, de ordem 1 e coeficiente constante

A(0) = 1, A(n) = 2 ∗A(n− 1)

I Linear, homogenea, de ordem 1 e coeficiente variavel

B(0) = 1, B(n) = n ∗B(n− 1)

I Linear, nao homogenea, de ordem 1

C(0) = 0, C(n) = C(n− 1) + 1

I Linear, homogenea, de ordem 2

F (0) = 1, F (1) = 1, F (n) = F (n− 1) + F (n− 2)

Ver Apendice 1

Page 37: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Algoritmos e recorrencias de divisao e conquista

As recorrencias mais simples de divisao e conquista tem a forma

T (n) = aT (n/b) + f(n)

I a > 0 e o numero de sub-problemas de tamanho n/b

I b > 1 e f(n) e o custo de dividir e combinar as sub-solucoes

Page 38: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Como obter a solucao duma recorrencia, i.e. uma funcaonao recursiva equivalente?

T (0) = c1, T (n) = T (n− 1) + c2, n > 0

Page 39: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Como obter a solucao duma recorrencia, i.e. uma funcaonao recursiva equivalente?

T (0) = c1, T (n) = T (n− 1) + c2, n > 0

T (n) = T (n−1)+c2 = T (n−2)+c2+c2 = T (n−3)+3∗c2 = ...

= T (n− k) + k ∗ c2 = ... = T (0) + c2 ∗ n = c1 + c2 ∗ n

Page 40: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Como obter a solucao duma recorrencia, i.e. uma funcaonao recursiva equivalente?

I Nao existe procedimento geral para resolver recorrenciasI Recorrencias lineares de ordem fixo com coeficientes

constantes sempre podem ser resolvidas

I A analise de algoritmos nao precisa duma solucao exata;basta uma aproximacao assintotica

I Para algumas recorrencias e usado o Teorema Mestre

Page 41: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Complexidade de Algoritmos Recursivos

Como obter a solucao duma recorrencia, i.e. uma funcaonao recursiva equivalente?

I Nao existe procedimento geral para resolver recorrenciasI Recorrencias lineares de ordem fixo com coeficientes

constantes sempre podem ser resolvidas

I A analise de algoritmos nao precisa duma solucao exata;basta uma aproximacao assintotica

I Para algumas recorrencias e usado o Teorema Mestre

Page 42: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Agenda

Introducao

Analise Assintotica e Notacoes O,Ω,Θ

Complexidade de Algoritmos nao Recursivos

Complexidade de Algoritmos Recursivos

Variantes Simples do Teorema Mestre

Consideracoes finais

Referencias Bibliograficas

Page 43: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Teorema Mestre

Receita para resolver assintoticamente algumas recorrencias

I T (n) = aT (n− b) + nc, a > 0, b > 0, c ≥ 0

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

I T (n) = aT (nb) + nc, a > 0, b > 0, c ≥ 0

T (n) =

Θ(nloga

b ) if logab > c (Caso 1)

Θ(nc lognb ) if loga

b = c (Caso 2)Θ(nc) if loga

b < c (Caso 3)

Page 44: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Variantes Simples do Teorema Mestre

Receita para resolver assintoticamente algumas recorrencias

I T (n) = aT (n− b) + nc, a > 0, b > 0, c ≥ 0

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

I T (n) = aT (nb) + nc, a > 0, b > 0, c ≥ 0

T (n) =

Θ(nloga

b ) if logab > c (Caso 1)

Θ(nc lognb ) if loga

b = c (Caso 2)Θ(nc) if loga

b < c (Caso 3)

Page 45: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Teorema Mestre

Receita para resolver assintoticamente algumas recorrencias

I T (n) = aT (n− b) + nc, a > 0, b > 0, c ≥ 0

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

Exemplo: Qual o custo T (n) da seguinte funcao?

I T (n) = aT (nb) + nc, a > 0, b > 0, c ≥ 0

T (n) =

Θ(nloga

b ) if logab > c (Caso 1)

Θ(nc lognb ) if loga

b = c (Caso 2)Θ(nc) if loga

b < c (Caso 3)

Page 46: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Teorema Mestre

Receita para resolver assintoticamente algumas recorrencias

I T (n) = aT (n− b) + nc, a > 0, b > 0, c ≥ 0

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

I T (n) = aT (nb) + nc, a > 0, b > 0, c ≥ 0

T (n) =

Θ(nloga

b ) if logab > c (Caso 1)

Θ(nc lognb ) if loga

b = c (Caso 2)Θ(nc) if loga

b < c (Caso 3)

Page 47: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Qual funcao e mais eficiente?

https://repl.it/@mirthalina/powerItVsRec

Page 48: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Qual funcao e mais eficiente?

https://repl.it/@mirthalina/ImprimirListaItVsRec

Page 49: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplo do Teorema Mestre - T (n) = aT (n− b) + nc

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

Exemplo: Torres de Hanoi, solucao recursiva

T (n) = 2T (n− 1) + 1

= O(2n)

Page 50: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplo do Teorema Mestre - T (n) = aT (n− b) + nc

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

Exemplo: Torres de Hanoi, solucao recursiva

T (n) = 2T (n− 1) + 1

= O(2n)

Page 51: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplo do Teorema Mestre - T (n) = aT (n− b) + nc

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

Exemplo: Torres de Hanoi, solucao recursiva

T (n) = 2T (n− 1) + 1

= O(2n)

Page 52: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplo do Teorema Mestre - T (n) = aT (n− b) + nc

T (n) =

O(nc+1) if a = 1

O(ncan/b) if a > 1

Exemplo: Torres de Hanoi, solucao recursiva

T (n) = 2T (n− 1) + 1 = O(2n)

Page 53: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 1 do Teorema Mestre - T (n) = aT (nb) + nc

1. logab > c⇒ T (n) = Θ(nloga

b )

Exemplo: T (n) = 4T (n/2) + n

Page 54: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 1 do Teorema Mestre - T (n) = aT (nb) + nc

1. logab > c⇒ T (n) = Θ(nloga

b )

Exemplo: T (n) = 4T (n/2) + n

a = 4, b = 2, logab = 2 > c = 1⇒ T (n) = Θ(n2)

Page 55: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 1 do Teorema Mestre - T (n) = aT (nb) + nc

1. logab > c⇒ T (n) = Θ(nloga

b )

Exemplo: T (n) = 4T (n/2) + n

a = 4, b = 2, logab = 2 > c = 1⇒ T (n) = Θ(n2)

Exemplo: T (n) = 2T (n/2) +√n

Page 56: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 1 do Teorema Mestre - T (n) = aT (nb) + nc

1. logab > c⇒ T (n) = Θ(nloga

b )

Exemplo: T (n) = 4T (n/2) + n

a = 4, b = 2, logab = 2 > c = 1⇒ T (n) = Θ(n2)

Exemplo: T (n) = 2T (n/2) +√n

a = 2, b = 2, logab = 1 > c = 1/2⇒ T (n) = Θ(n)

Page 57: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 2 do Teorema Mestre - T (n) = aT (nb) + nc

2. logab = c⇒ T (n) = Θ(nc ∗ logn

b )

Exemplo: T (n) = 4T (n/2) + n2

Page 58: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 2 do Teorema Mestre - T (n) = aT (nb) + nc

2. logab = c⇒ T (n) = Θ(nc ∗ logn

b )

Exemplo: T (n) = 4T (n/2) + n2

a = 4, b = 2, logab = 2 = c⇒ T (n) = Θ(n2 ∗ log n)

Page 59: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 2 do Teorema Mestre - T (n) = aT (nb) + nc

2. logab = c⇒ T (n) = Θ(nc ∗ logn

b )

Exemplo: T (n) = 4T (n/2) + n2

a = 4, b = 2, logab = 2 = c⇒ T (n) = Θ(n2 ∗ log n)

Exemplo: T (n) = 2T (n/2) + n

Page 60: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 2 do Teorema Mestre - T (n) = aT (nb) + nc

2. logab = c⇒ T (n) = Θ(nc ∗ logn

b )

Exemplo: T (n) = 4T (n/2) + n2

a = 4, b = 2, logab = 2 = c⇒ T (n) = Θ(n2 ∗ log n)

Exemplo: T (n) = 2T (n/2) + n

a = 2, b = 2, logab = 1 = c⇒ T (n) = Θ(n log n)

Page 61: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 3 do Teorema Mestre - T (n) = aT (nb) + nc

3. logab < c⇒ T (n) = Θ(nc)

Exemplo: T (n) = 4T (n/2) + n3

Page 62: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 3 do Teorema Mestre - T (n) = aT (nb) + nc

3. logab < c⇒ T (n) = Θ(nc)

Exemplo: T (n) = 4T (n/2) + n3

a = 4, b = 2, logab = 2 < c = 3⇒ T (n) = Θ(n3)

Page 63: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 3 do Teorema Mestre - T (n) = aT (nb) + nc

3. logab < c⇒ T (n) = Θ(nc)

Exemplo: T (n) = 4T (n/2) + n3

a = 4, b = 2, logab = 2 < c = 3⇒ T (n) = Θ(n3)

Exemplo: T (n) = 3T (n/4) + n√n

Page 64: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Variantes Simples do Teorema Mestre

Exemplos Caso 3 do Teorema Mestre - T (n) = aT (nb) + nc

3. logab < c⇒ T (n) = Θ(nc)

Exemplo: T (n) = 4T (n/2) + n3

a = 4, b = 2, logab = 2 < c = 3⇒ T (n) = Θ(n3)

Exemplo: T (n) = 3T (n/4) + n√n

a = 3, b = 4, log34 = 0.793 < c = 1.5⇒ T (n) =

Θ(n√n)

Page 65: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Consideracoes finais

Agenda

Introducao

Analise Assintotica e Notacoes O,Ω,Θ

Complexidade de Algoritmos nao Recursivos

Complexidade de Algoritmos Recursivos

Variantes Simples do Teorema Mestre

Consideracoes finais

Referencias Bibliograficas

Page 66: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Consideracoes finais

Consideracoes sobre o Teorema Mestre

I Muito util para analisar algoritmos de divisao e conquista

I O comportamento assintotico de T (n) nao muda se T (n/b)e substituıdo por T (bn/bc) ou T (dn/be).

I Tem variantes mais gerais mas nem sempre pode ser aplicado

Page 67: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Consideracoes finais

Consideracoes sobre o Teorema Mestre

I Muito util para analisar algoritmos de divisao e conquista

I O comportamento assintotico de T (n) nao muda se T (n/b)e substituıdo por T (bn/bc) ou T (dn/be).

I Tem variantes mais gerais mas nem sempre pode ser aplicado

Complexidade das Estruturas de Dados Lineares

http://bigocheatsheet.com/

Page 68: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Consideracoes finais

Classes de Complexidades

Page 69: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Consideracoes finais

Classes de Complexidades

http://cooervo.github.io/Algorithms-DataStructures-BigONotation/index.html

Page 70: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Referencias Bibliograficas

Agenda

Introducao

Analise Assintotica e Notacoes O,Ω,Θ

Complexidade de Algoritmos nao Recursivos

Complexidade de Algoritmos Recursivos

Variantes Simples do Teorema Mestre

Consideracoes finais

Referencias Bibliograficas

Page 71: 30pt Algoritmos e Estruturas de Dados I Noções Básicas de ...professor.ufabc.edu.br/~mirtha.lina/UFABC/docAEDI/...Breve revis~ao de ponteiros e estruturas din^amicas Algoritmos

Breve revisao de ponteiros e estruturas dinamicas

Referencias Bibliograficas

Referencias Bibliograficas

I Introduction to Algorithms, 3rd Edition. Thomas H.Cormen, Charles E. Leiserson, Ronald L. Rivest and CliffordStein, 2009, caps 2,3,4

I An Introduction to the Analysis of Algorithms, 2nd Edition.Robert Sedgewick and Philippe Flajolet, 2013

I Algorithm Design: Foundation, Analysis, and InternetExamples. Michael T. Goodrich and Roberto Tamassia, 2002

I Projeto de Algoritmos, 2da Edicao, Nivio Ziviani, 2007

I Wikipedia: Big O notation, Master theorem