Buscar

Prévia do material em texto

Projeto de Algoritmos usando Induc¸a˜o
Paradigmas de Projeto
I Paradigma Incremental:
usando induc¸a˜o fraca
I Paradigma Divisa˜o e Conquista:
usando induc¸a˜o forte
Hip. de Induc¸a˜o
{
Fraca : Paradigma Incremental
Forte : Paradigma Divisa˜o e Conquista
Caracterizando um problema
I Problema
I entrada de tamanho n
I X = {x1, x2, . . . , xn}
I Complexidade
I dado em func¸a˜o de n
I T (n)
Paradigma Incremental
Hip. de Induc¸a˜o Fraca: Incremental
I Base:
se n = n0 conhec¸o soluc¸a˜o para o problema
I H. I. Fraca:
I para X ′ = {x ′1, x ′2, . . . , x ′n−1}
I assume-se que sabemos resolver o problema para X ′
I Passo de Induc¸a˜o:
conhecendo a soluc¸a˜o para X ′, S(X ′), obtemos S(X )
Algoritmo Incremental
I Pseudo co´digo para o Paradigma INCremental
INC(X,n)
Se n <= n0, resolver usando caso base
Sena˜o
TE (n) – Escolher xi ∈ X tal que X ′ ← X − {xi}
INC(X’,n-1)
TC (n) – Obter S(X ) a partir de S(X
′) e xi
fim-se
Custo do Paradigma Incremental
Complexidade: T (n) = T (n − 1) + TE (n) + TC (n)
I T (n): custo total
I T (n − 1): custo da hipo´tese (HI fraca)
I TE (n): custo da escolha (xi ∈ X )
I TC (n): custo de obter S(X ), ou seja, da combinac¸a˜o de S(X ′) e xi
Paradigma de Divisa˜o e Conquista
Hip. de Induc¸a˜o Forte: (D & C)
I Base:
sabemos resolver para n = n0
I H. I. Forte:
I com X ′ = {x ′1, x ′2, . . . , x ′k},
I assume-se que sabemos resolver o problema para k < n
I Passo de Induc¸a˜o:
conhecendo a soluc¸a˜o para X ′, S(X ′), obtemos S(X )
Algoritmo de D&C
I Pseudo co´digo para o Paradigma D&C
D&C (X , 1, n)
Se n <= n0, resolve-se pelo caso base
Sena˜o
TD(n) – Particionar X em 2 subconjuntos, X1 e X2,
onde |X1| = |X2| = n2
D&C (X1, 1,
n
2 )
D&C (X2, 1,
n
2 )
TC (n) – Combinar X1 e X2
fim-se
Custo do Paradigma D&C
Complexidade: T (n) = 2T ( n2 ) + TD(n) + TC (n)
I T (n): custo total
I 2T ( n2 ): custo da hipo´tese (HI forte – 2 chamadas)
I TD(n): custo da divisa˜o (achar X1 e X2)
I TC (n): custo de obter S(X ), ou seja, de combinar S(X1) e S(X2)
Ideia geral
I Resolver um problema X de tamanho n
I Projetar um algoritmo para resolver X
I Dividir o problema X em problemas menores
I Incremental, X ′, ou com D&C, X1 e X2
	Projeto de Algoritmos

Mais conteúdos dessa disciplina