md 6funcoes.pdfpombo

145
Funções Antonio Alfredo Ferreira Loureiro [email protected] http://www.dcc.ufmg.br/~loureiro Olga Nikolaevna Goussevskaia [email protected] UFMG/ICEx/DCC MD · Func ¸o˜es 1

Upload: tulymar-costa

Post on 18-Dec-2015

255 views

Category:

Documents


0 download

DESCRIPTION

funções em matemática discreta voltada para computação

TRANSCRIPT

  • Funes

    Antonio Alfredo Ferreira [email protected]

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

    Olga Nikolaevna [email protected]

    UFMG/ICEx/DCC MD Funcoes 1

  • 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 complexidadeUFMG/ICEx/DCC MD Funcoes 2

  • Introduo

    Sejam dois conjuntos A e B. Suponha que cada elemento de A possa serassociado a um elemento especfico de B. A relao entre elementos de A eB chamada de funo.

    Funes so normalmente representadas por uma nica letra como, porexemplo, f , g, h, F , G. Funes especiais so denotadas por strings, comolog, exp e sin.

    UFMG/ICEx/DCC MD Funcoes 3

  • Introduo

    Definio: A funo f de um conjunto X para um conjunto Y uma rela-o entre elementos de X e elementos de Y com a propriedade que cadaelemento 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 Funcoes 4

  • 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:

    4

    f

    a

    bc

    123

    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}. 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 pa-res ordenados = {(a,2), (b,4), (c,2)}.

    UFMG/ICEx/DCC MD Funcoes 5

  • 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 Funcoes 6

  • Introduo

    Exemplos:Sejam f e g funes definidas para todo x R.(a) f(x) = |x| e g(x) =

    x2. f = g?

    Sim. |x| =x2, x R.

    (b) Sejam as funes

    f + g : R R eg + f : R R

    definidas como:(f + g)(x) = f(x) + g(x), x R e(g + f)(x) = g(x) + f(x), x R.

    f + g = g + f?

    (f + g)(x) = f(x) + g(x) definio de f + g= g(x) + f(x) comutatividade da adio= (g + f)(x) definio de g + f

    UFMG/ICEx/DCC MD Funcoes 7

  • Sequncias como funes

    Uma sequncia uma funo definida no conjunto dos inteiros a partir de umvalor especfico.

    Por exemplo, a sequncia1, 12, 13, 14, . . . ,

    (1)nn+1 , . . .

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

    0 11 122 13

    ...

    n (1)nn+1

    Formalmente, f : Z0 R, onde

    f(n) =(1)nn+ 1

    UFMG/ICEx/DCC MD Funcoes 8

  • Sequncias como funes

    A funo que define essa sequncia nica?No. Por exemplo, f : N R, onde

    f(n) =(1)n+1

    n

    UFMG/ICEx/DCC MD Funcoes 9

  • Funes de codificao/decodificao de bits

    Mensagens transmitidas atravs de canais de comunicao so frequente-mente codificadas de formas especiais para reduzir a possibilidade de seremcorrompidas devido interferncia de rudos nas linhas de transmisso.

    Uma possvel forma de codificao repetir cada bit trs vezes. Assim, amensagem

    00101111

    seria codificada como000000111000111111111111

    UFMG/ICEx/DCC MD Funcoes 10

  • Funes de codificao/decodificao de bits

    Seja = {0,1}. o conjunto de todos os strings que podem ser for-mados com 0 e 1. Seja L o conjunto de todos os strings formados de quepossuem triplas de bits idnticos.

    Funo de codificao:E : L, onde E(s) o string obtido de s trocando cada bit de s pelomesmo bit repetido trs vezes.

    Funo de decodificao:D : L , onde D(t) o string obtido de t trocando cada trs bits conse-cutivos 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 Funcoes 11

  • Funo da distncia de Hamming

    A funo da distncia de Hamming usada em Teoria da Informao. Essafuno fornece o nmero de bits que dois strings de tamanho n diferem posi-o a posio.

    Seja = {0,1} e n o conjunto de todos os strings de tamanho n. A funoH : n n Z+ definida da seguinte forma:

    Para cada par de strings (s, t) n n, H(s, t) o nmero deposies 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 Funcoes 12

  • Funes booleanas

    Definio: Uma funo Booleana f uma funo cujo domnio o conjuntode 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 oproduto 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 Funcoes 13

  • Funes booleanas

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

    Entrada Sadax1 x2 x3 (x1 + x2 + x3) mod 2

    0 0 0 0

    0 0 1 1

    0 1 0 1

    0 1 1 0

    1 0 0 1

    1 0 1 0

    1 1 0 0

    1 1 1 1

    UFMG/ICEx/DCC MD Funcoes 14

  • Verificando se uma funo bem-definida

    Seja uma funo f definida do conjunto dos racionais para o conjunto dosinteiros, ou seja, f : Q Z, sendo que

    f :m

    n m, inteiros m, n e n 6= 0

    A funo f bem-definida? No.

    12 =

    36

    ... f(12) = f(

    36)

    Mas,

    f(12) = 1

    f(36) = 3

    ... f(12) 6= f(36)

    UFMG/ICEx/DCC MD Funcoes 15

  • Funo Estado Os problemas em Cincia da Computao podem ser vistos, de uma forma

    geral, conforme o diagrama abaixo:

    ModeloComputacionaldo Problema

    -Entrada 1

    -Entrada n

    ...

    -Sada 1

    -Sada m

    ...

    Em muitos casos, os valores das sadas dependem no somente dos valoresda entrada, mas tambm do estado corrente do sistema. Neste caso, a sadano 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 Funcoes 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 dis-cretas.

    O sistema pode estar num estado dentre um conjunto finito de estados ouconfiguraes.

    O estado do sistema sumariza a informao relacionada com entradas pas-sadas que necessria para determinar o comportamento do sistema ementradas subsequentes.

    UFMG/ICEx/DCC MD Funcoes 17

  • Autmato finito

    Exemplo: O mecanismo de controle de um elevador no precisa lembrartodas as requisies anteriores de servio, mas somente o andar corrente, adireo 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 Dep

    5

    10

    5

    5 5

    5 10

    10

    10

    0 Dep

    5 Dep 15 Dep

    20 Dep

    UFMG/ICEx/DCC MD Funcoes 18

  • Autmato finito

    Definio: um autmato finito uma quintupla A = (I, S, s0, Q,N), ondeI: alfabeto de entrada para o autmato, ou seja, conjunto de smbolos vli-

    dos.

    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 Funcoes 19

  • Autmato finito

    Seja um autmato A = (I, S, s0, Q,N), ondeI = {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 diagramade transio de estados.

    10

    1

    01

    0s 1s s 2

    0

    UFMG/ICEx/DCC MD Funcoes 20

  • Autmato finito

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

    Entrada0 1

    Inicial s0 s1 s0Estado s1 s1 s2

    Final s2 s1 s0

    10

    1

    01

    0s 1s s 2

    0

    UFMG/ICEx/DCC MD Funcoes 21

  • Autmato finito com sada

    Uma limitao do autmato finito apresentado que a sada restrita a um si-nal binrio SIM/NO que indica se a entrada aceita ou no, respectivamente.

    Existem dois modelos que consideram um alfabeto de sada diferente desim/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 soidnticos aos da Mquina de Moore exceto que definida de SI . Sada associada com a transio.UFMG/ICEx/DCC MD Funcoes 22

  • Linguagem aceita por um autmato

    Definio: Seja A um AF com alfabeto de entrada I. Seja I o conjunto detodos os strings sobre I e seja w um string em I. Diz-se que w aceitopor A sse A comea no estado inicial e aps todos os smbolos de w seremfornecidos em sequncia para A, o autmato pra num estado final.

    A linguagem aceita por A, representada por L(A), o conjunto de todos osstrings 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?

    10

    1

    01

    0s 1s s 2

    0

    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 smboloou sequncia em questo.

    UFMG/ICEx/DCC MD Funcoes 23

  • Funo do estado final

    Suponha que um autmato esteja num estadono necessariamente oiniciale recebe uma sequncia de smbolos. Em que estado o autmatoterminar? 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 doestado final N : S I S. Se s S e w I ento N(s, w) o estadopara o qual o autnomo pra quando todos os smbolos de w so fornecidosem sequncia para A a partir do estado s.

    UFMG/ICEx/DCC MD Funcoes 24

  • Funo do estado final

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

    10

    1

    01

    0s 1s s 2

    0

    s11 s2 0 s1 1 s2 1 s0 0 s1

    ou seja,

    N(s1,10110) = s1.

    UFMG/ICEx/DCC MD Funcoes 25

  • Projetando um AF que aceita uma linguagem

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

    0*10*0*Estado vlido

    0*11(0*1*)* 0

    1s 2s

    0,10 01 1

    s

    Projete um AF para aceitar strings de 0s e 1s para os quais o nmero de 1s divisvel por 3.

    11

    0 0

    0

    1 1

    s 2

    s 0 s

    Linguagem aceita: 0(101010)

    UFMG/ICEx/DCC MD Funcoes 26

  • Implementando um AF atravs de um programa

    30

    01

    1

    1

    0

    1

    0s 0 s

    1 s 2 s

    Seja o autmato ao lado que reco-nhece todos os strings que terminamem 011.

    Um possvel algoritmo em alto nvelque imita o funcionamento do aut-mato :

    EXECUTAAUTMATO(A)

    1 state 02 symbol primeiro smbolo do string de entrada3 while symbol 6= 4 do choose state of5 0: if symbol = 0 then state 1 else state 06 1: if symbol = 0 then state 1 else state 27 2: if symbol = 0 then state 1 else state 38 3: if symbol = 0 then state 1 else state 09 symbol prximo smbolo do string de entrada

    10 return state O estado final 3 sse o string termina em 011

    UFMG/ICEx/DCC MD Funcoes 27

  • Implementando um AF atravs de um programa

    Um outro possvel algoritmo em alto nvel que imita o funcionamento do aut-mato e usa a funo do prximo estado :

    EXECUTAAUTMATO(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 entrada7 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 Funcoes 28

  • Funo injetiva

    Definio: Seja F : X Y . F uma funo um-para-um ou injetiva ssepara 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 Funcoes 29

  • Funo injetiva: Aplicao funo hash

    Motivao: suponha que deseja-se procurar (pesquisar) o mais rpido poss-vel alguns valores (chaves) que no esto ordenados. Uma possvel soluo definir uma funo que usa a prpria chave para saber a sua localizao noconjunto de valores.

    Esta funo conhecida como funo hash. Objetivo ideal: funo hash seja injetiva para que no haja colises de cha-

    ves.

    Para tornar este mtodo aceitvel temos que resolver dois problemas:(i) Encontrar uma funo h(k) que possa espalhar as chaves de forma uni-

    forme pela tabela.(ii) Encontrar um mecanismo para resolver o problema de localizar um regis-

    tro com chave k entre aquelas cujas chaves colidem na mesma entradada tabela.

    UFMG/ICEx/DCC MD Funcoes 30

  • Funo hash

    Por melhor que seja a funo h(k) e por mais esparsa que seja a ocupaoda 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 en-dereos so calculados como se fossem uniformes e randmicos, mais dametade das vezes, duas ou mais chaves vo ter o mesmo endereo natabela.

    UFMG/ICEx/DCC MD Funcoes 31

  • Funo hash

    Uma funo de transformao deve mapear chaves em inteiros (ndices) den-tro do intervalo [0..M 1] onde M o tamanho da tabela.

    A funo de transformao ideal aquela que:1. Seja simples de ser computada, e2. Para cada chave de entrada, qualquer uma das sadas possveis igual-

    mente 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 natabela.

    UFMG/ICEx/DCC MD Funcoes 32

  • Exemplo de funo hash

    Seja a i-sima letra do alfabeto representada pelo nmero i, ondeA = 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 valo-res:

    h(L) = 12 mod 7 = 5h(U) = 21 mod 7 = 0h(N) = 14 mod 7 = 0h(E) = 5 mod 7 = 5h(S) = 19 mod 7 = 5

    Uma possvel insero na tabela seria:0 1 2 3 4 5 6U N S L E

    UFMG/ICEx/DCC MD Funcoes 33

  • Exemplo de funo hash

    Transformao de chaves no numricas em nmeros:

    k =ni=1

    Chave[i] p[i],

    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 Funcoes 34

  • Funo hash perfeita

    Se h(ki) = h(kj) sse i = j, ento no h colises, e a funo de trans-formao chamada de funo de transformao perfeita ou funo hashperfeita (hp).

    Se o nmero de chaves N e o tamanho da tabela M so iguais ento temosuma 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 ordempreservada.

    UFMG/ICEx/DCC MD Funcoes 35

  • Funo hash perfeita: Comentrios

    No h necessidade de armazenar a chave, pois o registro localizado sem-pre a partir do resultado da funo de transformao.

    Uma funo de transformao perfeita especfica para um conjunto de cha-ves conhecido.

    UFMG/ICEx/DCC MD Funcoes 36

  • Funes sobrejetiva, bijetiva e inversa

    Definio (funo sobrejetiva):Seja F : X Y . F uma funo sobrejetiva sse para todo y Y possvelachar 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 F1 : Y X talque

    F1(y) = x y = F (x)

    UFMG/ICEx/DCC MD Funcoes 37

  • O princpio da Casa de Pombo ouThe Pigeonhole Principle

    Princpio (1a verso):Se n pombos (pigeons) entram em m casas numpombal (pigeonholes) e n > m, ento pelo menosuma das casas deve conter dois ou mais pombos.

    Peter Dirichlet (1805-1859), matemticoalemo. Foi o pri-meiro a expressaresse princpio em1834, que tem im-

    portantes aplicaes em teoria dosnmeros.

    UFMG/ICEx/DCC MD Funcoes 38

  • O princpio da Casa de Pombo ouThe Pigeonhole Principle

    Princpio (2 a verso):Uma funo definida de um conjunto finito para outro conjunto finito menorno pode ser injetiva. Existem pelo menos dois elementos no domnio quetm a mesma imagem no co-domnio.

    Aplicaes deste princpio esto por toda parte em Cincia da Computa-o.

    Exemplo: funo hash em pesquisa e criptografia.

    UFMG/ICEx/DCC MD Funcoes 39

  • O princpio da Casa de Pombo: Exemplos

    Num grupo de seis pessoas, existem obrigatoriamente pelo menos duas quenasceram no mesmo ms? No.

    E se considerarmos 13 pessoas? Sim.

    Existem pelo menos duas pessoas em BH que tm o mesmo nmero de fiosde 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 demeias 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 mesmacor? Trs. Duas podem ser diferentes mas a terceira tem que ser obrigatoria-

    mente de uma das duas cores e assim tem-se um par.UFMG/ICEx/DCC MD Funcoes 40

  • O princpio da Casa de Pombo: Exemplos

    Seja um tringulo equiltero com lado igual a 1. Se cinco pontos so selecio-nados no interior do tringulo ento existe um par de pontos que est a umadistncia 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 oquinto cair em um dos quatro ento tem-se a soma 9.

    E se selecionarmos apenas quatro nmeros? No.

    UFMG/ICEx/DCC MD Funcoes 41

  • O princpio da Casa de Pombo: Exemplos

    Seja S um conjunto com cinco nmeros inteiros positivos (Z+) e distintos cujomaior nmero 8. Prove que existem pelo menos duas somas iguais dos n-meros 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 Funcoes 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 elementosincluindo um elemento que o conjunto vazio.)

    Existem 30 pigeonholes, ou seja, qualquer soma desses subconjuntos estentre 1 e 30.

    Alm disso, existem 31 conjuntos (pigeons), que devem ter somas entre 1 e30.

    Assim, pelo princpio da Casa de Pombo existem pelo menos dois subcon-juntos que tm a mesma soma.

    UFMG/ICEx/DCC MD Funcoes 43

  • O princpio da Casa de Pombo: Exemplos

    Seja L a linguagem que consiste de todos os strings da forma akbk, onde k uminteiro positivo. Simbolicamente, L a linguagem sobre o alfabeto = {a, b}definida por

    L = {s |s = akbk, k 1}.Prove que no existe um autmato finito que aceita L.

    UFMG/ICEx/DCC MD Funcoes 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 inteiropositivo.

    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 queconta 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 eentrando com p bs o autmato vai para o estado final sm.

    Mas isso tambm implica que aqbp vai para o estado final j que aq tambmpra em sm antes de entrar com os bs.

    Por suposio, A aceita L. J que s aceito por A, s L. Mas pela definiode L, L consiste apenas dos strings que tm o mesmo nmero de as e bs ej 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 Funcoes 45

  • Generalizao do princpio

    Princpio (3 a verso):Para qualquer funo f , definida de um conjunto finito X para um conjuntofinito Y e para qualquer inteiro positivo k, se |X| > k |Y |, ento existealgum y Y tal que y a imagem de pelo menos k + 1 elementos distintosde X.

    Princpio (4 a versocontrapositivo):Para qualquer funo f , definida de um conjunto finito X para um conjuntofinito Y e para qualquer inteiro positivo k, se para cada y Y , f1(y) temno mximo k elementos ento X tem no mximo k |Y | elementos.

    UFMG/ICEx/DCC MD Funcoes 46

  • Generalizao do princpio

    Use a generalizao do princpio da Casa de Pombo para mostrar que numgrupo de 85 pessoas, a primeira letra dos nomes de pelo menos quatro pes-soas 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 nega-o. Suponha que no existam quatro pessoas que tm a mesma letra inicial no

    primeiro nome. Assim, no mximo trs pessoas tm a mesma letra. Pelaforma contrapositiva da generalizao do princpio da Casa de Pombo istoimplica num total de 3 26 = 78 pessoas. Mas isto uma contradio poisexistem 85 pessoas. Logo, pelo menos quatro pessoas tm a mesma letrainicial no primeiro nome.

    UFMG/ICEx/DCC MD Funcoes 47

  • Princpio da Casa de Pombo

    Definio (conjunto finito): Um conjunto X finito sse o conjunto vazio ouexiste uma correspondncia um-para-um do conjunto {1,2, . . . , n} para X,onde n um inteiro positivo. No primeiro caso, o nmero de elementos zeroe 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 , sea cardinalidade de X maior que a de Y ento f no injetiva.

    Teorema:SejamX e Y conjuntos finitos com o mesmo nmero de elementos e suponhaque 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 Funcoes 48

  • Composio de funes

    Definio (composio de funes): Sejam f : X Y e g : Y Z funescom a propriedade que a faixa de f um subconjunto do domnio de g, i.e.,Y 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 Funcoes 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 afuno identidade em Y , ento

    f ix = f

    iy f = f Teorema:

    Se f : X Y uma funo bijetiva com funo inversa f1 : Y X,ento

    f1 f = ix

    f f1 = iyUFMG/ICEx/DCC MD Funcoes 50

  • Composio de funo injetiva e funosobrejetiva

    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 gf sobrejetiva.

    UFMG/ICEx/DCC MD Funcoes 51

  • Cardinalidade de conjuntos

    Definio (mesma cardinalidade): Sejam A e B quaisquer conjuntos. A tema mesma cardinalidade de B sse existe uma correspondncia um-para-umde A para B. Em outras palavras, A tem a mesma cardinalidade que B sseexiste 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 cardina-lidade que A. propriedade simtrica da cardinalidade.

    (c) Se A tem a mesma cardinalidade que B, e B tem a mesma cardinalidadeque C ento A tem a mesma cardinalidade que C. propriedade transitiva da cardinalidade.

    Definio (mesma cardinalidade): A e B tm a mesma cardinalidade sse, Atem a mesma cardinalidade que B ou B tem a mesma cardinalidade que A.UFMG/ICEx/DCC MD Funcoes 52

  • Conjuntos contveis

    Definio (conjunto contvel infinito): Um conjunto chamado contvel infinitosse ele possui a mesma cardinalidade do conjunto dos inteiros positivos Z+.Um conjunto chamado contvel sse finito ou contvel infinito. Um conjuntoque no contvel chamado de incontvel.

    Exemplo: Mostre que o conjunto Z, conjunto de todos os inteiros contvel.0 11 21 3

    2 42 5

    ... ... ...

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

    UFMG/ICEx/DCC MD Funcoes 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 cardinalidadeque o conjunto dos nmeros reais entre 0 e 1.

    Exemplo: O conjunto de todos os programas de computador numa dada lin-guagem de programao contvel.

    UFMG/ICEx/DCC MD Funcoes 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 funode complexidade de tempo de algoritmo.

    Se f(n) uma medida da quantidade de memria necessria para exe-cutar um algoritmo em um problema de tamanho n, ento f chamadafuno de complexidade de espao de algoritmo.

    Observao: tempo no tempo! importante ressaltar que a complexidade de tempo na realidade no re-

    presenta tempo diretamente, mas o nmero de vezes que determinadaoperao considerada relevante executada.

    UFMG/ICEx/DCC MD Funcoes 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 comporta-mento 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 Funcoes 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 Funcoes 57

  • Notao

    f(n) = (g(n))

    UFMG/ICEx/DCC MD Funcoes 58

  • Notao

    A notao limita a funo por fatores constantes.

    Escreve-se f(n) = (g(n)), se existirem constantes positivas c1, c2 e n0tais 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, asympto-

    tically 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 Funcoes 59

  • Notao : Exemplo 1

    Mostre que 12n2 3n = (n2).

    Para provar esta afirmao, devemos achar constantes c1 > 0, c2 > 0, n > 0,tais que:

    c1n2 1

    2n2 3n c2n2

    para todo n n0.

    Se dividirmos a expresso acima por n2 temos:

    c1 1

    2 3n c2.

    UFMG/ICEx/DCC MD Funcoes 60

  • Notao : Exemplo 1

    A inequao mais a direita ser sempre vlida para qualquer valor de n 1 aoescolhermos c2 12.

    Da mesma forma, a inequao mais a esquerda ser sempre vlida para qual-quer valor de n 7 ao escolhermos c1 114.

    Assim, ao escolhermos c1 = 1/14, c2 = 1/2 e n0 = 7, podemos verificar que12n

    2 3n = (n2).

    Note que existem outras escolhas para as constantes c1 e c2, mas o fato impor-tante que a escolha existe.

    Note tambm que a escolha destas constantes depende da funo 12n2 3n.

    Uma funo diferente pertencente a (n2) ir provavelmente requerer outrasconstantes.

    UFMG/ICEx/DCC MD Funcoes 61

  • Notao : Exemplo 2

    Usando a definio formal de prove que 6n3 6= (n2).

    UFMG/ICEx/DCC MD Funcoes 62

  • Notao O

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

    UFMG/ICEx/DCC MD Funcoes 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 taisque 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, asymp-

    totically 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 Funcoes 64

  • Notao O

    Quando a notao O usada para expressar o tempo de execuo de umalgoritmo no pior caso, est se definindo tambm o limite (superior) do tempode 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 Funcoes 65

  • Notao O

    Tecnicamente um abuso dizer que o tempo de execuo do algoritmo deordenao 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 algoritmode 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 Funcoes 66

  • Notao

    f(n) = (g(n))

    UFMG/ICEx/DCC MD Funcoes 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 taisque 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, asymp-

    totically 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 Funcoes 68

  • Notao

    Quando a notao usada para expressar o tempo de execuo de um al-goritmo no melhor caso, est se definindo tambm o limite (inferior) do tempode execuo desse algoritmo para todas as entradas.

    Por exemplo, o algoritmo de ordenao por insero (n) no melhorcaso. 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 vezesg(n) para valores suficientemente grandes de n.

    UFMG/ICEx/DCC MD Funcoes 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 piorcaso (n2), j que existem entradas para este algoritmo que fazem comque ele execute em tempo (n2).

    UFMG/ICEx/DCC MD Funcoes 70

  • Funes de custo (no de comparaes) doalgoritmo de ordenao por Insero

    UFMG/ICEx/DCC MD Funcoes 71

  • Funes de custo e notaes assintticas doalgoritmo de ordenao por Insero

    Pior Caso:

    cPior Caso(n) = n2

    2+ n

    2 1 =

    O

    (n2)

    Caso Mdio:

    cCaso Medio(n) = n2

    4+ 3n

    4 1 =

    O

    (n2)

    Melhor caso:

    cMelhor Caso(n) = n 1 =O

    (n)

    O indica a notao normalmente usada para esse caso.

    UFMG/ICEx/DCC MD Funcoes 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 Funcoes 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 saberseus conceitos e diferenas em relao s notaes O e , respectivamente.

    UFMG/ICEx/DCC MD Funcoes 74

  • Notao o

    O limite assinttico superior definido pela notao O pode ser assintotica-mente 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 assintotica-mente 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 Funcoes 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:

    limn

    f(n)

    g(n)= 0

    Alguns autores usam este limite como a definio de o.

    UFMG/ICEx/DCC MD Funcoes 76

  • Notao

    Por analogia, a notao est relacionada com a notao da mesma formaque 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

    Por exemplo, n22 = (n), mas n2

    2 6= (n2).

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

    limn

    f(n)

    g(n)=,

    se o limite existir.

    UFMG/ICEx/DCC MD Funcoes 77

  • Classes de comportamento assintticoComplexidade 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 Funcoes 78

  • Classes de comportamento assintticoComplexidade logartmica

    f(n) = O(logn) 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 Funcoes 79

  • Classes de comportamento assintticoComplexidade linear

    f(n) = O(n) Em geral, um pequeno trabalho realizado sobre cada elemento de en-

    trada. Esta a melhor situao possvel para um algoritmo que tem que processarn 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 Funcoes 80

  • Classes de comportamento assintticoComplexidade linear logartmica

    f(n) = O(n logn) Este tempo de execuo ocorre tipicamente em algoritmos que resolvem

    um problema quebrando-o em problemas menores, resolvendo cada umdeles 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 Funcoes 81

  • Classes de comportamento assintticoComplexidade quadrtica

    f(n) = O(n2) Algoritmos desta ordem de complexidade ocorrem quando os itens de da-

    dos 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 rela-tivamente pequenos.

    Algoritmos de ordenao simples como seleo e insero.

    UFMG/ICEx/DCC MD Funcoes 82

  • Classes de comportamento assintticoComplexidade 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 rela-tivamente pequenos.

    Algoritmo para multiplicao de matriz.

    UFMG/ICEx/DCC MD Funcoes 83

  • Classes de comportamento assintticoComplexidade 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 Funcoes 84

  • Hierarquias de funes

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

    1 log logn logn n nc nlogn cn nn ccn

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

    UFMG/ICEx/DCC MD Funcoes 85

  • Hierarquias de funes

    Usando MatLab, ou um outro pacote matemtico/software grfico, desenheos grficos dessas funes, quando n.

    UFMG/ICEx/DCC MD Funcoes 86

  • Hierarquias de funes

    Onde as seguintes funes se encaixam nessa hierarquia?

    (a) pi(n) = nlnn. Esta funo define o nmero de primos menor ou igual a n.

    (b) e

    logn.Dica: ef(n) eg(n) limn(f(n) g(n)) = .

    UFMG/ICEx/DCC MD Funcoes 87

  • Hierarquias de funesPreliminares

    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 ,

    f(n) g(n) 1g(n)

    1f(n)

    .

    Assim, todas as funes (exceto 1) tendem para zero:

    1

    ccn

    1

    nn 1cn 1nlogn

    1nc 1n 1

    logn 1

    log logn 1

    UFMG/ICEx/DCC MD Funcoes 88

  • Hierarquias de funesSoluo de (a)

    pi(n) = nlnn

    Temos que (note que a base do logaritmo no altera a hierarquia):

    1

    n 1

    lnn 1

    Multiplicando por n, temos:n

    n n

    lnn n,

    ou seja,

    n1 pi(n) nNote que o valor 1 ainda menor que 1.

    UFMG/ICEx/DCC MD Funcoes 89

  • Hierarquias de funesSoluo de (b)

    e

    logn

    Dado a hierarquia:

    1 ln lnn

    lnn lnne elevando a e, temos que:

    e1 eln lnn e

    lnn e lnn

    Simplificando temos:

    e lnn e

    lnn n

    UFMG/ICEx/DCC MD Funcoes 90

  • Algoritmo exponencial Algoritmo polinomial Funes de complexidade:

    Um algoritmo cuja funo de complexidade O(cn), c > 1, chamado dealgoritmo exponencial no tempo de execuo.

    Um algoritmo cuja funo de complexidade O(p(n)), onde p(n) umpolinmio de grau n, chamado de algoritmo polinomial no tempo de exe-cuo.

    A distino entre estes dois tipos de algoritmos torna-se significativa quandoo tamanho do problema a ser resolvido cresce.

    Essa a razo porque algoritmos polinomiais so muito mais teis na prticado que algoritmos exponenciais. Geralmente, algoritmos exponenciais so simples variaes de pesquisa

    exaustiva.

    UFMG/ICEx/DCC MD Funcoes 91

  • Algoritmo exponencial Algoritmo polinomial Os algoritmos polinomiais so geralmente obtidos atravs de um entendi-

    mento mais profundo da estrutura do problema.

    Tratabilidade dos problemas: Um problema considerado intratvel se ele to difcil que no se co-

    nhece um algoritmo polinomial para resolv-lo. Um problema considerado tratvel (bem resolvido) se existe um algo-

    ritmo polinomial para resolv-lo.

    Aspecto importante no projeto de algoritmos.

    UFMG/ICEx/DCC MD Funcoes 92

  • Objetos recursivos

    Um objeto recursivo quando definido parcialmente em termos de simesmo.

    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 Funcoes 93

  • Objetos recursivos

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

    T

    T1 T

    TTTT

    T2

    UFMG/ICEx/DCC MD Funcoes 94

  • Objetos recursivos: Exemplos

    UFMG/ICEx/DCC MD Funcoes 95

  • Objetos recursivos: Exemplos

    UFMG/ICEx/DCC MD Funcoes 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 chamadarecursiva.

    UFMG/ICEx/DCC MD Funcoes 97

  • Problema de terminao

    Definir um condio de terminao. Idia:

    Associar um parmetro, por exemplo n, com P e chamar P recursivamentecom 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 Funcoes 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)

    F : varivel auxiliar1 if n > 02 then F n FATORIAL(n 1)3 else F 14 return F

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

    UFMG/ICEx/DCC MD Funcoes 99

  • Quando no usar recursividade

    Algoritmos recursivos so apropriados quando o problema definido em ter-mos recursivos.

    Entretanto, uma definio recursiva no implica necessariamente que a im-plementao recursiva a melhor soluo!

    Casos onde evitar recursividade: P if condio then (Si;P )

    Exemplo: P if i < n then ( i := i+ 1;F := iF ;P )

    UFMG/ICEx/DCC MD Funcoes 100

  • Eliminando a recursividade de Cauda(Tail recursion)

    FATORIAL(n)

    F , i: variveis auxiliares1 i 02 F 13 while i < n4 do i i+ 15 F F i6 return F

    Logo,

    P if B then (S;P )deve ser transformado em

    P (x = x0; while B do S).

    UFMG/ICEx/DCC MD Funcoes 101

  • Outro exemplo

    FIB(A)

    F : varivel auxiliar1 if n = 02 then F 03 else if n = 14 then F 15 else F FIB(n 1) + (n 2)6 return F

    Observao: para cada chamada aFIB(n), FIB ativada 2 vezes

    5 s

    4 s

    3 s

    2 s

    1 sBBBBBBB0 s

    BBBBBBB1 s

    JJJJJJJ2 s

    1 sBBBBBBB0 s

    ,,,,,,,,l

    lllllll3 s

    2 s

    1 sBBBBBBB0 s

    BBBBBBB1 s

    UFMG/ICEx/DCC MD Funcoes 102

  • Soluo bviaFIB(n)

    F , Fant , i, Temp: variveis auxiliares1 i 12 F 13 Fant 04 while i < n5 do Temp F6 F F + Fant7 Fant Temp8 i i+ 19 return F

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

    UFMG/ICEx/DCC MD Funcoes 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 Funcoes 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 Funcoes 105

  • Anlise da funo FATORIAL

    Seja a seguinte funo para calcular o fatorial de n:

    FATORIAL(n)

    F : varivel auxiliar1 if n > 02 then F n FATORIAL(n 1)3 else F 14 return F

    Seja a seguinte equao de recorrncia para esta funo:

    T (n) =

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

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

    UFMG/ICEx/DCC MD Funcoes 106

  • Resolvendo a equao de recorrncia

    Esta equao de recorrncia pode serexpressa 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+ + c

    n1+d

    Em cada passo, o valor do termo T substitudo pela sua definio (ouseja, esta recorrncia est sendo re-solvida pelo mtodo da expanso). Altima equao mostra que depois daexpanso existem n 1 cs, corres-pondentes aos valores de 2 at n.Desta forma, a recorrncia pode serexpressa como:

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

    UFMG/ICEx/DCC MD Funcoes 107

  • Alguns somatrios teis

    ni=1

    i =n(n+ 1)

    2

    ki=0

    2k = 2k+1 1

    ki=0

    1

    2i= 2 1

    2k

    ki=0

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

    ni=1

    i2 =n(n+ 1)(2n+ 1)

    6

    UFMG/ICEx/DCC MD Funcoes 108

  • Algumas recorrncias bsicas: Caso 1

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

    Vamos supor que:

    n = 2k k = logn

    Resolvendo por expanso temos:

    T (2k) = T (2k1) + 1= (T (2k2) + 1) + 1= (T (2k3) + 1) + 1 + 1

    ... ...= (T (2) + 1) + 1 + + 1= (T (1) + 1) + 1 + + 1= 0 + 1 + + 1

    k

    = k

    T (n) = lognT (n) = O(logn)

    UFMG/ICEx/DCC MD Funcoes 109

  • Algumas recorrncias bsicas: Caso 2

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

    T (1) = 0 (n = 1)

    Vamos supor que n = 2k k = logn. 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 lognT (n) = O(n logn)

    UFMG/ICEx/DCC MD Funcoes 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 posi-tiva podem ser resolvidas usando o Teorema Mestre. Note que neste caso noestamos achando a forma fechada da recorrncia mas sim seu comportamentoassinttico.

    UFMG/ICEx/DCC MD Funcoes 111

  • Teorema Mestre

    Sejam as constantes a 1 e b > 1 e f(n) uma funo definida nos inteirosno-negativos pela recorrncia:

    T (n) = aT (nb) + f(n),

    onde a frao n/b pode significar bn/bc ou dn/be. A equao de recorrnciaT (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 logn) .

    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 Funcoes 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 duasfunes.

    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 logn) = (f(n) logn).

    UFMG/ICEx/DCC MD Funcoes 113

  • Tecnicalidades sobre o teorema Mestre

    No primeiro caso, a funo f(n) deve ser no somente menor que nlogb amas ser polinomialmente menor. Ou seja, f(n) deve ser assintoticamentemenor 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 amas ser polinomialmente maior e satisfazer a condio de regularidade queaf(n/b) cf(n). Esta condio satisfeita pela maior parte das funespolinomiais encontradas neste curso.

    UFMG/ICEx/DCC MD Funcoes 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 regula-

    ridade do caso 3 falsa, ento no se pode aplicar este teorema pararesolver a recorrncia.

    UFMG/ICEx/DCC MD Funcoes 115

  • Uso do teorema: Exemplo 1

    T (n) = 9T (n3) + 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 teoremae concluir que a soluo da recorrncia

    T (n) = (n2).

    UFMG/ICEx/DCC MD Funcoes 116

  • Uso do teorema: Exemplo 2

    T (n) = T (2n3 ) + 1.

    Temos que,

    a = 1, b = 3/2, f(n) = 1

    Desta forma,

    nlogb a = nlog3/2 1 = n0 = 1

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

    T (n) = (logn).

    UFMG/ICEx/DCC MD Funcoes 117

  • Uso do teorema: Exemplo 3

    T (n) = 3T (n4) + n logn

    Temos que,

    a = 3, b = 4, f(n) = n logn.

    Desta forma,

    nlogb a = nlog4 3 = O(n0.793).

    Como f(n) = (nlog4 3+), onde 0.2, o caso 3 se aplica se mostrarmosque a condio de regularidade verdadeira para f(n).

    UFMG/ICEx/DCC MD Funcoes 118

  • Uso do teorema: Exemplo 3

    Para um valor suficientemente grande de n:

    af(nb) = 3(n4) log(

    n4) (34)n logn = cf(n).

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

    T (n) = (n logn).

    UFMG/ICEx/DCC MD Funcoes 119

  • Uso do teorema: Exemplo 4

    T (n) = 2T (n2) + n logn.

    Temos que,

    a = 2, b = 2, f(n) = n logn.

    Desta forma,

    nlogb a = n

    Aparentemente o caso 3 deveria se aplicar j que f(n) = n logn assintoti-camente maior que nlogb a = n. Mas no entanto, no polinomialmente maior.A frao f(n)/nlogb a = (n logn)/n = logn que assintoticamente menorque n para toda constante positiva . Consequentemente, a recorrncia cai nasituao entre os casos 2 e 3 onde o teorema no pode ser aplicado.

    UFMG/ICEx/DCC MD Funcoes 120

  • Uso do teorema: Exerccio 5

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

    UFMG/ICEx/DCC MD Funcoes 121

  • Uso do teorema: Exerccio 6

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

    UFMG/ICEx/DCC MD Funcoes 122

  • Uso do teorema: Exerccio 7

    T (n) = 4T (n2) + n3.

    UFMG/ICEx/DCC MD Funcoes 123

  • Uso do teorema: Exerccio 8

    O tempo de execuo de um algoritmo A descrito pela recorrncia

    T (n) = 7T (n2) + n2.

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

    T (n) = aT (n4) + n2.

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

    UFMG/ICEx/DCC MD Funcoes 124

  • Notao assinttica em funes

    Normalmente, a notao assinttica usada em frmulas matemticas. Porexemplo, usando a notao O pode-se escrever que n = O(n2). Tambmpode-se escrever que

    2n2 + 3n+ 1 = 2n2 + (n).

    Como se interpreta uma frmula como esta?

    UFMG/ICEx/DCC MD Funcoes 125

  • Notao assinttica em funes

    Notao assinttica sozinha no lado direito de uma equao, como emn = O(n2). Sinal de igualdade significa que o lado esquerdo um membro do conjuntoO(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 igualda-

    des como em O(n2) = n.

    Quando se trabalha com a notao O e em qualquer outra frmula que en-volve 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 Funcoes 126

  • Notao assinttica em funes

    Se uma notao assinttica aparece numa frmula, isso significa que essa no-tao 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 + 1que de fato est em (n).

    UFMG/ICEx/DCC MD Funcoes 127

  • Notao assinttica em funes

    O uso da notao assinttica desta forma ajuda a eliminar detalhes que noso importantes. Por exemplo, pode-se expressar uma equao de recorrnciacomo:

    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-seque eles esto includos numa funo f(n) expressa no termo (n).

    UFMG/ICEx/DCC MD Funcoes 128

  • Notao assinttica em funes

    Em alguns casos, a anotao assinttica aparece do lado esquerdo de umaequao 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 aequao seja vlida.

    O lado direito da igualdade define um valor no to preciso quanto o ladoesquerdo. Por exemplo,

    2n2 + 3n+ 1 = 2n2 + (n) (1)

    2n2 + (n) = (n2). (2)

    UFMG/ICEx/DCC MD Funcoes 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 funoh(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 Funcoes 130

  • Modelagem usando equao de recorrnciaTorre de Hanoi

    Edouard Lucas (18421891), matemtico francs. Props o jogo Torre de Ha-noi em 1883. Escreveu o trabalho de matemtica recreativa Rcrations Math-matiques 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 Funcoes 131

  • Modelagem usando equao de recorrnciaTorre 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 doproblema.

    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 Funcoes 132

  • Modelagem usando equao de recorrnciaTorre 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 Funcoes 133

  • Modelagem usando equao de recorrnciaTorre de Hanoi

    Equao de recorrncia para este problema pode ser expressa por:T (0) = 0

    T (n) = 2T (n 1) + 1, para n > 0

    UFMG/ICEx/DCC MD Funcoes 134

  • Modelagem usando equao de recorrnciaTorre de Hanoi

    Para pequenos valores de n temos:

    n 0 1 2 3 4 5 6T (n) 0 1 3 7 15 31 63

    Esta recorrncia pode ser expressa por

    T (n) = 2n 1.

    UFMG/ICEx/DCC MD Funcoes 135

  • Modelagem usando equao de recorrnciaTorre de Hanoi

    Provando por induo matemtica temos:

    Caso base. Para n = 0 temos que T (0) = 201 = 0, que o valor presentena equao de recorrncia.

    Induo. Vamos supor que a forma fechada seja vlida para todos os valoresat 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 Funcoes 136

  • Modelagem usando equao de recorrnciaEstratgia 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 valorde T (n):

    1. Analisar pequenos casos. Com isto podemos ter um entendimento melhordo 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 Funcoes 137

  • Modelagem usando equao de recorrnciaLinhas 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 retatem duas regies e com duas retas tm quatro regies.

    41 2 1 L = 2

    1 1

    21

    2

    3

    L =

    4

    0 L =

    UFMG/ICEx/DCC MD Funcoes 138

  • Modelagem usando equao de recorrnciaO nmero de Josephus

    Durante os anos em que serviu no exrcito romano, Josephus vivia num aloja-mento com vrios outros soldados. Toda semana devia ser feita uma limpezageral que sempre tomava o dia todo. Os soldados decidiram entre si que todasemana seria sorteado um soldado que no faria a limpeza. O sorteio seriafeito da seguinte forma: os soldados formariam um crculo, percorreriam o cr-culo 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 dalimpeza. Nos dias que Josephus queria tirar um dia de folga ele rapidamentecalculava onde ele deveria ficar nesse crculo, apenas conhecendo o nmerototal de soldados que participariam da limpeza naquele dia.

    UFMG/ICEx/DCC MD Funcoes 139

  • Modelagem usando equao de recorrnciaO nmero de Josephus

    121

    2

    3

    4

    5

    67

    8

    9

    10

    11

    Por exemplo, suponha a configurao inicial com 12 soldados, conformefigura ao lado.

    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, finalmentena terceira rodada os soldados 5 e 11, sendo que o soldado 9 seria osorteado.

    1a rodada 2a rodada 3a rodada

    61

    2

    3

    4

    5

    67

    8

    9

    10

    11

    12 1

    2

    34

    5 2

    4

    3

    7

    11

    8

    9

    12

    3

    4

    5

    67

    8

    9

    10

    11

    12

    34

    5

    6 1

    7

    9 10

    11 1

    5

    4

    3

    7

    11

    8

    9

    2

    3

    4

    67

    8

    10

    11

    12

    34

    5

    6 1

    7

    2

    UFMG/ICEx/DCC MD Funcoes 140

  • Princpios para anlise de algoritmosTempo 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 Funcoes 141

  • Princpios para anlise de algoritmosTempo 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 sepa-

    radamente um a um, iniciando com os procedimentos que no chamamoutros procedimentos.

    Em seguida, devem ser avaliados os procedimentos que chamam os pro-cedimentos que no chamam outros procedimentos, utilizando os temposdos procedimentos j avaliados.

    Este processo repetido at chegar no programa principal.

    UFMG/ICEx/DCC MD Funcoes 142

  • Princpios para anlise de algoritmosTempo 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 procedi-mento.

    Obter e resolver a equao de recorrncia.

    UFMG/ICEx/DCC MD Funcoes 143

  • Operaes com a notao O

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

    c O(f(n)) = O(f(n)) c = constanteO(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 Funcoes 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 logn).

    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 logn)),

    que O(n2).

    Regra do produto: O(f(n))O(g(n)) Produto de [logn+ k +O(1/n)] por [n+O(

    n)]

    n logn+ kn+O(n logn).

    UFMG/ICEx/DCC MD Funcoes 145