You are on page 1of 145

Funes

Antonio Alfredo Ferreira Loureiro


loureiro@dcc.ufmg.br
http://www.dcc.ufmg.br/~loureiro

Olga Nikolaevna Goussevskaia


olga@dcc.ufmg.br

UFMG/ICEx/DCC

MD

Func
o
es

Sumrio
Introduo
Sequncia como funo
Funo como codificao/decodificao de bits
Autmato finito
Funo injetiva e funo hash
Funes sobrejetiva, bijetiva e inversa
Princpio da casa de pombo
Composio de funes
Funo de complexidade
UFMG/ICEx/DCC

MD

Func
o
es

Introduo
Sejam dois conjuntos A e B. Suponha que cada elemento de A possa ser
associado a um elemento especfico de B. A relao entre elementos de A e
B chamada de funo.
Funes so normalmente representadas por uma nica letra como, por
exemplo, f , g, h, F , G. Funes especiais so denotadas por strings, como
log, exp e sin.

UFMG/ICEx/DCC

MD

Func
o
es

Introduo
Definio: A funo f de um conjunto X para um conjunto Y uma relao entre elementos de X e elementos de Y com a propriedade que cada
elemento de X est relacionado a um nico elemento de Y .
A notao f : X Y significa que f uma funo de X para Y .
O conjunto X chamado de domnio e o conjunto Y de co-domnio.
Faixa de f ou imagem de X para f : conjunto de todos os valores que f
pode assumir:
Faixa de f : {y Y |y = f (x), para algum x X}
Imagem inversa de y = {x X|f (x) = y}
Implicao:
Cada elemento de X pode ser associado a um e somente um elemento
de Y .

UFMG/ICEx/DCC

MD

Func
o
es

Introduo
Sejam os conjuntos finitos X e Y definidos da seguinte forma: X = {a, b, c}
e Y = {1, 2, 3, 4}. A funo f : X Y pode ser definida por um diagrama,
como por exemplo:
Domnio de f = {a, b, c};
Co-domnio de f = {1, 2, 3, 4}.
f (a) = 2; f (b) = 4; f (c) = 2.
Faixa de f = {2, 4}.

f
a
b
c

1
2
3
4

Imagem inversa de 1 = ;
Imagem inversa de 2 = {a, c};
Imagem inversa de 3 = ;
Imagem inversa de 4 = {b};
A funo f representada como um conjunto de pares ordenados = {(a, 2), (b, 4), (c, 2)}.

UFMG/ICEx/DCC

MD

Func
o
es

Introduo
Exemplos de funes:
f : x x2.
f : R R a funo quadrado.
f : n n + 1.
f : Z Z a funo sucessor.
f : r 2.
f : Q N a funo constante.
Definio (Igualdade de funes): Sejam f e g funes definidas de X em Y .
Ento,
f = g, sse f (x) = g(x), x X.

UFMG/ICEx/DCC

MD

Func
o
es

Introduo
Exemplos:
Sejam f e g funes definidas
para todo x R.
f = g?
(a) f (x) = |x|
e g(x) = x2.
Sim. |x| = x2, x R.
(b) Sejam as funes
f +g : RR e
g+f : RR
definidas como:
(f + g)(x) = f (x) + g(x),
(g + f )(x) = g(x) + f (x),

x R e
x R.

f + g = g + f?
(f + g)(x) = f (x) + g(x)
= g(x) + f (x)
= (g + f )(x)

UFMG/ICEx/DCC

MD

Func
o
es

definio de f + g
comutatividade da adio
definio de g + f

Sequncias como funes


Uma sequncia uma funo definida no conjunto dos inteiros a partir de um
valor especfico.
Por exemplo, a sequncia
1,

1,
3

1
2,

(1)n
1
4 , . . . , n+1 , . . .

pode ser definida como uma funo f dos inteiros no-negativos para os
nmeros reais, isto ,
0

1
2

2
...

1
3

Formalmente, f : Z0 R, onde
(1)n
f (n) =
n+1

n
n (1)
n+1

UFMG/ICEx/DCC

MD

Func
o
es

Sequncias como funes


A funo que define essa sequncia nica?
No. Por exemplo, f : N R, onde
(1)n+1
f (n) =
n

UFMG/ICEx/DCC

MD

Func
o
es

Funes de codificao/decodificao de bits


Mensagens transmitidas atravs de canais de comunicao so frequentemente codificadas de formas especiais para reduzir a possibilidade de serem
corrompidas devido interferncia de rudos nas linhas de transmisso.
Uma possvel forma de codificao repetir cada bit trs vezes. Assim, a
mensagem
00101111
seria codificada como
000000111000111111111111

UFMG/ICEx/DCC

MD

Func
o
es

10

Funes de codificao/decodificao de bits


Seja = {0, 1}. o conjunto de todos os strings que podem ser formados com 0 e 1. Seja L o conjunto de todos os strings formados de que
possuem triplas de bits idnticos.
Funo de codificao:
E : L, onde E(s) o string obtido de s trocando cada bit de s pelo
mesmo bit repetido trs vezes.
Funo de decodificao:
D : L , onde D(t) o string obtido de t trocando cada trs bits consecutivos idnticos de t por uma nica cpia desse bit.
Qual a capacidade de correo deste mtodo?
Um bit trocado em cada tripla de bits idnticos enviados pela origem.

UFMG/ICEx/DCC

MD

Func
o
es

11

Funo da distncia de Hamming


A funo da distncia de Hamming usada em Teoria da Informao. Essa
funo fornece o nmero de bits que dois strings de tamanho n diferem posio a posio.
Seja = {0, 1} e n o conjunto de todos os strings de tamanho n. A funo
H : n n Z+ definida da seguinte forma:
Para cada par de strings (s, t) n n, H(s, t) o nmero de
posies nos quais s e t tm valores diferentes.
Exemplo:
Seja n = 5.
H(11000, 00000) = 2
H(11111, 00000) = 5
H(10001, 01111) = 4

UFMG/ICEx/DCC

MD

Func
o
es

12

Funes booleanas
Definio: Uma funo Booleana f uma funo cujo domnio o conjunto
de todas n-tuplas ordenadas de 0s e 1s e cujo co-domnio {0, 1}.
Formalmente, o domnio de uma funo Booleana pode ser descrito como o
produto Cartesiano de n cpias do conjunto {0, 1}, que representado por
{0, 1}n. Logo,
f : {0, 1}n {0, 1}.

Que tipo de circuito lgico definido por este tipo de funo?


Circuito combinatrio, onde o valor da sada s depende dos valores da
entrada.

UFMG/ICEx/DCC

MD

Func
o
es

13

Funes booleanas
Exemplo: f (x1, x2, x3) = (x1 + x2 + x3) mod 2
Entrada

UFMG/ICEx/DCC

Sada

x1

x2

x3

(x1 + x2 + x3) mod 2

MD

Func
o
es

14

Verificando se uma funo bem-definida


Seja uma funo f definida do conjunto dos racionais para o conjunto dos
inteiros, ou seja, f : Q Z, sendo que
m
m, inteiros m, n e n 6= 0
f :
n
A funo f bem-definida?
No.
1 = 3
2
6
.
3)
. . f (1
)
=
f
(
2
6

Mas,
1) = 1
f (2

f (3
6) = 3

.
3)
. . f (1
)
=
6
f
(
2
6

UFMG/ICEx/DCC

MD

Func
o
es

15

Funo Estado
Os problemas em Cincia da Computao podem ser vistos, de uma forma
geral, conforme o diagrama abaixo:
Sada 1 -

Entrada 1-

...
Entrada n-

Modelo
Computacional
do Problema

...
Sada m -

Em muitos casos, os valores das sadas dependem no somente dos valores


da entrada, mas tambm do estado corrente do sistema. Neste caso, a sada
no pode ser representada por uma funo somente da entrada.
Alguns dos sistemas onde isso ocorre frequentemente so:
Sistemas reativos
Sistemas concorrentes
Sistemas distribudos
Sistemas digitais
UFMG/ICEx/DCC

MD

Func
o
es

16

Autmato finito
Um autmato finito (AF), em ingls
Finite Automaton ou
Finite State Automaton ou
Finite State Machine
um modelo matemtico de um sistema que possui entradas e sadas discretas.
O sistema pode estar num estado dentre um conjunto finito de estados ou
configuraes.
O estado do sistema sumariza a informao relacionada com entradas passadas que necessria para determinar o comportamento do sistema em
entradas subsequentes.

UFMG/ICEx/DCC

MD

Func
o
es

17

Autmato finito
Exemplo: O mecanismo de controle de um elevador no precisa lembrar
todas as requisies anteriores de servio, mas somente o andar corrente, a
direo de movimento e as requisies pendentes.
Computador digital: pode ser modelado por um autmato finito.
Exemplo: mquina de doce que custa 20 centavos e aceita moedas de 5 e 10
centavos
10

5 Dep
5

0 Dep

15 Dep

10

10
10 Dep

UFMG/ICEx/DCC

MD

10

Func
o
es

20 Dep

18

Autmato finito
Definio: um autmato finito uma quintupla A = (I, S, s0, Q, N ), onde
I: alfabeto de entrada para o autmato, ou seja, conjunto de smbolos vlidos.
S: conjunto de estados do autmato.
s0: estado inicial do autmato, onde s0 S.
Q: conjunto de estados finais, onde Q S.
N : funo de transio ou de prximo estado, onde N : S I S.
Observao importante: essa definio define um autmato determinstico.

UFMG/ICEx/DCC

MD

Func
o
es

19

Autmato finito
Seja um autmato A = (I, S, s0, Q, N ), onde
I = {0, 1}
S = {s0, s1, s2}
s0 = estado inicial do autmato, onde s0 S.
Q = {s2}, onde Q S.
N = {(s0, 0, s1), (s0, 1, s0), (s1, 0, s1), (s1, 1, s2), (s2, 0, s1), (s2, 1, s0)}.
A operao de um autmato finito normalmente descrito por um diagrama
de transio de estados.
1

s0

s1
0

UFMG/ICEx/DCC

MD

Func
o
es

s2

20

Autmato finito
Uma outra forma de representar a operao do autmato (funo de prximo
estado N ) atravs da tabela do prximo estado.

hInicial i

Estado
hFinal i

s0
s1
s2

Entrada
0
1
s1 s0
s1 s2
s1 s0
1

s0

s1
0

UFMG/ICEx/DCC

MD

Func
o
es

s2

21

Autmato finito com sada


Uma limitao do autmato finito apresentado que a sada restrita a um sinal binrio SIM / NO que indica se a entrada aceita ou no, respectivamente.
Existem dois modelos que consideram um alfabeto de sada diferente de
sim/no (os dois modelos so equivalentes):
Mquina de Moore (Moore machine)
Mquina de Mealy (Mealy machine)
Mquina de Moore:
uma sxtupla (I, S, s0, N, , ), onde I, S, s0 e N so como antes.
o alfabeto de sada para o autmato e a funo de sada, onde : S
.
Sada associada com o estado.
Mquina de Mealy:
uma sxtupla (I, S, s0, N, , ), onde todos os elementos da tupla so
idnticos aos da Mquina de Moore exceto que definida de S I .
Sada associada com a transio.
UFMG/ICEx/DCC

MD

Func
o
es

22

Linguagem aceita por um autmato


Definio: Seja A um AF com alfabeto de entrada I. Seja I o conjunto de
todos os strings sobre I e seja w um string em I . Diz-se que w aceito
por A sse A comea no estado inicial e aps todos os smbolos de w serem
fornecidos em sequncia para A, o autmato pra num estado final.
A linguagem aceita por A, representada por L(A), o conjunto de todos os
strings aceitos por A.
L(A) chamada de linguagem regular, e A representa um autmato que
aceita uma expresso regular.
Qual a linguagem aceita por A?
1

s0

s1
0

s2

Todos os strings que terminam com a sequncia 0 1, i.e., (0 1)0 1 ,


onde o sobrescrito significa a ocorrncia de 0 ou mais vezes do smbolo
ou sequncia em questo.
UFMG/ICEx/DCC

MD

Func
o
es

23

Funo do estado final


Suponha que um autmato esteja num estadono necessariamente o
iniciale recebe uma sequncia de smbolos. Em que estado o autmato
terminar?
Depende da combinao de smbolos de entrada e estados, e dado pela
funo do estado final.
Definio: Seja A um autmato e I definidos como antes e seja a funo do
estado final N : S I S. Se s S e w I ento N (s, w) o estado
para o qual o autnomo pra quando todos os smbolos de w so fornecidos
em sequncia para A a partir do estado s.

UFMG/ICEx/DCC

MD

Func
o
es

24

Funo do estado final


Exemplo: dado o autmato abaixo, determine N (s1, 10110)
1

s0

s1

s2

s1 s 2 s1 s2 s0 s1
ou seja,
N (s1, 10110) = s1.

UFMG/ICEx/DCC

MD

Func
o
es

25

Projetando um AF que aceita uma linguagem


Projete um AF para aceitar strings de 0s e 1s que contm exatamente um
nico 1.
0
s0

0,1

0
1

s1

0*

0*10*

s2
0*11(0*1*)*

Estado vlido

Projete um AF para aceitar strings de 0s e 1s para os quais o nmero de 1s


divisvel por 3.
0

0
1

s0

s1

1
s2

Linguagem aceita: 0(101010)


UFMG/ICEx/DCC

MD

Func
o
es

26

Implementando um AF atravs de um programa


1
1
s0

s1

s2

s3

Seja o autmato ao lado que reconhece todos os strings que terminam


em 011.
Um possvel algoritmo em alto nvel
que imita o funcionamento do autmato :

E XECUTA AUTMATO(A)
1
2
3
4
5
6
7
8
9
10

state 0
symbol primeiro smbolo do string de entrada
while symbol 6=
do choose state of
0: if symbol = 0 then state 1 else state 0
1: if symbol = 0 then state 1 else state 2
2: if symbol = 0 then state 1 else state 3
3: if symbol = 0 then state 1 else state 0
symbol prximo smbolo do string de entrada
return state  O estado final 3 sse o string termina em 011

UFMG/ICEx/DCC

MD

Func
o
es

27

Implementando um AF atravs de um programa


Um outro possvel algoritmo em alto nvel que imita o funcionamento do autmato e usa a funo do prximo estado :
E XECUTA AUTMATO(A)
1 state 0
 Para cada linha abaixo ser atribudo a cada coluna o valor correspondente
2 N [0, ] [1, 0]
3 N [1, ] [1, 2]
4 N [2, ] [1, 3]
5 N [3, ] [1, 0]
6 symbol primeiro smbolo do string de entrada
7 while symbol 6=
8 do state N [state, symbol]
9
symbol prximo smbolo do string de entrada
10 return state  O estado final 3 sse o string termina em 011

UFMG/ICEx/DCC

MD

Func
o
es

28

Funo injetiva
Definio: Seja F : X Y . F uma funo um-para-um ou injetiva sse
para todos x1, x2 X,
se F (x1) = F (x2) ento x1 = x2,
ou
se x1 6= x2 ento F (x1) 6= F (x2)

UFMG/ICEx/DCC

MD

Func
o
es

29

Funo injetiva: Aplicao funo hash


Motivao: suponha que deseja-se procurar (pesquisar) o mais rpido possvel alguns valores (chaves) que no esto ordenados. Uma possvel soluo
definir uma funo que usa a prpria chave para saber a sua localizao no
conjunto de valores.
Esta funo conhecida como funo hash.
Objetivo ideal: funo hash seja injetiva para que no haja colises de chaves.
Para tornar este mtodo aceitvel temos que resolver dois problemas:
(i) Encontrar uma funo h(k) que possa espalhar as chaves de forma uniforme pela tabela.
(ii) Encontrar um mecanismo para resolver o problema de localizar um registro com chave k entre aquelas cujas chaves colidem na mesma entrada
da tabela.

UFMG/ICEx/DCC

MD

Func
o
es

30

Funo hash
Por melhor que seja a funo h(k) e por mais esparsa que seja a ocupao
da tabela colises ocorrem!
Paradoxo do aniversrio:
Quando 23 ou mais pessoas esto juntas existe mais de 50% de chance
que duas pessoas tenham a mesma data de aniversrio.
Logo, uma tabela com 365 entradas e com 23 chaves ou mais, cujos endereos so calculados como se fossem uniformes e randmicos, mais da
metade das vezes, duas ou mais chaves vo ter o mesmo endereo na
tabela.

UFMG/ICEx/DCC

MD

Func
o
es

31

Funo hash
Uma funo de transformao deve mapear chaves em inteiros (ndices) dentro do intervalo [0..M 1] onde M o tamanho da tabela.
A funo de transformao ideal aquela que:
1. Seja simples de ser computada, e
2. Para cada chave de entrada, qualquer uma das sadas possveis igualmente provvel de ocorrer.
Mtodo mais usado:
Usa o resto da diviso inteira por M :
h(k) = k mod M
onde k um inteiro correspondente chave e que representa um ndice na
tabela.

UFMG/ICEx/DCC

MD

Func
o
es

32

Exemplo de funo hash


Seja a i-sima letra do alfabeto representada pelo nmero i, onde A = 1, . . ..
Seja a funo hash
h(k) = k mod M
onde M = 7.
A insero das chaves L, U, N, E, S, nesta ordem, fornece os seguintes valores:
h(L) = 12 mod 7 = 5
h(U) = 21 mod 7 = 0
h(N) = 14 mod 7 = 0
h(E) = 5 mod 7 = 5
h(S) = 19 mod 7 = 5
Uma possvel insero na tabela seria:

UFMG/ICEx/DCC

MD

Func
o
es

33

Exemplo de funo hash


Transformao de chaves no numricas em nmeros:
k=

n
X

Chave[i] p[i],

i=1

onde
n o nmero de caracteres da chave;
Chave[i] corresponde representao ASCII do i-simo caractere da
chave;
p[i] um inteiro de um conjunto de pesos gerados randomicamente para
1 i n.
Vantagem em usar pesos:
Dois conjuntos diferentes de pesos p1[i] e p2[i], 1 i n, leva a duas
funes de transformao h1(k) e h2(k) diferentes.

UFMG/ICEx/DCC

MD

Func
o
es

34

Funo hash perfeita


Se h(ki) = h(kj ) sse i = j, ento no h colises, e a funo de transformao chamada de funo de transformao perfeita ou funo hash
perfeita (hp).
Se o nmero de chaves N e o tamanho da tabela M so iguais ento temos
uma funo de transformao perfeita mnima.
Se ki kj e h(ki) h(kj ), ento a ordem lexicogrfica preservada.
Neste caso, temos uma funo de transformao perfeita mnima com ordem
preservada.

UFMG/ICEx/DCC

MD

Func
o
es

35

Funo hash perfeita: Comentrios


No h necessidade de armazenar a chave, pois o registro localizado sempre a partir do resultado da funo de transformao.
Uma funo de transformao perfeita especfica para um conjunto de chaves conhecido.

UFMG/ICEx/DCC

MD

Func
o
es

36

Funes sobrejetiva, bijetiva e inversa


Definio (funo sobrejetiva):
Seja F : X Y . F uma funo sobrejetiva sse para todo y Y possvel
achar um x X tal que F (x) = y.

Definio (funo bijetiva):


Seja F : X Y . F uma funo bijetiva sse F injetiva e sobrejetiva.

Definio (funo inversa):


Seja F : X Y uma funo bijetiva. Existe uma funo F 1 : Y X tal
que
F 1(y) = x y = F (x)

UFMG/ICEx/DCC

MD

Func
o
es

37

O princpio da Casa de Pombo ou


The Pigeonhole Principle
Princpio (1a verso):
Se n pombos (pigeons) entram em m casas num
pombal (pigeonholes) e n > m, ento pelo menos
uma das casas deve conter dois ou mais pombos.

UFMG/ICEx/DCC

MD

Func
o
es

Peter Dirichlet (18051859), matemtico


alemo. Foi o primeiro a expressar
esse princpio em
1834, que tem importantes aplicaes em teoria dos
nmeros.

38

O princpio da Casa de Pombo ou


The Pigeonhole Principle
Princpio (2 a verso):
Uma funo definida de um conjunto finito para outro conjunto finito menor
no pode ser injetiva. Existem pelo menos dois elementos no domnio que
tm a mesma imagem no co-domnio.
Aplicaes deste princpio esto por toda parte em Cincia da Computao.
Exemplo: funo hash em pesquisa e criptografia.

UFMG/ICEx/DCC

MD

Func
o
es

39

O princpio da Casa de Pombo: Exemplos


Num grupo de seis pessoas, existem obrigatoriamente pelo menos duas que
nasceram no mesmo ms?
No.
E se considerarmos 13 pessoas?
Sim.
Existem pelo menos duas pessoas em BH que tm o mesmo nmero de fios
de cabelo?
Sim, j que a populao de BH superior a 2 milhes de habitantes e
sabe-se que uma pessoa tem no mximo 300 mil fios de cabelo.
Voc acaba de acordar, mas ainda no abriu os olhos, e abre uma gaveta de
meias que tem cinco pares de meias verde-limo e cinco amarelo-ouro. Qual
o nmero mnimo de meias que voc deve pegar para ter um par da mesma
cor?
Trs. Duas podem ser diferentes mas a terceira tem que ser obrigatoriamente de uma das duas cores e assim tem-se um par.
UFMG/ICEx/DCC

MD

Func
o
es

40

O princpio da Casa de Pombo: Exemplos


Seja um tringulo equiltero com lado igual a 1. Se cinco pontos so selecionados no interior do tringulo ento existe um par de pontos que est a uma
distncia menor que 1/2?
Sim. Basta dividir o tringulo em quatro tringulos equilteros com lado
igual a 1/2.
Seja A = {1, 2, 3, 4, 5, 6, 7, 8}. Se cinco inteiros so selecionados de A,
existe pelo menos um par de nmeros cuja soma 9?
Sim. Existem quatro pares que tm soma 9: {1, 8}, {2, 7}, {3, 6}, {4, 5}.
Logo, pode-se selecionar quatro nmeros, cada um num conjunto. Como o
quinto cair em um dos quatro ento tem-se a soma 9.
E se selecionarmos apenas quatro nmeros?
No.

UFMG/ICEx/DCC

MD

Func
o
es

41

O princpio da Casa de Pombo: Exemplos


Seja S um conjunto com cinco nmeros inteiros positivos (Z+) e distintos cujo
maior nmero 8. Prove que existem pelo menos duas somas iguais dos nmeros dos subconjuntos no-vazios de S.
Prova:
Seja sA a soma dos nmeros de um subconjunto no-vazio de S.
Qualquer subconjunto de S pode ter no mximo uma soma
sA 4 + 5 + 6 + 7 + 8 = 30
(Caso A tenha os maiores nmeros e considerando o subconjunto com todos eles)

e no mnimo uma soma de


sA 1.
(Caso A tenha o nmero 1 e considerando o subconjunto com ele apenas)

i.e.,
1 sA 30.
UFMG/ICEx/DCC

MD

Func
o
es

42

O princpio da Casa de Pombo: Exemplos


S possui 25 1 = 31 subconjuntos no-vazios.
(Lembre-se que o conjunto potncia de um conjunto de n elementos possui 2n elementos
incluindo um elemento que o conjunto vazio.)
Existem 30 pigeonholes, ou seja, qualquer soma desses subconjuntos est
entre 1 e 30.
Alm disso, existem 31 conjuntos (pigeons), que devem ter somas entre 1 e
30.
Assim, pelo princpio da Casa de Pombo existem pelo menos dois subconjuntos que tm a mesma soma.

UFMG/ICEx/DCC

MD

Func
o
es

43

O princpio da Casa de Pombo: Exemplos


Seja L a linguagem que consiste de todos os strings da forma ak bk , onde k um
inteiro positivo. Simbolicamente, L a linguagem sobre o alfabeto = {a, b}
definida por
L = {s |s = ak bk , k 1}.
Prove que no existe um autmato finito que aceita L.

UFMG/ICEx/DCC

MD

Func
o
es

44

O princpio da Casa de Pombo: Exemplos


Prova (por contradio):
Suponha que exista um autmato finito A que aceita L.
A tem um conjunto finito de estados s1, s2, . . . , sn, onde n um inteiro
positivo.
Considere agora os strings que comeam com a, a2, a3, a4, . . . . No entanto,
existem infinitos strings que comeam com a e um nmero finito de estados.
Logo, pelo princpio da Casa de Pombo existe um estado sm (estado que
conta as), com m n, e dois strings de entrada ap e aq , onde ou p ou q
maior que n e os dois strings so relacionados com esse estado.
Isto significa que depois de entrar com p as, o estado do autmato sm e
entrando com p bs o autmato vai para o estado final sm.
Mas isso tambm implica que aq bp vai para o estado final j que aq tambm
pra em sm antes de entrar com os bs.
Por suposio, A aceita L. J que s aceito por A, s L. Mas pela definio
de L, L consiste apenas dos strings que tm o mesmo nmero de as e bs e
j que p 6= q, s 6 L. Logo, tem-se que s L e s 6 L, que uma contradio.
A suposio falsa e no existe um autmato que aceita L.
UFMG/ICEx/DCC

MD

Func
o
es

45

Generalizao do princpio
Princpio (3 a verso):
Para qualquer funo f , definida de um conjunto finito X para um conjunto
finito Y e para qualquer inteiro positivo k, se |X| > k |Y |, ento existe
algum y Y tal que y a imagem de pelo menos k + 1 elementos distintos
de X.
Princpio (4 a versocontrapositivo):
Para qualquer funo f , definida de um conjunto finito X para um conjunto
finito Y e para qualquer inteiro positivo k, se para cada y Y , f 1(y) tem
no mximo k elementos ento X tem no mximo k |Y | elementos.

UFMG/ICEx/DCC

MD

Func
o
es

46

Generalizao do princpio
Use a generalizao do princpio da Casa de Pombo para mostrar que num
grupo de 85 pessoas, a primeira letra dos nomes de pelo menos quatro pessoas a mesma.
85 > 3 26 = 78. Logo, a letra inicial dos nomes de pelo menos quatro
pessoas a mesma.
O mesmo resultado pode ser dado usando a forma contrapositiva e a negao.
Suponha que no existam quatro pessoas que tm a mesma letra inicial no
primeiro nome. Assim, no mximo trs pessoas tm a mesma letra. Pela
forma contrapositiva da generalizao do princpio da Casa de Pombo isto
implica num total de 3 26 = 78 pessoas. Mas isto uma contradio pois
existem 85 pessoas. Logo, pelo menos quatro pessoas tm a mesma letra
inicial no primeiro nome.

UFMG/ICEx/DCC

MD

Func
o
es

47

Princpio da Casa de Pombo


Definio (conjunto finito): Um conjunto X finito sse o conjunto vazio ou
existe uma correspondncia um-para-um do conjunto {1, 2, . . . , n} para X,
onde n um inteiro positivo. No primeiro caso, o nmero de elementos zero
e no segundo caso n. Um conjunto que no finito chamado de infinito.
Teorema (O princpio da Casa de Pombo):
Para qualquer funo f de um conjunto finito X para um conjunto finito Y , se
a cardinalidade de X maior que a de Y ento f no injetiva.
Teorema:
Sejam X e Y conjuntos finitos com o mesmo nmero de elementos e suponha
que f uma funo de X para Y . Ento f injetiva sse f sobrejetiva. (f
uma funo sobrejetiva sse para todo y Y possvel achar um x X tal que f (x) = y.)

UFMG/ICEx/DCC

MD

Func
o
es

48

Composio de funes
Definio (composio de funes): Sejam f : X Y 0 e g : Y Z funes
com a propriedade que a faixa de f um subconjunto do domnio de g, i.e.,
Y 0 Y . Defina uma nova funo g f : X Z da seguinte forma:
(g f )(x) = g(f (x)), x X.
A funo g f chamada de composio de f e g.
Exemplo:
f : Z Z, f (n) = n + 1.
g : Z Z, g(n) = n2.
?

f g = g f.
(g f )(n) = g(f (n)) = g(n + 1) = (n + 1)2, n Z
(f g)(n) = f (g(n)) = f (n2) = n2 + 1, n Z
.
. . f g 6= g f.
UFMG/ICEx/DCC

MD

Func
o
es

49

Composio com a funo identidade


f ix = f (ix) = f (x),
onde ix a funo identidade.
ix f = ix(f (x)) = f (x),
onde ix a funo identidade.
Teorema:
Se f uma funo de X para Y , e ix a funo identidade em X e iy a
funo identidade em Y , ento
f ix = f
iy f = f
Teorema:
Se f : X Y uma funo bijetiva com funo inversa f 1 : Y X,
ento
f 1 f = ix
f f 1 = iy
UFMG/ICEx/DCC

MD

Func
o
es

50

Composio de funo injetiva e funo


sobrejetiva
Teorema:
Se f : X Y e g : Y Z so funes injetiva, ento g f injetiva.
Teorema:
Se f : X Y e g : Y Z so funes sobrejetiva, ento g f sobrejetiva.

UFMG/ICEx/DCC

MD

Func
o
es

51

Cardinalidade de conjuntos
Definio (mesma cardinalidade): Sejam A e B quaisquer conjuntos. A tem
a mesma cardinalidade de B sse existe uma correspondncia um-para-um
de A para B. Em outras palavras, A tem a mesma cardinalidade que B sse
existe uma funo f de A para B que injetiva e sobrejetiva (i.e., bijetiva).
Teorema:
Para todos os conjuntos A, B e C,
(a) A tem a mesma cardinalidade que A.
propriedade reflexiva da cardinalidade.
(b) Se A tem a mesma cardinalidade que B, ento B tem a mesma cardinalidade que A.
propriedade simtrica da cardinalidade.
(c) Se A tem a mesma cardinalidade que B, e B tem a mesma cardinalidade
que C ento A tem a mesma cardinalidade que C.
propriedade transitiva da cardinalidade.
Definio (mesma cardinalidade): A e B tm a mesma cardinalidade sse, A
tem a mesma cardinalidade que B ou B tem a mesma cardinalidade que A.
UFMG/ICEx/DCC

MD

Func
o
es

52

Conjuntos contveis
Definio (conjunto contvel infinito): Um conjunto chamado contvel infinito
sse ele possui a mesma cardinalidade do conjunto dos inteiros positivos Z+.
Um conjunto chamado contvel sse finito ou contvel infinito. Um conjunto
que no contvel chamado de incontvel.
Exemplo: Mostre que o conjunto Z, conjunto de todos os inteiros contvel.
0
1
1
2
2
...

...

1
2
3
4
5
...

Exemplo: O conjunto de todos os nmeros racionais positivos so contveis.

UFMG/ICEx/DCC

MD

Func
o
es

53

Conjuntos contveis
Teorema:
O conjunto de todos os nmeros reais entre 0 e 1 incontvel.
Teorema:
Qualquer subconjunto de um conjunto contvel contvel.
Exemplo: O conjunto de todos os nmeros reais tem a mesma cardinalidade
que o conjunto dos nmeros reais entre 0 e 1.
Exemplo: O conjunto de todos os programas de computador numa dada linguagem de programao contvel.

UFMG/ICEx/DCC

MD

Func
o
es

54

Como medir o custo de execuo de um algoritmo?


Funo de Custo ou Funo de Complexidade
f (n) = medida de custo necessrio para executar um algoritmo para um
problema de tamanho n.
Se f (n) uma medida da quantidade de tempo necessrio para executar
um algoritmo em um problema de tamanho n, ento f chamada funo
de complexidade de tempo de algoritmo.
Se f (n) uma medida da quantidade de memria necessria para executar um algoritmo em um problema de tamanho n, ento f chamada
funo de complexidade de espao de algoritmo.
Observao: tempo no tempo!
importante ressaltar que a complexidade de tempo na realidade no representa tempo diretamente, mas o nmero de vezes que determinada
operao considerada relevante executada.

UFMG/ICEx/DCC

MD

Func
o
es

55

Custo assinttico de funes


interessante comparar algoritmos para valores grandes de n.
O custo assinttico de uma funo f (n) representa o limite do comportamento de custo quando n cresce.
Em geral, o custo aumenta com o tamanho n do problema.
Observao:
Para valores pequenos de n, mesmo um algoritmo ineficiente no custa
muito para ser executado.

UFMG/ICEx/DCC

MD

Func
o
es

56

Notao assinttica de funes


Existem trs notaes principais na anlise assinttica de funes:
Notao .
Notao O (O grande).
Notao (mega grande).

UFMG/ICEx/DCC

MD

Func
o
es

57

Notao

f (n) = (g(n))

UFMG/ICEx/DCC

MD

Func
o
es

58

Notao
A notao limita a funo por fatores constantes.
Escreve-se f (n) = (g(n)), se existirem constantes positivas c1, c2 e n0
tais que para n n0, o valor de f (n) est sempre entre c1g(n) e c2g(n)
inclusive.
Pode-se dizer que g(n) um limite assinttico firme (em ingls, asymptotically tight bound) para f (n).
f (n) = (g(n)),
c1 > 0, c2 > 0, n0, | 0 c1g(n) f (n) c2g(n), n n0

Observe que a notao define um conjunto de funes:


(g(n)) =
{f : N R+ | c1 > 0, c2 > 0, n0, 0 c1g(n) f (n) c2g(n), n n0}.
UFMG/ICEx/DCC

MD

Func
o
es

59

Notao : Exemplo 1
1 n2 3n = (n2 ).
Mostre que 2

Para provar esta afirmao, devemos achar constantes c1 > 0, c2 > 0, n > 0,
tais que:
1
c1n2 n2 3n c2n2
2
para todo n n0.
Se dividirmos a expresso acima por n2 temos:
1 3
c1 c2 .
2 n

UFMG/ICEx/DCC

MD

Func
o
es

60

Notao : Exemplo 1
A inequao mais a direita ser sempre vlida para qualquer valor de n 1 ao
1.
escolhermos c2 2
Da mesma forma, a inequao mais a esquerda ser sempre vlida para qual1.
quer valor de n 7 ao escolhermos c1 14
Assim, ao escolhermos c1 = 1/14, c2 = 1/2 e n0 = 7, podemos verificar que
1 n2 3n = (n2 ).
2
Note que existem outras escolhas para as constantes c1 e c2, mas o fato importante que a escolha existe.
2 3n.
Note tambm que a escolha destas constantes depende da funo 1
n
2

Uma funo diferente pertencente a (n2) ir provavelmente requerer outras


constantes.
UFMG/ICEx/DCC

MD

Func
o
es

61

Notao : Exemplo 2
Usando a definio formal de prove que 6n3 6= (n2).

UFMG/ICEx/DCC

MD

Func
o
es

62

Notao O

f (n) = O(g(n))

UFMG/ICEx/DCC

MD

Func
o
es

63

Notao O
A notao O define um limite superior para a funo, por um fator constante.
Escreve-se f (n) = O(g(n)), se existirem constantes positivas c e n0 tais
que para n n0, o valor de f (n) menor ou igual a cg(n).
Pode-se dizer que g(n) um limite assinttico superior (em ingls, asymptotically upper bound) para f (n).
f (n) = O(g(n)), c > 0, n0, | 0 f (n) cg(n), n n0.

Observe que a notao O define um conjunto de funes:


O(g(n)) = {f : N R+ | c > 0, n0, 0 f (n) cg(n), n n0}.

UFMG/ICEx/DCC

MD

Func
o
es

64

Notao O
Quando a notao O usada para expressar o tempo de execuo de um
algoritmo no pior caso, est se definindo tambm o limite (superior) do tempo
de execuo desse algoritmo para todas as entradas.
Por exemplo, o algoritmo de ordenao por insero (a ser estudado) O(n2)
no pior caso.
Este limite se aplica para qualquer entrada.

UFMG/ICEx/DCC

MD

Func
o
es

65

Notao O
Tecnicamente um abuso dizer que o tempo de execuo do algoritmo de
ordenao por insero O(n2) (i.e., sem especificar se para o pior caso,
melhor caso, ou caso mdio):
O tempo de execuo desse algoritmo depende de como os dados de
entrada esto arranjados.
Se os dados de entrada j estiverem ordenados, este algoritmo tem um
tempo de execuo de O(n), ou seja, o tempo de execuo do algoritmo
de ordenao por insero no melhor caso O(n).
O que se quer dizer quando se fala que o tempo de execuo O(n2)
que no pior caso o tempo de execuo O(n2).
Ou seja, no importa como os dados de entrada esto arranjados, o tempo
de execuo em qualquer entrada O(n2).

UFMG/ICEx/DCC

MD

Func
o
es

66

Notao

f (n) = (g(n))

UFMG/ICEx/DCC

MD

Func
o
es

67

Notao
A notao define um limite inferior para a funo, por um fator constante.
Escreve-se f (n) = (g(n)), se existirem constantes positivas c e n0 tais
que para n n0, o valor de f (n) maior ou igual a cg(n).
Pode-se dizer que g(n) um limite assinttico inferior (em ingls, asymptotically lower bound) para f (n).
f (n) = (g(n)), c > 0, n0, |0 cg(n) f (n), n n0.

Observe que a notao define um conjunto de funes:


(g(n)) = {f : N R+ | c > 0, n0, |0 cg(n) f (n), n n0}.

UFMG/ICEx/DCC

MD

Func
o
es

68

Notao
Quando a notao usada para expressar o tempo de execuo de um algoritmo no melhor caso, est se definindo tambm o limite (inferior) do tempo
de execuo desse algoritmo para todas as entradas.
Por exemplo, o algoritmo de ordenao por insero (n) no melhor
caso.
O tempo de execuo do algoritmo de ordenao por insero (n).
O que significa dizer que o tempo de execuo (i.e., sem especificar se
para o pior caso, melhor caso, ou caso mdio) (g(n))?
O tempo de execuo desse algoritmo pelo menos uma constante vezes
g(n) para valores suficientemente grandes de n.

UFMG/ICEx/DCC

MD

Func
o
es

69

Limites do algoritmo de ordenao por insero


O tempo de execuo do algoritmo de ordenao por insero est entre
(n) e O(n2).
Estes limites so assintoticamente os mais firmes possveis.
Por exemplo, o tempo de execuo deste algoritmo no (n2), pois o
algoritmo executa em tempo (n) quando a entrada j est ordenada.
No contraditrio dizer que o tempo de execuo deste algoritmo no pior
caso (n2), j que existem entradas para este algoritmo que fazem com
que ele execute em tempo (n2).

UFMG/ICEx/DCC

MD

Func
o
es

70

Funes de custo (no de comparaes) do


algoritmo de ordenao por Insero

UFMG/ICEx/DCC

MD

Func
o
es

71

Funes de custo e notaes assintticas do


algoritmo de ordenao por Insero

Pior Caso:

cPior Caso (n) =

Caso Mdio:

n2
2

n2
4

n
2

3n
4

cCaso Medio (n) = +


1 =

Melhor caso:

c
(n) = n 1
=

Melhor Caso

n2

n2

O indica a notao normalmente usada para esse caso.

UFMG/ICEx/DCC

MD

Func
o
es

72

Teorema
Para quaisquer funes f (n) e g(n),
f (n) = (g(n))
se e somente se,
f (n) = O(g(n)) e f (n) = (g(n))

UFMG/ICEx/DCC

MD

Func
o
es

73

Mais sobre notao assinttica de funes


Existem duas outras notaes na anlise assinttica de funes:
Notao o (o pequeno).
Notao (mega pequeno).
Estas duas notaes no so usadas normalmente, mas importante saber
seus conceitos e diferenas em relao s notaes O e , respectivamente.

UFMG/ICEx/DCC

MD

Func
o
es

74

Notao o
O limite assinttico superior definido pela notao O pode ser assintoticamente firme ou no.
Por exemplo, o limite 2n2 = O(n2) assintoticamente firme, mas o limite
2n = O(n2) no .
A notao o usada para definir um limite superior que no assintoticamente firme.
Formalmente a notao o definida como:
f (n) = o(g(n)), c > 0 e n0 | 0 f (n) < cg(n), n n0
Exemplo, 2n = o(n2) mas 2n2 6= o(n2).

UFMG/ICEx/DCC

MD

Func
o
es

75

Notao o
As definies das notaes O (o grande) e o (o pequeno) so similares.
A diferena principal que em f (n) = O(g(n)), a expresso
0 f (n) cg(n)
vlida para pelo menos uma constante c > 0.
Intuitivamente, a funo f (n) tem um crescimento muito menor que g(n)
quando n tende para infinito. Isto pode ser expresso da seguinte forma:
f (n)
lim
=0
n g(n)
Alguns autores usam este limite como a definio de o.

UFMG/ICEx/DCC

MD

Func
o
es

76

Notao
Por analogia, a notao est relacionada com a notao da mesma forma
que a notao o est relacionada com a notao O.
Formalmente a notao definida como:
f (n) = (g(n)), c > 0 e n0 | 0 cg(n) < f (n), n n0
2
2
n
n
Por exemplo, 2 = (n), mas 2 6= (n2).

A relao f (n) = (g(n)) implica em


f (n)
= ,
n g(n)
lim

se o limite existir.

UFMG/ICEx/DCC

MD

Func
o
es

77

Classes de comportamento assinttico


Complexidade constante
f (n) = O(1)
O uso do algoritmo independe do tamanho de n.
As instrues do algoritmo so executadas um nmero fixo de vezes.
O que significa um algoritmo ser O(2) ou O(5)?

UFMG/ICEx/DCC

MD

Func
o
es

78

Classes de comportamento assinttico


Complexidade logartmica
f (n) = O(log n)
Ocorre tipicamente em algoritmos que resolvem um problema
transformando-o em problemas menores.
Nestes casos, o tempo de execuo pode ser considerado como sendo
menor do que uma constante grande.
Exemplo, supondo que a base do logaritmo seja 2:
Para n = 1 000, log2 10.
Para n = 1 000 000, log2 20.
Algoritmo de pesquisa binria.

UFMG/ICEx/DCC

MD

Func
o
es

79

Classes de comportamento assinttico


Complexidade linear
f (n) = O(n)
Em geral, um pequeno trabalho realizado sobre cada elemento de entrada.
Esta a melhor situao possvel para um algoritmo que tem que processar
n ou produzir n elementos de sada.
Cada vez que n dobra de tamanho, o tempo de execuo tambm dobra.
Exemplo:
Algoritmo de pesquisa sequencial.
Algoritmo para teste de planaridade de um grafo.

UFMG/ICEx/DCC

MD

Func
o
es

80

Classes de comportamento assinttico


Complexidade linear logartmica
f (n) = O(n log n)
Este tempo de execuo ocorre tipicamente em algoritmos que resolvem
um problema quebrando-o em problemas menores, resolvendo cada um
deles independentemente e depois agrupando as solues.
Caso tpico dos algoritmos baseados no paradigma diviso-e-conquista.
Exemplo, supondo que a base do logaritmo seja 2:
Para n = 1 000 000, log2 20 000 000.
Para n = 2 000 000, log2 42 000 000.
Algoritmo de ordenao MergeSort.

UFMG/ICEx/DCC

MD

Func
o
es

81

Classes de comportamento assinttico


Complexidade quadrtica
f (n) = O(n2)
Algoritmos desta ordem de complexidade ocorrem quando os itens de dados so processados aos pares, muitas vezes em um anel dentro do outro.
Exemplo:
Para n = 1 000, o nmero de operaes da ordem de 1 000 000.
Sempre que n dobra o tempo de execuo multiplicado por 4.
Algoritmos deste tipo so teis para resolver problemas de tamanhos relativamente pequenos.
Algoritmos de ordenao simples como seleo e insero.

UFMG/ICEx/DCC

MD

Func
o
es

82

Classes de comportamento assinttico


Complexidade cbica
f (n) = O(n3)
Algoritmos desta ordem de complexidade geralmente so teis apenas
para resolver problemas relativamente pequenos.
Exemplo:
Para n = 100, o nmero de operaes da ordem de 1 000 000.
Sempre que n dobra o tempo de execuo multiplicado por 8.
Algoritmos deste tipo so teis para resolver problemas de tamanhos relativamente pequenos.
Algoritmo para multiplicao de matriz.

UFMG/ICEx/DCC

MD

Func
o
es

83

Classes de comportamento assinttico


Complexidade exponencial
f (n) = O(2n)
Algoritmos desta ordem de complexidade no so teis sob o ponto de
vista prtico.
Eles ocorrem na soluo de problemas quando se usa a fora bruta para
resolv-los.
Exemplo:
Para n = 20, o tempo de execuo cerca de 1 000 000
Sempre que n dobra o tempo de execuo fica elevado ao quadrado.
Algoritmo do Caixeiro Viajante.

UFMG/ICEx/DCC

MD

Func
o
es

84

Hierarquias de funes
A seguinte hierarquia de funes pode ser definida do ponto de vista assinttico:
n

c
log
n
n
n
c
1 log log n log n n n n
c n c

onde  e c so constantes arbitrrias com 0 <  < 1 < c.

UFMG/ICEx/DCC

MD

Func
o
es

85

Hierarquias de funes
Usando MatLab, ou um outro pacote matemtico/software grfico, desenhe
os grficos dessas funes, quando n .

UFMG/ICEx/DCC

MD

Func
o
es

86

Hierarquias de funes
Onde as seguintes funes se encaixam nessa hierarquia?
(a) (n) = lnnn . Esta funo define o nmero de primos menor ou igual a n.

(b) e log n.
Dica: ef (n) eg(n) limn(f (n) g(n)) = .

UFMG/ICEx/DCC

MD

Func
o
es

87

Hierarquias de funes
Preliminares
A hierarquia apresentada est relacionada com funes que vo para o infinito.
No entanto, podemos ter o oposto dessas funes j que elas nunca so zero.
Isto ,
1
1

.
f (n) g(n)
g(n)
f (n)
Assim, todas as funes (exceto 1) tendem para zero:
1
1
1
1
1
1
1
1

1
n n n log n c 
cc
n
c
n
n
n
log n
log log n

UFMG/ICEx/DCC

MD

Func
o
es

88

Hierarquias de funes
Soluo de (a)
(n) = lnnn
Temos que (note que a base do logaritmo no altera a hierarquia):
1
1
1


n
ln n
Multiplicando por n, temos:
n
n

n,
n
ln n
ou seja,
n1 (n) n
Note que o valor 1  ainda menor que 1.

UFMG/ICEx/DCC

MD

Func
o
es

89

Hierarquias de funes
Soluo de (b)

e log n
Dado a hierarquia:
1 ln ln n

ln n  ln n

e elevando a e, temos que:

1
ln
ln
n
e e
e ln n e ln n

Simplificando temos:

e ln n e ln n n

UFMG/ICEx/DCC

MD

Func
o
es

90

Algoritmo exponencial Algoritmo polinomial


Funes de complexidade:
Um algoritmo cuja funo de complexidade O(cn), c > 1, chamado de
algoritmo exponencial no tempo de execuo.
Um algoritmo cuja funo de complexidade O(p(n)), onde p(n) um
polinmio de grau n, chamado de algoritmo polinomial no tempo de execuo.
A distino entre estes dois tipos de algoritmos torna-se significativa quando
o tamanho do problema a ser resolvido cresce.
Essa a razo porque algoritmos polinomiais so muito mais teis na prtica
do que algoritmos exponenciais.
Geralmente, algoritmos exponenciais so simples variaes de pesquisa
exaustiva.

UFMG/ICEx/DCC

MD

Func
o
es

91

Algoritmo exponencial Algoritmo polinomial


Os algoritmos polinomiais so geralmente obtidos atravs de um entendimento mais profundo da estrutura do problema.
Tratabilidade dos problemas:
Um problema considerado intratvel se ele to difcil que no se conhece um algoritmo polinomial para resolv-lo.
Um problema considerado tratvel (bem resolvido) se existe um algoritmo polinomial para resolv-lo.
Aspecto importante no projeto de algoritmos.

UFMG/ICEx/DCC

MD

Func
o
es

92

Objetos recursivos
Um objeto recursivo quando definido parcialmente em termos de si
mesmo.
Exemplo 1: Nmeros naturais:
(a) 1 um nmero natural.
(b) o sucessor de um nmero natural um nmero natural.
Exemplo 2: Funo fatorial:
(a) 0! = 1.
(b) se n > 0 ento n! = n (n 1)!

UFMG/ICEx/DCC

MD

Func
o
es

93

Objetos recursivos
Exemplo 3: rvores.
(a) A rvore vazia uma rvore.
(b) se T1 e T2 so rvores ento T 0 um rvore.


T 0 






T
T
T
TT


T1  T2 

UFMG/ICEx/DCC

MD

Func
o
es

94

Objetos recursivos: Exemplos

UFMG/ICEx/DCC

MD

Func
o
es

95

Objetos recursivos: Exemplos

UFMG/ICEx/DCC

MD

Func
o
es

96

Poder da recurso
Definir um conjunto infinito de objetos atravs de um comando finito.
Um problema recursivo P pode ser expresso como P P[Si, P ], onde P
a composio de comandos Si e do prprio P .
Importante: constantes e variveis locais a P so duplicadas a cada chamada
recursiva.

UFMG/ICEx/DCC

MD

Func
o
es

97

Problema de terminao
Definir um condio de terminao.
Idia:
Associar um parmetro, por exemplo n, com P e chamar P recursivamente
com n 1 como parmetro.
A condio n > 0 garante a terminao.
Exemplo:
P (n) if n > 0 then P[Si; P (n 1)].
Importante: na prtica necessrio:
mostrar que o nvel de recurso finito, e
tem que ser mantido pequeno! Por que?

UFMG/ICEx/DCC

MD

Func
o
es

98

Razes para limitar a recurso


Memria necessria para acomodar variveis a cada chamada.
O estado corrente da computao tem que ser armazenado para permitir a
volta da chamada recursiva.
Exemplo:
FATORIAL(n)
1
2
3
4

FATORIAL(4)

 F : varivel auxiliar
if n > 0
then F n FATORIAL(n 1)
else F 1
return F

UFMG/ICEx/DCC

MD

Func
o
es

1
2
3
4
1

4FATORIAL(3)
3FATORIAL(2)
2FATORIAL(1)
1FATORIAL(0)

99

Quando no usar recursividade


Algoritmos recursivos so apropriados quando o problema definido em termos recursivos.
Entretanto, uma definio recursiva no implica necessariamente que a implementao recursiva a melhor soluo!
Casos onde evitar recursividade:
P if condio then (Si; P )
}|
{
z
Exemplo: P if i < n then (i := i + 1; F := iF ; P )

UFMG/ICEx/DCC

MD

Func
o
es

100

Eliminando a recursividade de Cauda


(Tail recursion)
FATORIAL(n)
1
2
3
4
5
6

 F , i: variveis auxiliares
i0
F 1
while i < n
do i i + 1
F F i
return F

Logo,
P if B then (S; P )
deve ser transformado em
P (x = x0; while B do S).

UFMG/ICEx/DCC

MD

Func
o
es

101

Outro exemplo
F IB(A)
1
2
3
4
5
6

s
5,,l

 F : varivel auxiliar
if n = 0
then F 0
else if n = 1
then F 1
else F FIB(n 1) + (n 2)
return F

,
,
,
,
s
4
J,

Observao: para cada chamada a


F IB(n), F IB ativada 2 vezes

UFMG/ICEx/DCC

MD

B
 B
 B

B

B
s
Bs
B
 B
 B

B

B
Bs
s

Func
o
es

l
l
l
l

J
J
J
J
Js
B
 B
 B

B

B
s
Bs

l
l
ls
B
 B
 B

B

B
s
Bs
B
 B
 B

B

B
s
Bs

102

Soluo bvia
F IB(n)
1
2
3
4
5
6
7
8
9

 F , Fant, i, Temp: variveis auxiliares


i1
F 1
Fant 0
while i < n
do Temp F
F F + Fant
Fant Temp
ii+1
return F

Complexidade de tempo: T (n) = n 1.


Complexidade de espao: E(n) = O(1).

UFMG/ICEx/DCC

MD

Func
o
es

103

Comentrios sobre recursividade


Evitar o uso de recursividade quando existe uma soluo bvia por iterao!
Exemplos:
Fatorial.
Srie de Fibonacci.

UFMG/ICEx/DCC

MD

Func
o
es

104

Anlise de algoritmos recursivos


Comportamento descrito por uma equao (funo) de recorrncia.
Enfoque possvel:
Usar a prpria recorrncia para substituir para T (m), m < n at que todos
os termos tenham sido substitudos por frmulas envolvendo apenas T (0)
ou o caso base.

UFMG/ICEx/DCC

MD

Func
o
es

105

Anlise da funo FATORIAL


Seja a seguinte funo para calcular o fatorial de n:
FATORIAL(n)
1
2
3
4

 F : varivel auxiliar
if n > 0
then F n FATORIAL(n 1)
else F 1
return F

Seja a seguinte equao de recorrncia para esta funo:


(

T (n) =

d
n = 1
c + T (n 1) n > 1

Esta equao diz que quando n = 1 o custo para executar FATORIAL igual a
d. Para valores de n maiores que 1, o custo para executar FATORIAL c mais o
custo para executar T (n 1).

UFMG/ICEx/DCC

MD

Func
o
es

106

Resolvendo a equao de recorrncia


Em cada passo, o valor do termo T
substitudo pela sua definio (ou
seja, esta recorrncia est sendo resolvida pelo mtodo da expanso). A
ltima equao mostra que depois da
expanso existem n 1 cs, correspondentes aos valores de 2 at n.
Desta forma, a recorrncia pode ser
expressa como:

Esta equao de recorrncia pode ser


expressa da seguinte forma:

T (n) = c + T (n 1)
= c + (c + T (n 2))
= c + c + (c + T (n 3))
... = ...
= c + c + + (c + T (1))
= c| + c +{z + c} +d

T (n) = c(n 1) + d = O(n).

n1

UFMG/ICEx/DCC

MD

Func
o
es

107

Alguns somatrios teis


n
X

k
X

ak+1 1
i
a =
(a 6= 1)

n(n + 1)
i=
2
i=1

i=0

k
X

n
X

2k = 2k+1 1

i=0

i=1

a1

n(n + 1)(2n + 1)
2
i =
6

k
X
1
1
=2 k
i
2
2
i=0

UFMG/ICEx/DCC

MD

Func
o
es

108

Algumas recorrncias bsicas: Caso 1


Resolvendo por expanso temos:
T (n) = T ( n
2 ) + 1 (n 2)
T (1) = 0
(n = 1)

T (2k ) =
=
=
...
=
=
=

Vamos supor que:


n = 2k k = log n

T (2k1 ) + 1
(T (2k2 ) + 1) + 1
(T (2k3 ) + 1) + 1 + 1
...
(T (2) + 1) + 1 + + 1
(T (1) + 1) + 1 + + 1
0 + |1 + {z
+ 1}
k

= k
T (n) = log n
T (n) = O(log n)

UFMG/ICEx/DCC

MD

Func
o
es

109

Algumas recorrncias bsicas: Caso 2


T (n) = 2T ( n2 ) + n (n 2)
T (1) = 0
(n = 1)

Vamos supor que n = 2k k = log n. Resolvendo por expanso temos:


T (2k ) =
=
=
...
=
=
=

2T (2k1 ) + 2k
2(2T (2k2 ) + 2k1 ) + 2k
2(2(2T (2k3 ) + 2k2 ) + 2k1 ) + 2k
...
2(2( (2(2T (1) + 22 ) + 23 ) + ) + 2k1 ) + 2k
(k 1)2k + 2k
k2k

T (n) = n log n
T (n) = O(n log n)

UFMG/ICEx/DCC

MD

Func
o
es

110

Teorema Mestre
Recorrncias da forma

T (n) = aT ( nb ) + f (n),
onde a 1 e b > 1 so constantes e f (n) uma funo assintoticamente positiva podem ser resolvidas usando o Teorema Mestre. Note que neste caso no
estamos achando a forma fechada da recorrncia mas sim seu comportamento
assinttico.

UFMG/ICEx/DCC

MD

Func
o
es

111

Teorema Mestre
Sejam as constantes a 1 e b > 1 e f (n) uma funo definida nos inteiros
no-negativos pela recorrncia:
T (n) = aT ( nb ) + f (n),
onde a frao n/b pode significar bn/bc ou dn/be. A equao de recorrncia
T (n) pode ser limitada assintoticamente da seguinte forma:
1. Se f (n) = O(nlogb a) para alguma constante  > 0,
ento T (n) = (nlogb a) .
2. Se f (n) = (nlogb a), ento T (n) = (nlogb a log n) .
3. Se f (n) = (nlogb a+) para alguma constante  > 0 e se af (n/b)
cf (n) para alguma constante c < 1 e para n suficientemente grande,
ento T (n) = (f (n)) .

UFMG/ICEx/DCC

MD

Func
o
es

112

Comentrios sobre o teorema Mestre


Nos trs casos estamos comparando a funo f (n) com a funo nlogb a.
Intuitivamente, a soluo da recorrncia determinada pela maior das duas
funes.
Por exemplo:
No primeiro caso a funo nlogb a a maior e a soluo para a recorrncia
T (n) = (nlogb a).
No terceiro caso, a funo f (n) a maior e a soluo para a recorrncia
T (n) = (f (n)).
No segundo caso, as duas funes so do mesmo tamanho. Neste caso,
a soluo fica multiplicada por um fator logartmico e fica da forma T (n) =
(nlogb a log n) = (f (n) log n).

UFMG/ICEx/DCC

MD

Func
o
es

113

Tecnicalidades sobre o teorema Mestre


No primeiro caso, a funo f (n) deve ser no somente menor que nlogb a
mas ser polinomialmente menor. Ou seja, f (n) deve ser assintoticamente
menor que nlogb a por um fator de n, para alguma constante  > 0.
No terceiro caso, a funo f (n) deve ser no somente maior que nlogb a
mas ser polinomialmente maior e satisfazer a condio de regularidade que
af (n/b) cf (n). Esta condio satisfeita pela maior parte das funes
polinomiais encontradas neste curso.

UFMG/ICEx/DCC

MD

Func
o
es

114

Tecnicalidades sobre o teorema Mestre


Teorema no cobre todas as possibilidades para f (n):
Entre os casos 1 e 2 existem funes f (n) que so menores que nlogb a
mas no so polinomialmente menores.
Entre os casos 2 e 3 existem funes f (n) que so maiores que nlogb a
mas no so polinomialmente maiores.
Se a funo f (n) cai numa dessas condies ou a condio de regularidade do caso 3 falsa, ento no se pode aplicar este teorema para
resolver a recorrncia.

UFMG/ICEx/DCC

MD

Func
o
es

115

Uso do teorema: Exemplo 1


T (n) = 9T ( n
3 ) + n.
Temos que,
a = 9, b = 3, f (n) = n
Desta forma,
nlogb a = nlog3 9 = (n2)
Como f (n) = O(nlog3 9), onde  = 1, podemos aplicar o caso 1 do teorema
e concluir que a soluo da recorrncia
T (n) = (n2).

UFMG/ICEx/DCC

MD

Func
o
es

116

Uso do teorema: Exemplo 2


T (n) = T ( 2n
3 ) + 1.
Temos que,
a = 1, b = 3/2, f (n) = 1
Desta forma,
log3/2 1

nlogb a = n

= n0 = 1

O caso 2 se aplica j que f (n) = (nlogb a) = (1). Temos, ento, que a


soluo da recorrncia
T (n) = (log n).

UFMG/ICEx/DCC

MD

Func
o
es

117

Uso do teorema: Exemplo 3


T (n) = 3T ( n
4 ) + n log n
Temos que,
a = 3, b = 4, f (n) = n log n.
Desta forma,
nlogb a = nlog4 3 = O(n0.793).
Como f (n) = (nlog4 3+), onde  0.2, o caso 3 se aplica se mostrarmos
que a condio de regularidade verdadeira para f (n).

UFMG/ICEx/DCC

MD

Func
o
es

118

Uso do teorema: Exemplo 3


Para um valor suficientemente grande de n:
n ) ( 3 )n log n = cf (n).
)
log(
af ( nb ) = 3( n
4
4
4

para c = 3
4 . Consequentemente, usando o caso 3, a soluo para a recorrncia

T (n) = (n log n).

UFMG/ICEx/DCC

MD

Func
o
es

119

Uso do teorema: Exemplo 4


T (n) = 2T ( n
2 ) + n log n.
Temos que,
a = 2, b = 2, f (n) = n log n.
Desta forma,
nlogb a = n
Aparentemente o caso 3 deveria se aplicar j que f (n) = n log n assintoticamente maior que nlogb a = n. Mas no entanto, no polinomialmente maior.
A frao f (n)/nlogb a = (n log n)/n = log n que assintoticamente menor
que n para toda constante positiva . Consequentemente, a recorrncia cai na
situao entre os casos 2 e 3 onde o teorema no pode ser aplicado.

UFMG/ICEx/DCC

MD

Func
o
es

120

Uso do teorema: Exerccio 5


T (n) = 4T ( n
2 ) + n.

UFMG/ICEx/DCC

MD

Func
o
es

121

Uso do teorema: Exerccio 6


2
T (n) = 4T ( n
2) + n .

UFMG/ICEx/DCC

MD

Func
o
es

122

Uso do teorema: Exerccio 7


3
T (n) = 4T ( n
2) + n .

UFMG/ICEx/DCC

MD

Func
o
es

123

Uso do teorema: Exerccio 8


O tempo de execuo de um algoritmo A descrito pela recorrncia
2.
)
+
n
T (n) = 7T ( n
2

Um outro algoritmo A0 tem um tempo de execuo descrito pela recorrncia


2.
T 0(n) = aT 0( n
)
+
n
4

Qual o maior valor inteiro de a tal que A0 assintoticamente mais rpido que
A?

UFMG/ICEx/DCC

MD

Func
o
es

124

Notao assinttica em funes


Normalmente, a notao assinttica usada em frmulas matemticas. Por
exemplo, usando a notao O pode-se escrever que n = O(n2). Tambm
pode-se escrever que
2n2 + 3n + 1 = 2n2 + (n).
Como se interpreta uma frmula como esta?

UFMG/ICEx/DCC

MD

Func
o
es

125

Notao assinttica em funes


Notao assinttica sozinha no lado direito de uma equao, como em
n = O(n2).
Sinal de igualdade significa que o lado esquerdo um membro do conjunto
O(n2);
n O(n2) ou n n2.
Nunca deve-se escrever uma igualdade onde a notao O aparece sozinha
com os lados trocados.
Caso contrrio, poderia se deduzir um absurdo como n2 = n de igualdades como em O(n2) = n.
Quando se trabalha com a notao O e em qualquer outra frmula que envolve quantidades no precisas, o sinal de igualdade unidirecional.
Da vem o fato que o sinal de igualdade ("=") realmente significa ou ,
usados para incluso de conjuntos

UFMG/ICEx/DCC

MD

Func
o
es

126

Notao assinttica em funes


Se uma notao assinttica aparece numa frmula, isso significa que essa notao est substituindo uma funo que no importante definir precisamente
(por algum motivo). Por exemplo, a equao
2n2 + 3n + 1 = 2n2 + (n)
significa que
2n2 + 3n + 1 = 2n2 + f (n)
onde f (n) alguma funo no conjunto (n). Neste caso, f (n) = 3n + 1
que de fato est em (n).

UFMG/ICEx/DCC

MD

Func
o
es

127

Notao assinttica em funes


O uso da notao assinttica desta forma ajuda a eliminar detalhes que no
so importantes. Por exemplo, pode-se expressar uma equao de recorrncia
como:
T (n) = 2T (n 1) + (n).
Se se deseja determinar o comportamento assinttico de T (n) ento no
necessrio determinar exatamente os termos de mais baixa ordem. Entende-se
que eles esto includos numa funo f (n) expressa no termo (n).

UFMG/ICEx/DCC

MD

Func
o
es

128

Notao assinttica em funes


Em alguns casos, a anotao assinttica aparece do lado esquerdo de uma
equao como em:
2n2 + (n) = (n2).
A interpretao de tais equaes deve ser feita usando a seguinte regra:
possvel escolher uma funo f (n) para o lado esquerdo da igualdade de
tal forma que existe uma funo g(n) para o lado direito que faz com que a
equao seja vlida.
O lado direito da igualdade define um valor no to preciso quanto o lado
esquerdo. Por exemplo,
2n2 + 3n + 1 = 2n2 + (n)
2n2 + (n) = (n2).

UFMG/ICEx/DCC

MD

Func
o
es

(1)
(2)

129

Notao assinttica em funes


As equaes (1) e (2) podem ser interpretadas usando a regra acima:
A equao (1) diz que existe alguma funo f (n) (n) tal que
2n2 + 3n + 1 = 2n2 + f (n)
para todo n.
A equao (2) diz que para qualquer funo g(n) (n), existe uma funo
h(n) (n2) tal que
2n2 + g(n) = h(n)
para todo n. Note que esta interpretao implica que 2n2 +3n+1 = (n2),
que o que estas duas equaes querem dizer.

UFMG/ICEx/DCC

MD

Func
o
es

130

Modelagem usando equao de recorrncia


Torre de Hanoi
Edouard Lucas (18421891), matemtico francs. Props o jogo Torre de Hanoi em 1883. Escreveu o trabalho de matemtica recreativa Rcrations Mathmatiques em quatro volumes (188294) que se tornou um clssico.

Configurao inicial:
O jogo comea com um conjunto de oito discos empilhados em tamanho
decrescente em uma das trs varetas.

UFMG/ICEx/DCC

MD

Func
o
es

131

Modelagem usando equao de recorrncia


Torre de Hanoi
Objetivo:
Transferir toda a torre para uma das outras varetas, movendo um disco de
cada vez, mas nunca movendo um disco maior sobre um menor.
Solues particulares:
Seja T (n) o nmero mnimo de movimentos para transferir n discos de
uma vareta para outra de acordo com as regras definidas no enunciado do
problema.
No difcil observar que:
T (0) = 0

[nenhum movimento necessrio]

T (1) = 1

[apenas um movimento]

T (2) = 3

[trs movimentos usando as duas varetas]

UFMG/ICEx/DCC

MD

Func
o
es

132

Modelagem usando equao de recorrncia


Torre de Hanoi
Generalizao da soluo:
Para trs discos, a soluo correta transferir os dois discos do topo para a
vareta do meio, transferir o terceiro disco para a outra vareta e, finalmente,
mover os outros dois discos sobre o topo do terceiro.
Para n discos:
1. Transfere-se os n 1 discos menores para outra vareta (por exemplo, a
do meio), requerendo T (n 1) movimentos.
2. Transfere-se o disco maior para a outra vareta (um movimento).
3. Transfere-se os n 1 discos menores para o topo do disco maior,
requerendo-se T (n 1) movimentos novamente.

UFMG/ICEx/DCC

MD

Func
o
es

133

Modelagem usando equao de recorrncia


Torre de Hanoi
Equao de recorrncia para este problema pode ser expressa por:
T (0) = 0
T (n) = 2T (n 1) + 1,

UFMG/ICEx/DCC

MD

Func
o
es

para n > 0

134

Modelagem usando equao de recorrncia


Torre de Hanoi
Para pequenos valores de n temos:
n

T (n)

15

31

63

Esta recorrncia pode ser expressa por


T (n) = 2n 1.

UFMG/ICEx/DCC

MD

Func
o
es

135

Modelagem usando equao de recorrncia


Torre de Hanoi
Provando por induo matemtica temos:
Caso base. Para n = 0 temos que T (0) = 20 1 = 0, que o valor presente
na equao de recorrncia.
Induo. Vamos supor que a forma fechada seja vlida para todos os valores
at n = k, i.e., T (k) = 2k 1. Vamos provar que esta forma fechada
vlida para n = k + 1, i.e., T (k + 1) = 2k+1 1.
T (k + 1) = 2T (k) + 1 = 2(2k 1) + 1 = 2k+1 2 + 1 = 2k+1 1.
... A forma fechada proposta tambm vlida para n.

UFMG/ICEx/DCC

MD

Func
o
es

136

Modelagem usando equao de recorrncia


Estratgia para resoluo da equao
A recorrncia da Torre de Hanoi aparece em vrias aplicaes de todos os tipos.
Normalmente, existem trs etapas para achar uma forma fechada para o valor
de T (n):
1. Analisar pequenos casos. Com isto podemos ter um entendimento melhor
do problema e, ao mesmo tempo, ajudar nos dois passos seguintes.
2. Achar e provar uma recorrncia para o valor de T (n).
3. Achar e provar uma forma fechada para a recorrncia.

UFMG/ICEx/DCC

MD

Func
o
es

137

Modelagem usando equao de recorrncia


Linhas no plano
Problema:
Qual o nmero mximo de regies Ln determinado por n retas no plano?
Lembre-se que um plano sem nenhuma reta tem uma regio, com uma reta
tem duas regies e com duas retas tm quatro regies.

1
2
4

L0 = 1
UFMG/ICEx/DCC

L1 = 2
MD

Func
o
es

L2 = 4
138

Modelagem usando equao de recorrncia


O nmero de Josephus
Durante os anos em que serviu no exrcito romano, Josephus vivia num alojamento com vrios outros soldados. Toda semana devia ser feita uma limpeza
geral que sempre tomava o dia todo. Os soldados decidiram entre si que toda
semana seria sorteado um soldado que no faria a limpeza. O sorteio seria
feito da seguinte forma: os soldados formariam um crculo, percorreriam o crculo no sentido horrio e cada segundo soldado seria escolhido para a limpeza.
O soldado que ficasse por ltimo seria o sorteado, ou seja, no participaria da
limpeza. Nos dias que Josephus queria tirar um dia de folga ele rapidamente
calculava onde ele deveria ficar nesse crculo, apenas conhecendo o nmero
total de soldados que participariam da limpeza naquele dia.

UFMG/ICEx/DCC

MD

Func
o
es

139

Modelagem usando equao de recorrncia


O nmero de Josephus
Por exemplo, suponha a configurao inicial com 12 soldados, conforme
figura ao lado.

12

11

Neste caso, na primeira rodada seriam selecionados os soldados 2, 4,


6, 8, 10 e 12, na segunda rodada os soldados 3, 7 e 11, e, finalmente
na terceira rodada os soldados 5 e 11, sendo que o soldado 9 seria o
sorteado.

10

5
8

6
7

1a rodada
6

12

2a rodada
21

11

42

5
4

63

37

10

42

5
4

UFMG/ICEx/DCC

21

9 11

10

12

3a rodada

63
8

MD

Func
o
es

12

11 1

21

9 11

37

10

42

5 10
4

63
8

140

Princpios para anlise de algoritmos


Tempo de execuo
1. Comando de Atribuio, Leitura, ou Escrita: O(1)
Excees: linguagens que permitem atribuies que envolvem vetores
de tamanho arbitrariamente grandes.
2. Sequncia de comandos:
Maior tempo de execuo de qualquer comando da sequncia.
3. Comando de deciso:
Avaliao da condio: O(1).
Comandos executados dentro do comando condicional: Regra 2.

UFMG/ICEx/DCC

MD

Func
o
es

141

Princpios para anlise de algoritmos


Tempo de execuo
4. Anel:
Avaliao da condio de terminao: O(1).
Comandos executados dentro do corpo do anel: Regra 2.
Os dois itens ficam multiplicados pelo nmero de iteraes do anel.
5. Programa com procedimentos no recursivos:
Tempo de execuo de cada procedimento deve ser computado separadamente um a um, iniciando com os procedimentos que no chamam
outros procedimentos.
Em seguida, devem ser avaliados os procedimentos que chamam os procedimentos que no chamam outros procedimentos, utilizando os tempos
dos procedimentos j avaliados.
Este processo repetido at chegar no programa principal.

UFMG/ICEx/DCC

MD

Func
o
es

142

Princpios para anlise de algoritmos


Tempo de execuo
6. Programa com procedimentos recursivos:
Para cada procedimento associada uma funo de complexidade f (n)
desconhecida, onde n mede o tamanho dos argumentos para o procedimento.
Obter e resolver a equao de recorrncia.

UFMG/ICEx/DCC

MD

Func
o
es

143

Operaes com a notao O

f (n) = O(f (n))


c O(f (n)) = O(f (n))

c = constante

O(f (n)) + O(f (n)) = O(f (n))


O(O(f (n)) = O(f (n))
O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
O(f (n))O(g(n)) = O(f (n)g(n))
f (n)O(g(n)) = O(f (n)g(n))

UFMG/ICEx/DCC

MD

Func
o
es

144

Operaes com a notao O


Duas operaes importantes:
Regra da soma: O(f (n)) + O(g(n))
Suponha trs trechos de programas cujos tempos de execuo so O(n),
O(n2) e O(n log n).
O tempo de execuo dos dois primeiros trechos O(max(n, n2)), que
O(n2).
O tempo de execuo de todos os trs trechos ento
O(max(n2, n log n)),
que O(n2).
Regra do produto: O(f (n))O(g(n))

Produto de [log n + k + O(1/n)] por [n + O( n)]

n log n + kn + O( n log n).

UFMG/ICEx/DCC

MD

Func
o
es

145