Algoritmos e complexidade Notas de aula -...

242
Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes 22 de Abril de 2008

Transcript of Algoritmos e complexidade Notas de aula -...

Page 1: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Algoritmos e complexidadeNotas de aula

Marcus RittLuciana BuriolEdson Prestes

22 de Abril de 2008

Page 2: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 3: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Conteudo

I. Analise de algoritmos 5

1. Introducao e conceitos basicos 71.1. Notacao assintotica . . . . . . . . . . . . . . . . . . . . . . . . . 181.2. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.3. Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2. Analise de complexidade 312.1. Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.2. Complexidade pessimista . . . . . . . . . . . . . . . . . . . . . 35

2.2.1. Metodologia de analise de complexidade . . . . . . . . . 352.2.2. Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.3. Complexidade media . . . . . . . . . . . . . . . . . . . . . . . . 492.4. Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II. Projeto de algoritmos 69

3. Introducao 71

4. Algoritmos gulosos 734.1. Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.2. Algoritmos em grafos . . . . . . . . . . . . . . . . . . . . . . . . 77

4.2.1. Arvores espalhadas mınimas . . . . . . . . . . . . . . . . 774.2.2. Caminhos mais curtos . . . . . . . . . . . . . . . . . . . 82

4.3. Algoritmos de sequenciamento . . . . . . . . . . . . . . . . . . 834.4. Topicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884.5. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924.6. Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

5. Programacao dinamica 935.1. Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935.2. Comparacao de sequencias . . . . . . . . . . . . . . . . . . . . . 97

5.2.1. Subsequencia Comum Mais Longa . . . . . . . . . . . . 97

1

Page 4: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Conteudo

5.2.2. Similaridade entre strings . . . . . . . . . . . . . . . . . 1015.3. Mochila maxima . . . . . . . . . . . . . . . . . . . . . . . . . . 1055.4. Multiplicacao de Cadeias de Matrizes . . . . . . . . . . . . . . . 1065.5. Topicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

5.5.1. Algoritmo de Floyd-Warshall . . . . . . . . . . . . . . . 1115.5.2. Caixeiro viajante . . . . . . . . . . . . . . . . . . . . . . 1125.5.3. Arvore de busca binaria otima . . . . . . . . . . . . . . 113

6. Divisao e conquista 119

6.1. Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196.2. Resolver recorrencias . . . . . . . . . . . . . . . . . . . . . . . . 121

6.2.1. Metodo da substituicao . . . . . . . . . . . . . . . . . . 1226.2.2. Metodo da arvore de recursao . . . . . . . . . . . . . . . 1276.2.3. Metodo Mestre . . . . . . . . . . . . . . . . . . . . . . . 129

6.3. Topicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1346.4. Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7. Backtracking 137

8. Algoritmos de aproximacao 151

8.1. Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1518.2. Aproximacoes com randomizacao . . . . . . . . . . . . . . . . . 1608.3. Aproximacoes gulosas . . . . . . . . . . . . . . . . . . . . . . . 1628.4. Esquemas de aproximacao . . . . . . . . . . . . . . . . . . . . . 1688.5. Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

III. Teoria de complexidade 171

9. Do algoritmo ao problema 173

9.1. Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

10.Classes de complexidade 181

10.1. Definicoes basicas . . . . . . . . . . . . . . . . . . . . . . . . . . 18110.2. Hierarquias basicas . . . . . . . . . . . . . . . . . . . . . . . . . 183

11.Teoria da NP-completude 187

11.1. Caracterizacoes e problemas em NP . . . . . . . . . . . . . . . 18711.2. Reducoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

2

Page 5: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Conteudo

12.Fora do NP 19912.1. De P ate PSPACE . . . . . . . . . . . . . . . . . . . . . . . . . . 20112.2. De PSPACE ate ELEMENTAR . . . . . . . . . . . . . . . . . . . 206

A. Conceitos matematicos 209A.1. Funcoes comuns . . . . . . . . . . . . . . . . . . . . . . . . . . . 209A.2. Somatorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212A.3. Inducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215A.4. Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217A.5. Probabilidade discreta . . . . . . . . . . . . . . . . . . . . . . . 217A.6. Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

B. Solucoes dos exercıcios 221

3

Page 6: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Conteudo

Essas notas servem como suplemento a material do livro “Complexidade dealgoritmos” de Toscani/Veloso e o material didatico da disciplina “Complexi-dade de algoritmos” da UFRGS.

Versao 2561 do 2008-04-22, compilada em 22 de Abril de 2008. Obra esta licen-ciada sob uma Licenca Creative Commons (Atribuicao-Uso Nao-Comercial-Nao a obras derivadas 2.5 Brasil).

4

Page 7: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Parte I.

Analise de algoritmos

5

Page 8: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 9: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

A teoria da computacao comecou com a pergunta “Quais problemas sao efeti-vamente computaveis?” e foi estudado por matematicos como Post, Church,Kleene e Turing. A nossa intuicao e que todos os computadores diferentes,por exemplo um PC ou um Mac, tem o mesmo poder computacional. Mas naoe possıvel imaginar algum outro tipo de maquina que seja mais poderosa queessas? Cujos programas nem podem ser implementadas num PC ou Mac? Naoe facil de resolver essa pergunta, porque a resposta a ela depende das possibi-lidades computacionais em nosso universo, e logo do nosso conhecimento dafısica. Mesmo enfrentando esses problemas, matematicos inventaram variosmodelos de computacao, entre eles o calculo lambda, as funcoes parcialmenterecursivas, a maquina de Turing e a maquina de RAM, que se tornaram to-dos equivalente em poder computacional, e sao considerados como maquinasuniversais.Nossa pergunta e mais especıfica: “Quais problemas sao eficientemente com-putaveis?”. Essa pergunta e motivada pela observacao de que alguns proble-mas que, mesmo sendo efetivamente computaveis, sao tao complicados, que asolucao deles para instancias do nosso interesse e impraticavel.

Exemplo 1.1Nao existe um algoritmo que decide o seguinte: Dado um programa arbitrario(que podemos imaginar escrito em qualquer linguagem de programacao comoC ou Miranda) e as entradas desse programa. Ele termina? Esse problema econhecido como “problema de parada”. ♦

Visao geral

• Nosso objetivo: Estudar a analise e o projeto de algoritmos.

• Parte 1: Analise de algoritmos, i.e. o estudo teorico do desempenho euso de recursos.

• Ela e pre-requisito para o projeto de algoritmos.

• Parte 2: As principais tecnicas para projetar algoritmos.

7

Page 10: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

Introducao

• Um algoritmo e um procedimento que consiste em um conjunto de regrasnao ambıguas as quais especificam, para cada entrada, uma sequenciafinita de operacoes, terminando com uma saıda correspondente.

• Um algoritmo resolve um problema quando, para qualquer entrada, pro-duz uma resposta correta, se forem concedidos tempo e memoria sufici-entes para a sua execucao.

Motivacao

• Na teoria da computacao perguntamos “Quais problemas sao efetiva-mente computaveis?”

• No projeto de algoritmos, a pergunta e mais especıfica: “Quais proble-mas sao eficientemente computaveis?”

• Para responder, temos que saber o que “eficiente” significa.

• Uma definicao razoavel e considerar algoritmos em tempo polinomialcomo eficiente (tese de Cobham-Edmonds).

Custos de algoritmos

• Tambem temos que definir qual tipo de custo e de interesse.

• Uma execucao tem varios custos associados: Tempo de execucao, uso deespaco (cache, memoria, disco), consumo de energia, ...

• Existem caracterısticas e medidas que sao importantes em contextosdiferentes Linhas de codigo fonte (LOC), legibilidade, manutenabilidade,corretude, custo de implementacao, robustez, extensibilidade,...

• A medida mais importante e nosso foco: tempo de execucao.

• A complexidade pode ser vista como uma propriedade do problema

Mesmo um problema sendo computavel, nao significa que existe um algoritmoque vale a pena aplicar. O problema

Expressoes regulares com ·2

8

Page 11: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Instancia Uma expressao regular e com operacoes ∪ (uniao), ·∗ (fecho deKleene), · (concatenacao) e ·2 (quadratura) sobre o alfabeto Σ =0, 1.

Decisao L(e) 6= Σ∗?

que parece razoavelmente simples e, de fato, EXPSPACE-completo [23, Co-rolario 2.1] (no momento e suficiente saber que isso significa que o tempo pararesolver o problema cresce ao menos exponencialmente com o tamanho daentrada).

Exemplo 1.2Com e = 0 ∪ 12 temos L(e) = 0, 11.Com e = (0 ∪ 1)2 · 0∗ temos

L(e) = 00, 01, 10, 11, 000, 010, 100, 110, 0000, 0100, 1000, 1100, . . ..

Existem exemplos de outros problemas que sao decidıveis, mas tem uma com-plexidade tao grande que praticamente todas instancias precisam mais recur-sos que o universo possui (p.ex. a decisao da validade na logica monadica fracade segunda ordem com sucessor).

O universo do ponto da vista da ciencia da computacao Falando sobreos recursos, e de interesse saber quantos recursos nosso universo disponibilizaaproximadamente. A seguinte tabela contem alguns dados basicos:Idade 13.7± 0.2× 109 anos ≈ 43.5× 1016 sTamanho ≥ 78× 109 anos-luzDensidade 9.9× 10−30g/cm3

Numero de atomos 1080

Numero de bits 10120

Numero de operacoeslogicas elementares atehoje

10120

Operacoes/s ≈ 2× 10102

(Todos o dados correspondem ao consenso cientıfico no momento; obviamentenovos descobrimentos podem os mudar. Fontes principais: [21, 1])

9

Page 12: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

Metodos para resolver um sistema de equacoes lineares Como resolver umsistema quadratico de equacoes lineares

a11x1 + a12x2 + · · ·+ a1nxn = b1

a21x1 + a22x2 + · · ·+ a2nxn = b2

· · ·an1x1 + an2x2 + · · ·+ annxn = bn

ou Ax = b? Podemos calcular a inversa da matriz A para chegar em x = bA−1.O metodo de Cramer nos fornece as equacoes

xi =det(Ai)det(A)

seja Ai a matriz resultante da substituicao de b pela i-gesima coluna de A.(A prova dessa fato e bastante simples. Seja Ui a matriz identidade com ai-gesima coluna substituıdo por x: e simples verificar que AUi = Ai. Comdet(Ui) = xi e det(A) det(Ui) = det(Ai) temos o resultado.) Portanto, se otrabalho de calcular o determinante de uma matriz de tamanho n × n e Tn,essa abordagem custa (n+1)Tn. Um metodo simples usa a formula de Leibniz

det(A) =∑

σ∈Sn

sgn(σ)∏

1≤i≤n

ai,σ(i)

mas ele precisa n! adicoes (A) e n!n multiplicacoes (M), e nossos custos sao

(n + 1)(n!A + n!nM) ≥ n!(A + M) ≈√

2πn(n/e)n(A + M)

um numero formidavel! Mas talvez a formula de Leibniz nao e o melhor jeitode calcular o determinante! Vamos tentar a formula de expansao de Laplace

det(A) =∑

1≤i≤n

(−1)i+jaij det(Aij)

(sendo Aij a matriz A sem linha a i e sem a coluna j). O trabalho Tn nessecaso e dado pelo recorrencia

Tn = n(A + M + Tn−1); T1 = 1

cuja solucao e

Tn = n!

1 + (A + M)∑

1≤i<n

1/i!

1

1n!P

1≤i<n 1/i! = bn!(e − 1)c.

10

Page 13: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

e como∑

1≤i<n 1/i! aproxima e temos n! ≤ Tn ≤ n!(1 + (A + M)e) e logo Tn

novamente e mais que n!. Mas qual e o metodo mais eficiente para calcularo determinante? Caso for possıvel em tempo proporcional ao tamanho daentrada n2, tivermos um algoritmo em tempo aproximadamente n3.Antes de resolver essa pergunta, vamos estudar uma abordagem diferente dapergunta original, o metodo de Gauss para resolver um sistema de equacoeslineares. Em n passos, o matriz e transformada em forma triangular e cadapasso nao precisa mais que n2 operacoes (nesse caso inclusive divisoes).

Eliminacao de Gauss

Entrada Uma matriz A = (aij) ∈ Rn×n

Saıda A em forma triangular superior.

1 e l imina c ao gauss (a ∈ Rn×n)=2 for i := 1, . . . , n do eliminate column i 3 for j := i + 1, . . . , n do eliminate row j 4 for k := n, . . . , i do5 ajk := ajk − aikaji/aii

6 end for7 end for8 end for

Exemplo 1.3Para resolver 1 2 3

4 5 77 8 9

x1

x2

x3

=

246

vamos aplicar a eliminacao de Gauss a matriz aumentada 1 2 3 2

4 5 7 47 8 9 6

obtendo 1 2 3 2

0 −3 −5 −40 −6 −12 −8

;

1 2 3 20 −3 −5 −40 0 −2 0

11

Page 14: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

e logo x3 = 0, x2 = 3/4, x1 = 1/2 e uma solucao. ♦

Logo temos um algoritmo que determina a solucao com∑1≤i≤n

3(n− i + 1)(n− i) = n3 − n

operacoes de ponto flutuante, que e (exceto valores de n bem pequenos) con-sideravelmente melhor que os resultados com n! operacoes acima2.Observe que esse metodo tambem fornece o determinante do matriz: ela eo produto dos elementos na diagonal! De fato, o metodo e um dos melhorespara achar o determinante. Observe tambem, que ela nao serve para melhoraro metodo de Cramer, porque a solucao do problema original ja vem junto3.

Qual o melhor algoritmo?

• Para um dado problema, existem diversos algoritmos com desempenhosdiferentes.

• Queremos resolver um sistema de equacoes lineares de tamanho n.

• O metodo de Cramer precisa ≈ 6n! operacoes de ponto flutuante (OPF).

• O metodo de Gauss precisa ≈ n3 − n OPF.

• Usando um computador de 3 GHz que e capaz de executar um OPF porciclo temos

n Cramer Gauss2 4 ns 2 ns3 12 ns 8 ns4 48 ns 20 ns5 240ns 40 ns10 7.3ms 330 ns20 152 anos 2.7 ms

2O resultado pode ser melhorado considerando que aji/aii nao depende do k3O estudo da complexidade do determinante tem muito mais aspectos interessantes. Um

deles e que o metodo de Gauss pode produzir resultados intermediarios cuja repre-sentacao precisa um numero exponencial de bits em relacao a entrada. Portanto, ometodo de Gauss formal mente nao tem complexidade O(n3). Resultados atuais mos-tram que uma complexidade de operacoes de bits n3.2 log ||A||1+o(1) e possıvel [15].

12

Page 15: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Motivacao para algoritmos eficientes

• Com um algoritmo ineficiente, um computador rapido nao ajuda!

• Suponha que uma maquina resolva um problema de tamanho N em umdado tempo.

• Qual tamanho de problema uma maquina 10 vezes mais rapida resolveno mesmo tempo?

Numero de operacoes Maquina rapidalog2 n N10

n 10Nn log2 n 10N (N grande)

n2√

10N ≈ 3.2N

n3 3√

10N ≈ 2.2N2n N + log2 10 ≈ N + 3.33n N + log3 10 ≈ N + 2.1

Exemplo 1.4Esse exemplo mostra como calcular os dados da tabela acima. Suponha umalgoritmo que precisa f(n) passos de execucao numa dada maquina e umaoutra maquina que e c vezes mais rapida. Portanto, ele e capaz de executar cvezes mais passos que a primeira. Ao mesmo tempo, qual seria o tamanho deproblema n′ que a nova maquina e capaz de resolver? Temos

f(n′) = cf(n).

Por exemplo para f(n) = log2 n e c = 10 (exemplo acima), temos

log2 n′ = 10 log2 n⇐⇒ n′ = n10.

Em geral obtemos

n′ = f−1(cf(n))

(isso faz sentido para funcoes monotonicas, que tem inversa). ♦

Crescimento de funcoes

13

Page 16: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

Crescimento de funcoes

1 ano ≈ 365.2425d ≈ 3.2× 107s

1 seculo ≈ 3.2× 109s

1 milenio ≈ 3.2× 1010s

Comparar eficiencias

• Como comparar eficiencias? Uma medida concreta do tempo depende

– do tipo da maquina usada (arquitetura, cache, memoria, ...)

– da qualidade e das opcoes do compilador ou ambiente de execucao

– do tamanho do problema (da entrada)

• Portanto, foram inventadas maquinas abstratas.

• A analise da complexidade de um algoritmo consiste em determinar onumero de operacoes basicas (atribuicao, soma, comparacao, ...) emrelacao ao tamanho da entrada.

Observe que nessa medida o tempo e “discreto”.

14

Page 17: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Analise assintotica

• Em geral, o numero de operacoes fornece um nıvel de detalhamentogrande.

• Portanto, analisamos somente a taxa ou ordem de crescimento, substi-tuindo funcoes exatas com cotas mais simples.

• Duas medidas sao de interesse particular: A complexidade

– pessimista e

– media

Tambem podemos pensar em considerar a complexidade otimista (no casomelhor): mas essa medida faz pouco sentido, porque sempre e possıvel enganarcom um algoritmo que e rapido para alguma entrada.

Exemplo

• Imagine um algoritmo com numero de operacoes

an2 + bn + c

• Para analise assintotica nao interessam

– os termos de baixa ordem, e

– os coeficientes constantes.

• Logo o tempo da execucao tem cota n2, denotado com O(n2).

Observe que essas simplificacoes nao devem ser esquecidas na escolha de umalgoritmo na pratica. Existem varios exemplos de algoritmos com desempe-nho bom assintoticamente, mas nao sao viaveis na pratica em comparacaocom algoritmos “menos eficientes”: A taxa de crescimento esconde fatoresconstantes e o tamanho mınimo de problema tal que um algoritmo e maisrapido que um outro.

Complexidade de algoritmos

• Considere dois algoritmos A e B com tempo de execucao O(n2) e O(n3),respectivamente. Qual deles e o mais eficiente ?

• Considere dois programas A e B com tempos de execucao 100 · n2 mili-segundos,e 5 ·n3 milisegundos, respectivamente, qual e o mais eficiente?

15

Page 18: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

Exemplo 1.5Considerando dois algoritmos com tempo de execucao O(n2) e O(n3) espera-mos que o primeiro seja mais eficiente que o segundo. Para n grande, isso everdadeiro, mas o tempo de execucao atual pode ser 100n2 no primeiro e 5n3

no segundo caso. Logo para n < 20 o segundo algoritmo e mais rapido. ♦

Comparacao de tempo de execucao

• Assintoticamente consideramos um algoritmo com complexidade O(n2)melhor que um algoritmo com O(n3).

• De fato, para n suficientemente grande O(n2) sempre e melhor.

• Mas na pratica, nao podemos esquecer o tamanho do problema real.

1050

100000

80000

60000

40000

20000

0

x

30252015

n^2

n^3

Exemplo 1.6Considere dois computadores C1 e C2 que executam 107 e 109 operacoes porsegundo (OP/s) e dois algoritmos de ordenacao A e B que necessitam 2n2 e50n log10 n operacoes com entrada de tamanho n, respectivamente. Qual otempo de execucao de cada combinacao para ordenar 106 elementos?Algoritmo Comp. C1 Comp. C2

A 2×(106)2OP107OP/s = 2× 105s 2×(106)2OP

109OP/s = 2× 103s

B 50(106) log 106OP107OP/s = 30s 50(106) log 106OP

109OP/s = 0.3s

16

Page 19: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Um panorama de tempo de execucao

• Tempo constante: O(1) (raro).

• Tempo sublinear (log(n), log(log(n)), etc): Rapido. Observe que o al-goritmo nao pode ler toda entrada.

• Tempo linear: Numero de operacoes proporcional a entrada.

• Tempo n log n: Comum em algoritmos de divisao e conquista.

• Tempo polinomial nk: Frequentemente de baixa ordem (k ≤ 10), consi-derado eficiente.

• Tempo exponencial: 2n, n!, nn considerado intratavel.

Exemplo 1.7Exemplos de algoritmos para as complexidades acima:

• Tempo constante: Determinar se uma sequencia de numeros comecacom 1.

• Tempo sublinear: Busca binaria.

• Tempo linear: Buscar o maximo de uma sequencia.

• Tempo n log n: Mergesort.

• Tempo polinomial: Multiplicacao de matrizes.

• Tempo exponencial: Busca exaustiva de todos subconjuntos de um con-junto, de todas permutacoes de uma sequencia, etc.

Problemas super-polinomiais?

• Consideramos a classe P de problemas com solucao em tempo polinomialtratavel.

• NP e outra classe importante que contem muitos problemas praticos (ea classe P).

• Nao se sabe se todos possuem algoritmo eficiente.

17

Page 20: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

• Problemas NP-completos sao os mais complexos do NP: Se um delestem uma solucao eficiente, toda classe tem.

• Varios problemas NP-completos sao parecidos com problemas que temalgoritmos eficientes.

Solucao eficiente conhecida Solucao eficiente improvavelCiclo euleriano Ciclo hamiltonianoCaminho mais curto Caminho mais longoSatisfatibilidade 2-CNF Satisfatibilidade 3-CNF

Ciclo euleriano

Instancia Um grafo nao-direcionado G = (V,E).

Decisao Existe um ciclo euleriano, i.e. um caminho v1, v2, . . . , vn tal quev1 = vn que usa todos arcos exatamente uma vez?

Comentario Tem uma decisao em tempo linear usando o teorema deEuler (veja por exemplo [8, Teorema 1.8.1]) que um grafo conexocontem um ciclo euleriano sse cada no tem grau par. No caso de umgrafo direcionado tem um teorema correspondente: um grafo forte-mente conexo contem um ciclo euleriano sse cada no tem o mesmonumero de arcos entrantes e saintes.

Ciclo hamiltoniano

Instancia Um grafo nao-direcionado G = (V,E).

Decisao Existe um ciclo hamiltanio, i.e. um caminho v1, v2, . . . , vn talque v1 = vn que usa todos nos exatamente uma unica vez?

1.1. Notacao assintotica

O analise de algoritmos considera principalmente recursos como tempo eespaco. Analisando o comportamento de um algoritmo em termos do ta-manho da entrada significa achar uma funcao c : N → R+, que associa comtodos entradas de um tamanho n um custo (medio,maximo) c(n). Observe,

18

Page 21: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1.1. Notacao assintotica

que e suficiente trabalhar com funcoes positivas (com co-domınio R+), por-que os recursos de nosso interesse sao positivos. A seguir, supomos que todasfuncoes sao dessa forma.

Notacao assintotica: O

• Frequentemente nosso interesse e o comportamento assintotico de umafuncao f(n) para n→∞.

• Por isso, vamos introduzir classes de crescimento.

• O primeiro exemplo e a classe de funcoes que crescem menos ou igualque g(n)

O(g(n)) = f : N→ R+|(∃c > 0)∃n0(∀n > n0) : f(n) ≤ cg(n)

A definicao do O (e as outras definicoes em seguido) podem ser generalizadaspara qualquer funcao com domınio R.

Notacao assintotica: O

Notacao assintotica

19

Page 22: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

• Com essas classes podemos escrever por exemplo

4n2 + 2n + 5 ∈ O(n2)

• Outra notacao comum que usa a identidade e

4n2 + 2n + 5 = O(n2)

• Observe que essa notacao e uma “equacao unica” (ingles: one-way equa-tion);

O(n2) = 4n2 + 2n + 5

nao e definido.

Para f ∈ O(g) leia: “f e do ordem de g”; para f = O(g) leiamos as vezessimplesmente “f e O de g”. Observe numa equacao como 4n2 = O(n2), asexpressoes 4n2 e n2 denotam funcoes, nao valores. Um jeito mais correto (masmenos confortavel) seria escrever λn.4n2 = O(λn.n2).Caso f ∈ O(g) com constante c = 1, digamos que g e uma cota assintoticasuperior de f [27, p. 15]. Em outras palavras, O define uma cota assintoticasuperior a menos de constantes.

O: Exemplos

5n2 + n/2 ∈ O(n3)

5n2 + n/2 ∈ O(n2)sin(n) ∈ O(1)

Exemplo 1.8Mais exemplos

n2 ∈ O(n3 log2 n) c = 1;n0 = 2

32n ∈ O(n3) c = 32;n0 = 1

10nn2 6∈ O(n2n) porque 10nn2 ≤ cn2n ⇐⇒ 5nn ≤ c

n log2 n ∈ O(n log10 n) c = 4;n0 = 1

20

Page 23: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1.1. Notacao assintotica

O: Exemplos

Proposicao 1.1Para um polinomio p(n) =

∑0≤i≤m ain

i temos

|p(n)| ∈ O(nm) (1.1)

Prova.

|p(n)| =

∣∣∣∣∣∣∑

0≤i≤m

aini

∣∣∣∣∣∣≤

∑0≤i≤m

|ai|ni Corolario A.1

≤∑

0≤i≤m

|ai|nm = nm∑

0≤i≤m

|ai|

Notacao assintotica: Outras classes

• Funcoes que crescem (estritamente) menos que g(n)

o(g(n)) = f : N→ R+|(∀c > 0)∃n0(∀n > n0) : f(n) ≤ cg(n) (1.2)

• Funcoes que crescem mais ou igual a g(n)

Ω(g(n)) = f : N→ R+|(∃c > 0)∃n0(∀n > n0) : f(n) ≥ cg(n) (1.3)

• Funcoes que crescem (estritamente) mais que g(n)

ω(g(n)) = f : N→ R+|(∀c > 0)∃n0(∀n > n0) : f(n) ≥ cg(n) (1.4)

• Funcoes que crescem igual a g(n)

Θ(g(n)) = O(g(n)) ∩ Ω(g(n)) (1.5)

Observe que a nossa notacao somente e definida “ao redor do ∞”, que esuficiente para a analise de algoritmos. Equacoes como ex = 1 + x + O(x2),usadas no calculo, possuem uma definicao de O diferente.As definicoes ficam equivalente, substituindo < para ≤ e > para ≥ (vejaexercıcio 1.5).

21

Page 24: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

Convencao 1.1Se o contexto permite, escrevemos f ∈ O(g) ao inves de f(n) ∈ O(g(n)),f ≤ cg ao inves de f(n) ≤ cg(n) etc.

Proposicao 1.2 (Caracterizacao alternativa)Caracterizacoes alternativas de O, o,Ω e ω sao

f(n) ∈ O(g(n))⇐⇒ lim supn→∞

f(n)g(n)

<∞ (1.6)

f(n) ∈ o(g(n))⇐⇒ limn→∞

f(n)g(n)

= 0 (1.7)

f(n) ∈ Ω(g(n))⇐⇒ lim infn→∞

f(n)g(n)

> 0 (1.8)

f(n) ∈ ω(g(n))⇐⇒ limn→∞

f(n)g(n)

=∞ (1.9)

Prova. Prova de 1.6:“⇒”: Seja f ∈ O(g). Como s(n) = supm≥n f(m)/g(m) e nao-crescente emaior ou igual que 0, e suficiente mostrar que existe um n tal que s(n) <∞.Por definicao do O temos c > 0 e n0 tal que ∀n > n0 f ≤ cg. Logo ∀n >n0 supm≥n f(m)/g(m) ≤ c.“⇐”: Seja lim supn→∞ f(n)/g(n) <∞. Entao

∃c > 0∃n0∀n > n0( supm≥n

f(m)/g(m)) < c.

Isso implica, que para o mesmo n0, ∀n > n0 f < cg e logo f ∈ O(g).Prova de 1.7:“⇒”: Seja f ∈ o(g), i.e. para todo c > 0 temos um n0 tal que ∀n > n0 f ≤ cg.Logo ∀n > n0 f(n)/g(n) ≤ c, que justifique limn→∞ f(n)/g(n) = 0 (vejalema A.1).“⇐”: Seja limn→∞ f(n)/g(n) = 0, i.e. para todo c > 0 existe um n0 tal que∀n > n0 f(n)/g(n) < c pela definicao do limite. Logo ∀n > n0 f ≤ cg, tal quef ∈ o(g).Prova de 1.8:“⇒”: Seja f ∈ Ω(g). Como i(n) = infm≥n f(m)/g(m) e nao-decrescente, esuficiente mostrar, que existe um n tal que i(n) > 0. Pela definicao de Ωexistem c > 0 e n0 tal que ∀n > n0 f ≥ cg. Logo ∀n > n0 f(n)/g(n) ≥ c > 0,i.e. i(n0 + 1) > 0.“⇐”: Suponha lim infn→∞ f(n)/g(n) = l > 0. Vamos considerar os casosl <∞ e l =∞ separadamente.

22

Page 25: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1.1. Notacao assintotica

Caso l <∞: Escolhe, por exemplo, c = l/2. Pela definicao do limite existe n0

tal que ∀n > n0 |l − f/g| ≤ l/2. Logo f ≥ l/2g (f/g aproxima l por baixo) ef ∈ Ω(g).Caso l = ∞, i(n) nao tem limite superior, i.e. (∀c > 0)∃n0 i(n0) > c. Comoi(n) e nao-decrescente isso implica (∀c > 0)∃n0(∀n > n0) i(n) > c. Portanto∀n > n0f > cg e f ∈ ω(g) ⊆ Ω(g).Prova de 1.9:

f ∈ ω(g)⇐⇒ (∀c > 0)∃n0(∀n > n0) : f ≥ cg

⇐⇒ (∀c > 0)∃n0(∀n > n0) : f(n)/g(n) ≥ c

⇐⇒ f(n)/g(n) nao tem limite

Convencao 1.2Escrevemos f, g, . . . para funcoes f(n), g(n), . . . caso nao tem ambiguedade nocontexto.

Operacoes

• As notacoes assintoticas denotam conjuntos de funcoes.

• Se um conjunto ocorre em uma formula, resulta o conjunto de todascombinacoes das partes.

• Exemplos: nO(1), log O(n2), n1+o(1), (1− o(1)) lnn

• Em uma equacao o lado esquerdo e (implicitamente) quantificado uni-versal, e o lado direto existencial.

• Exemplo: n2 + O(n) = O(n4) Para todo f ∈ O(n), existe um g ∈ O(n4)tal que n2 + f = g.

Exemplo 1.9nO(1) denota

nf(n) | ∃c f(n) ≤ c ⊆ f(n) | ∃c∃n0 ∀n > n0 f(n) ≤ nc

o conjunto das funcoes que crescem menos que um polinomio. ♦

Uma notacao assintotica menos comum e O que e uma abreviacao para f =O(g logk g) para algum k. O e usado se fatores logarıtmicos nao importam.

23

Page 26: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

Caracterısticas

f = O(f) (1.10)cO(f) = O(f) (1.11)

O(f) + O(f) = O(f) (1.12)O(O(f)) = O(f) (1.13)

O(f)O(g) = O(fg) (1.14)O(fg) = fO(g) (1.15)

Prova.Prova de 1.10: Escolhe c = 1, n0 = 0.Prova de 1.11: Se g ∈ cO(f), temos g = cg′ e existem c′ > 0 e n0 tal que∀n > n0 g′ ≤ c′f . Portanto ∀n > n0 g = cg′ ≤ cc′f e com cc′ e n0 temosg ∈ O(f).Prova de 1.12: Para g ∈ O(f) + O(f) temos g = h + h′ com c > 0 e n0 talque ∀n > n0 h ≤ cf e c′ > 0 e n′0 tal que ∀n > n0 h′ ≤ c′f . Logo paran > max(n0, n

′0) temos g = h + h′ ≤ (c + c′)f .

Prova de 1.13: Para g ∈ O(O(f)) temos g ≤ ch com h ≤ c′f a partir deındices n0 e n′0, e logo g ≤ cc′h a partir de max(n0, n

′0).

Prova de 1.14: h = f ′g′ com f ′ ≤ cff e g′ ≤ cgg tal que h = f ′g′ ≤ cfcgfg.Prova de 1.15: Para h ∈ O(fg) temos c > 0 e n0 tal que ∀n > n0 h ≤ cfg.Temos que mostrar, que h pode ser escrito como h = fg′ com g′ ∈ O(g). Seja

g′(n) =

h(n)/f(n) se f(n) 6= 0cg(n) caso contrario

Verifique-se que h = fg′ por analise de casos. Com isso, temos tambemg′ = h/f ≤ cfg/f = cg nos casos f(n) 6= 0 e g′ = cg ≤ cg caso contrario. As mesmas caracterısticas sao verdadeiras para Ω (prova? veja exercıcio 1.1).E para o, ω e Θ?

Caracterısticas

f = O(h) ∧ g = O(h)⇒ f + g = O(h)g = O(f)⇒ f + g = Θ(f)

A segunda caracterıstica se chama “princıpio de absorcao” [27, p. 35].

24

Page 27: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1.1. Notacao assintotica

Relacoes de crescimento A motivacao pela notacao O e o seu uso no meiode formulas. Para os casos em que isso nao for necessario, podemos introduzirrelacoes de crescimento entre funcoes com uma notacao mais comum. Umadefinicao natural e

Relacoes de crescimento

Definicao 1.1 (Relacoes de crescimento)

f ≺ g ⇐⇒ f ∈ o(g) (1.16)f g ⇐⇒ f ∈ O(g) (1.17)f g ⇐⇒ f ∈ ω(g) (1.18)f g ⇐⇒ f ∈ Ω(g) (1.19)f g ⇐⇒ f ∈ Θ(g) (1.20)

Essas relacoes tambem sao conhecidas como a notacao de Vinogradov. Umavariante comum dessa notacao usa para e para (infelizmente anotacao nessa area nao e muito padronizada.)Caso f g digamos as vezes “f e absorvido pela g”. Essas relacoes satisfazemas caracterısticas basicas esperadas.

Caracterısticas das relacoes de crescimento

Proposicao 1.3 (Caracterısticas das relacoes de crescimento)Sobre o conjunto de funcoes [N→ R+]

1. f g ⇐⇒ g f ,

2. e sao ordenacoes parciais (reflexivas, transitivas e anti-simetricasem relacao de ),

3. f ≺ g ⇐⇒ g f ,

4. ≺ e sao transitivas,

5. e uma relacao de equivalencia.

Prova.

25

Page 28: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

1. Temos as equivalencias

f g ⇐⇒ f ∈ O(g)⇐⇒ ∃c ∃n0 ∀n > n0 f ≤ cg

⇐⇒ ∃c′ ∃n0 ∀n > n0 g ≥ c′f com c′ = 1/c

⇐⇒ g ∈ Ω(f)

2. A reflexividade e transitividade sao faceis de verificar. No exemplo do, f f , porque ∀nf(n) ≤ f(n) e f g, g h garante que a partir deum n0 temos f ≤ cg e g ≤ c′h e logo f ≤ (cc′)h tambem. Caso f g eg f temos com item (a) f g e logo f g pela definicao de Θ.

3. Temos as equivalencias

f ≺ g ⇐⇒ f ∈ o(g)⇐⇒ ∀c ∃n0 ∀n > n0 f ≤ cg

⇐⇒ ∀c′ ∃n0 ∀n > n0 g ≥ c′f com c′ = 1/c

⇐⇒ g ∈ ω(f)

4. O argumento e essencialmente o mesmo que no item (a).

5. Como Θ e definido pela interseccao de O e Ω, a sua reflexividade etransitividade e uma consequencia da reflexividade e transitividade doO e Ω. A simetria e uma consequencia direta do item (a).

Observe que esses resultados podem ser traduzidos para a notacao O. Porexemplo, como e uma relacao de equivalencia, sabemos que Θ tambemsatisfaz

f ∈ Θ(f)f ∈ Θ(g)⇒ g ∈ Θ(f)

f ∈ Θ(g) ∧ g ∈ Θ(h)⇒ f ∈ Θ(h)

A notacao com relacoes e sugestiva e frequentemente mais facil de usar, masnem todas as identidades que ela sugere sao validas, como a seguinte pro-posicao mostra.

Identidades falsas das relacoes de crescimento

26

Page 29: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1.2. Notas

Proposicao 1.4 (Identidades falsas das relacoes de crescimento)E verdadeiro que

f g ⇒ f 6 g (1.21)f ≺ g ⇒ f 6 g (1.22)

mas as seguintes afirmacoes nao sao verdadeiras:

f 6 g ⇒ f g

f 6 g ⇒ f ≺ g

f ≺ g ∨ f g ∨ f g (Tricotomia)

Prova. Prova de 1.21 e 1.22: Suponha f g e f g. Entao existe um ctal que a partir de um n0 temos que f = cg (usa as definicoes). Mas entaof 6 g e uma contradicao. A segunda caracterıstica pode ser provada com umargumento semelhante.Para provar as tres afirmacoes restantes considere o par de funcoes n e en sin(n).Verifique-se que nenhuma relacao ≺, , , ou e verdadeira. Considerando essas caracterısticas, a notacao tem que ser usada com cau-tela. Uma outra abordagem e definir O etc. diferente, tal que outras relacoesacima sao verdadeiras. Mas parece que isso nao e possıvel, sem perder outras,veja [29].

Outras notacoes comuns

Definicao 1.2O logaritmo iterado e

log∗ n =

0 se n ≤ 11 + log∗(log n) caso contrario

O logaritmo iterado e uma funcao que cresce extremamente lento; para valorespraticos de n, log∗ n nao ultrapassa 5.

1.2. Notas

Alan Turing provou em 1936 que o “problema de parada” nao e decidıvel.O estudo da complexidade de algoritmos comecou com o artigo seminal deHartmanis e Stearns [12].

27

Page 30: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1. Introducao e conceitos basicos

1.3. Exercıcios

(Solucoes a partir da pagina 221.)

Exercıcio 1.1Prove as caracterısticas 1.10 ate 1.15 (ou caracterısticas equivalentes caso al-guma nao se aplica) para Ω.

Exercıcio 1.2Prove ou mostre um contra-exemplo. Para qualquer constante c ∈ R, c > 0

f ∈ O(g)⇐⇒ f + c ∈ O(g) (1.23)

Exercıcio 1.3Prove ou mostre um contra-exemplo.

1. log(1 + n) = O(log n)

2. log O(n2) = O(log n)

3. log log n = O(log n)

Exercıcio 1.4Considere a funcao definido pela recorrencia

fn = 2fn−1; f0 = 1.

Professor Veloz afirme que fn = O(n), e que isso pode ser verificado simples-mente da forma

fn = 2fn−1 = 2O(n− 1) = 2O(n) = O(n)

Mas sabendo que a solucao dessa recorrencia e fn = 2n temos duvidas que2n = O(n). Qual o erro do professor Veloz?

Exercıcio 1.5Mostre que a definicao

o(g(n)) = f : N→ R+|(∀c > 0)∃n0(∀n > n0) : f(n) < cg(n)

(denotado com o para diferenciar da definicao o) e equivalente com a definicao1.2 para funcoes g(n) que sao diferente de 0 a partir de um n0.

28

Page 31: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

1.3. Exercıcios

Exercıcio 1.6Mostre que o numeros Fibonacci

fn =

n se 0 ≤ n ≤ 1fn−2 + fn−1 se n ≥ 2

tem ordem assintotica fn ∈ Θ(Φn) com Φ = (1 +√

5)/2.

Exercıcio 1.7Prove a seguinte variacao do princıpio de absorcao:

g ∈ o(f)⇒ f − g ∈ Θ(f).

Exercıcio 1.8Prove que

f ≤ g ⇒ O(f) = O(g).

Exercıcio 1.9Prove que Θ(f) = O(f), mas o contrario O(f) = Θ(f) nao e correto.

29

Page 32: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 33: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

2.1. Introducao

Para analisar a eficiencia de algoritmos faz pouco sentido medir os recur-sos gastos em computadores especıficos, porque devido a diferentes conjuntosde instrucoes, arquiteturas e desempenho dos processadores, as medidas saodifıceis de comparar. Portanto, usamos um modelo de uma maquina que re-flita as caracterısticas de computadores comuns, mas e independente de umaimplementacao concreta. Um modelo comum e a maquina de RAM com asseguintes caracterısticas:

• um processador com um ou mais registros, e com apontador de ins-trucoes,

• um memoria e

• um conjunto de instrucoes fundamentais que podem ser executadas emtempo O(1) (por exemplo funcoes basicas sobre numeros inteiros e deponto flutuante, acesso a memoria e transferencia de dados); essas operacoesrefletem operacoes tıpicas de maquinas concretas.

Observe que a escolha de um modelo abstrato nao e totalmente trivial. Conhe-cemos varios modelos de computadores, cuja poder computacional nao e equi-valente em termos de complexidade (que nao viola a tese de Church-Turing).Mas todos os modelos encontrados (fora da computacao quantica) sao poli-nomialmente equivalentes, e portanto, a nocao de eficiencia fica a mesma. Atese que todos modelos computacionais sao polinomialmente equivalentes asvezes esta chamado tese de Church-Turing estendida.

O planoUma hierarquia de abstracoes:

Tempo deexecucao [s]

//Numero deoperacoes

// Operacoes nocaso pessimista

//Complexidade

pessimistaassintotica

Custos de execucoes

• Seja E o conjunto de sequencias de operacoes fundamentais.

31

Page 34: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

• Para um algoritmo a, com entradas D seja

exec[a] : D → E

a funcao que fornece a sequencia de instrucoes executadas exec[a](d)para cada entrada d ∈ D.

• Se atribuımos custos para cada operacao basica, podemos calcular tambemo custo de uma execucao

custo : E → R+

• e o custo da execucao do algoritmo a depende da entrada d

desemp[a] : D → R+ = custo exec[a]

Definicao 2.1O sımbolo denota a composicao de funcoes tal que

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

(leia: “f depois g”).

Em geral, nao interessam os custos especıficos para cada entrada, mas o “com-portamento” do algoritmo. Uma medida natural e como os custos crescem como tamanho da entrada.

Condensacao de custos

• Queremos condensar os custos para uma unica medida.

• Essa medida depende somente do tamanho da entrada

tam : D → N

• O objetivo e definir uma funcao

aval[a](n) : N→ R+

que define o desempenho do algoritmo em relacao ao tamanho.

• Como, em geral, tem varias entradas d tal que tam(d) = n temos quedefinir como condensar a informacao de desemp[a](d) delas.

Observe que as vezes R+ e denotado R+.

32

Page 35: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.1. Introducao

Condensacao

Entrada ?>=<89:;Ddesemp

//

tam

GFED@ABCR+

OO

Custo da instancia

Tamanho ?>=<89:;Naval// GFED@ABCR+ Custo com tamanho n

Condensacao

• Na pratica, duas medidas condensadas sao de interesse particular

• A complexidade pessimista

C=p [a](n) = maxdesemp[a](d) | d ∈ D, tam(d) = n

• A complexidade media

Cm[a](n) =∑

tam(d)=n

P (d) desemp[a](d)

• Observe: A complexidade media e o valor esperado do desempenho deentradas com tamanho n.

• Ela e baseada na distribuicao das entradas.

A complexidade media e menos usada na pratica, por varias razoes. Primei-ramente, uma complexidade pessimista significa um desempenho garantido,independente da entrada. Em comparacao, uma complexidade media de, porexemplo, O(n2), nao exclui que em certos casos uma entrada com tamanhon precisa muito mais tempo. Por isso, se e importante saber quando umaexecucao de um algoritmo termina, preferimos a complexidade pessimista.Mesmo assim, para varios algoritmos com desempenho ruim no pior caso, es-tamos interessados como eles se comportam na media (complexidade media).Infelizmente, ela e difıcil de determinar. Alem disso, ela depende da distri-buicao das entradas, que frequentemente nao e conhecida ou difıcil de deter-minar, ou e diferente em aplicacoes diferentes.

Definicao alternativa

• A complexidade pessimista e definida como

C=p [a](n) = maxdesemp[a](d) | d ∈ D, tam(d) = n

33

Page 36: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

• Uma definicao alternativa e

C≤p [a](n) = maxdesemp[a](d) | d ∈ D, tam(d) ≤ n

• C≤p e monotonica e temos

C=p [a](n) ≤ C≤

p [a](n)

• Caso C=p seja monotonica as definicoes sao equivalentes

C=p [a](n) = C≤

p [a](n)

C=p [a](n) ≤ C≤

p [a](n) e uma consequencia da observacao que

desemp[a](d) | d ∈ D, tam(d) = n ⊆ desemp[a](d) | d ∈ D, tam(d) ≤ n

Analogamente, se A ⊆ B tem-se que maxA ≤ max B.

Exemplo 2.1Vamos aplicar essas nocoes num exemplo de um algoritmo simples. O objetivoe decidir se uma sequencia de numeros naturais contem o numero 1.

Busca1

Entrada Uma sequencia a1, . . . , an de numeros em N.

Saıda True, caso existe um i tal que ai = 1, false, caso contrario.

1 for i :=1 to n do2 i f (ai = 1) then3 return t rue4 end i f5 end for6 return f a l s e

Para analisar o algoritmo, podemos escolher, por exemplo, as operacoes basicasO = for, if, return e atribuir um custo constante de 1 para cada um de-las. (Observe que como “operacao basica” for sao consideradas as operacoesde atribuicao, incremento e teste da expressao booleana i ≤ n.) Logo asexecucoes possıveis sao E = O∗ (o fecho de Kleene de O) e temos a funcao decustos

34

Page 37: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.2. Complexidade pessimista

custo : E → R+ : e 7→ |e|.

Por exemplo custo((for, for, if, return)) = 4. As entradas desse algoritmo saosequencias de numeros naturais, logo, D = N∗ e como tamanho da entradaescolhemos

tam : D → N : (a1, . . . , an) 7→ n.

A funcao de execucao atribui a sequencia de operacoes executadas a qualquerentrada. Temos

exec[Busca1](d) : D → E :

(a1, . . . , an) 7→

(for, if)ireturn caso existe i = minj | aj = 1(for, if)nreturn caso contrario

Com essas definicoes temos tambem a funcao de desempenho

desemp[Busca1](n) = custo exec[Busca1] :

(a1, . . . , an) 7→

2i + 1 caso existe i = minj | aj = 12n + 1 caso contrario

Agora podemos aplicar a definicao da complexidade pessimista para obter

C≤p [Busca1](n) = maxdesemp[Busca1](d) | tam(d) = n = 2n + 1 = O(n).

Observe que C=p e monotonica, e portanto C=

p = C≤p .

Um caso que em geral e menos interessante podemos tratar nesse exemplotambem: Qual e a complexidade otimista (complexidade no caso melhor)? Issoacontece quando 1 e o primeiro elemento da sequencia, logo, Co[Busca1](n) =2 = O(1).

2.2. Complexidade pessimista

2.2.1. Metodologia de analise de complexidade

Uma linguagem simples

• Queremos estudar como determinar a complexidade de algoritmos me-todicamente.

• Para este fim, vamos usar uma linguagem simples que tem as operacoesbasicas de

35

Page 38: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

1. Atribuicao: v:=e

2. Sequencia: c1;c2

3. Condicional: se b entao c1 senao c2

4. Iteracao definida: para i de j ate m faca c

5. Iteracao indefinida: enquanto b faca c

A forma se b entao c1 vamos tratar como abreviacao de se b entao c1 else skipcom comando skip de custo 0.Observe que a metodologia nao implica que tem um algoritmo que, dado umalgoritmo como entrada, computa a complexidade dele. Este problema nao ecomputavel (por que?).

Convencao 2.1A seguir vamos entender implicitamente todas operacoes sobre funcoes pon-tualmente, i.e. para alguma operacao , e funcoes f, g com dom(f) = dom(g)temos

∀d ∈ dom(f) (f g) = f(d) g(d).

Componentes

• A complexidade de um algoritmo pode ser analisada em termos de suascomponentes (princıpio de composicionalidade).

• Pode-se diferenciar dois tipos de componentes: componentes conjuntivase componentes disjuntivas.

• Objetivo: Analisar as componentes independentemente (como sub-algoritmos)a depois compor as complexidades delas.

Composicao de componentes

• Cautela: Na composicao de componentes o tamanho da entrada podemudar.

• Exemplo: Suponha que um algoritmo A produz, a partir de uma lista detamanho n, uma lista de tamanho n2 em tempo Θ(n2). n // A // n2 // A // n4

• A sequencia A;A, mesmo sendo composta pelos dois algoritmos comΘ(n2) individualmente, tem complexidade Θ(n4).

• Portanto, vamos diferencar entre

36

Page 39: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.2. Complexidade pessimista

– algoritmos que preservam (assintoticamente) o tamanho, e

– algoritmos em que modificam o tamanho do problema.

• Neste curso tratamos somente o primeiro caso.

Componentes conjuntivas

A sequencia

• Considere uma sequencia c1; c2.

• Qual a sua complexidade cp[c1; c2] em termos dos componentes cp[c1] ecp[c2]?

• Temos

desemp[c1; c2] = desemp[c1]+desemp[c2] ≥ max(desemp[c1],desemp[c2])

e portanto (veja A.8)

max(cp[c1], cp[c2]) ≤ cp[c1; c2] ≤ cp[c1] + cp[c2]

e como f + g ∈ O(max(f, g)) tem-se que

cp[c1; c2] = Θ(cp[c1] + cp[c2]) = Θ(max(cp[c1], cp[c2]))

Prova.

max(desemp[c1](d), desemp[c2](d)) ≤ desemp[c1; c2](d)

= desemp[c1](d) + desemp[c2](d)

logo para todas entradas d com tam(d) = n

maxd

max(desemp[c1](d), desemp[c2](d)) ≤ maxd

desemp[c1; c2](d)

= maxd

(desemp[c1](d) + desemp[c2](d))

⇐⇒ max(cp[c1], cp[c2]) ≤ cp[c1; c2] ≤ cp[c1] + cp[c2]

Exemplo 2.2Considere a sequencia S ≡ v := ordena(u);w := soma(u) com complexidadescp[v := ordena(u)](n) = n2 e cp[w := soma(u)](n) = n. Entao cp[S] =Θ(n2 + n) = Θ(n2). ♦

37

Page 40: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Exemplo 2.3Considere uma particao das entradas do tamanho n tal que d ∈ D|tam(d) =n = D1(n)

.∪ D2(n) e dois algoritmos A1 e A2, A1 precisa n passos para

instancias em D1, e n2 para instancias em D2. A2, contrariamente, precisa n2

para instancias em D1, e n passos para instancias em D2. Com isso obtemos

cp[A1] = n2; cp[A2] = n2; cp[A1;A2] = n2 + n

e portanto

max(cp[A1], cp[A2]) = n2 < cp[A1;A2] = n2 + n < cp[A1] + cp[A2] = 2n2

A atribuicao: Exemplos

• Considere os seguintes exemplos.

• Inicializacao ou transferencia da variaveis inteiras tem complexidadeO(1)

i := 0; j := i

• Determinar o maximo de uma lista de elementos v tem complexidadeO(n)

m := max(v)

• Inversao de uma lista u e atribuicao para w tem complexidade 2n ∈ O(n)

w := reversa(u)

A atribuicao

• Logo, a atribuicao depende dos custos para a avaliacao do lado direitoe da atribuicao, i.e.

desemp[v := e] = desemp[e] + desemp[←e]

• Ela se comporta como uma sequencia dessas duas componentes, portanto

cp[v := e] = Θ(cp[e] + cp[←e])

• Frequentemente cp[←e] e absorvida pelo cp[e] e temos

cp[v := e] = Θ(cp[e])

38

Page 41: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.2. Complexidade pessimista

Exemplo 2.4Continuando o exemplo 2.2 podemos examinar a atribuicao v := ordene(w).Com complexidade pessimista para a ordenacao da lista cp[ordene(w)] =O(n2) e complexidade cp[←e] = O(n) para a transferencia, temos cp[v :=ordene(w)] = O(n2) + O(n) = O(n2). ♦

Iteracao definidaSeja C =para i de j ate m faca c

• O numero de iteracoes e fixo, mas j e m dependem da entrada d.

• Seja N(n) = maxm(d)− j(d) + 1|tam(d) ≤ n e N∗(n) = N(n), 0.

• N∗(n) e o maximo de iteracoes para entradas de tamanho ate n.

• Tendo N∗, podemos tratar a iteracao definida como uma sequencia

c; c; · · · ; c︸ ︷︷ ︸N∗(n)vezes

que resulta emcp[C] ≤ N∗ cp[c]

Iteracao indefinidaSeja C =enquanto b faca c

• Para determinar a complexidade temos que saber o numero de iteracoes.

• Seja H(d) o numero da iteracao (a partir de 1) em que a condicao e falsapela primeira vez

• e h(n) = maxH(d)|tam(d) ≤ n o numero maximo de iteracoes comentradas ate tamanho n.

• Em analogia com a iteracao definida temos uma sequencia

b; c; b; c; · · · ; b; c︸ ︷︷ ︸h(n)−1vezes

; b

e portantocp[C] ≤ (h− 1)cp[c] + hcp[b]

• Caso o teste b e absorvido pelo escopo c temos

cp[C] ≤ (h− 1)cp[c]

Observe que pode ser difıcil de determinar o numero de iteracoes H(d); emgeral a questao nao e decidıvel.

39

Page 42: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Componentes disjuntivas

Componentes disjuntivas

• Suponha um algoritmo c que consiste em duas componentes disjuntivasc1 e c2. Logo,

desemp[c] ≤ max(desemp[c1],desemp[c2])

e temos

cp[a] ≤ max(cp[c1], cp[c2])

Caso a expressao para o maximo de duas funcoes for difıcil, podemos simpli-ficar

cp[a] ≤ max(cp[c1], cp[c2]) = O(max(cp[c1], cp[c2])).

O condicional

Seja C =se b entao c1 senao c2

• O condicional consiste em

– uma avaliacao da condicao b

– uma avaliacao do comando c1 ou c2 (componentes disjuntivas).

• Aplicando as regras para componentes conjuntivas e disjuntivas obtemos

cp[C] ≤ cp[b] + max(cp[c1], cp[c2])

Para se b entao c1 obtemos com cp[skip] = 0

cp[C] ≤ cp[b] + cp[c1]

Exemplo 2.5Considere um algoritmo a que, dependendo do primeiro elemento de uma listau, ordena a lista ou determina seu somatorio:

40

Page 43: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.2. Complexidade pessimista

Exemplo

1 se hd(u) = 0 entao2 v := ordena(u)3 senao4 s := soma(u)

Assumindo que o teste e possıvel em tempo constante, ele e absorvido pelotrabalho em ambos casos, tal que

cp[a] ≤ max(cp[v := ordena(u)], cp[s := soma(u)])

e com, por exemplo, cp[v := ordena(u)](n) = n2 e cp[s := soma(u)](n) = ntemos

cp[a](n) ≤ n2

2.2.2. Exemplos

Exemplo 2.6 (Bubblesort)Nesse exemplo vamos estudar o algoritmo Bubblesort de ordenacao.

Bubblesort

Bubblesort

Entrada Uma sequencia a1, . . . , an de numeros inteiros.

Saıda Uma sequencia aπ(1), . . . , aπ(n) de numeros inteiros tal que π e umapermutacao de [1, n] e para i < j temos aπ(i) ≤ aπ(j).

1 for i :=1 to n2 for j :=1 to n i3 i f aj > aj+1 then4 swap aj ,aj+1

5 end i f6 end for7 end for

41

Page 44: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Bubblesort: Complexidade

• A medida comum para algoritmos de ordenacao: o numero de com-paracoes (de chaves).

• Qual a complexidade pessimista?∑1≤i≤n

∑1≤j≤n−i

1 = n/2(n− 1).

• Qual a diferenca se contamos as transposicoes tambem?

Exemplo 2.7 (Ordenacao por insercao direta)

Ordenacao por insercao direta

Ordenacao por insercao direta (ingles: straight insertionsort)

Entrada Uma sequencia a1, . . . , an de numeros inteiros.

Saıda Uma sequencia aπ(1), . . . , aπ(n) de numeros inteiros tal que π e umapermutacao de [1, n] e para i < j temos aπ(i) ≤ aπ(j).

1 for i :=2 to n do2 invariante : a1, . . . , ai−1 ordenado 3 coloca item i na posicao correta 4 c:=ai

5 j :=i ;6 while c < aj−1 and j > 1 do7 aj :=aj−1

8 j :=j − 19 end while

10 aj :=c11 end for

(Nesse algoritmo e possıvel eliminar o teste j > 1 na linha 6 usando umelemento auxiliar a0 = −∞.)

42

Page 45: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.2. Complexidade pessimista

Para a complexidade pessimista obtemos

cp[SI](n) ≤∑

2≤i≤n

∑1<j≤i

O(1) =∑

2≤i≤n

= O(n2)

Exemplo 2.8 (Maximo)(Veja [27, cap. 3.3]).

Maximo

Maximo

Entrada Uma sequencia de numeros a1, . . . , an com n > 0.

Saıda O maximo m = maxi ai.

1 m := a1

2 for i := 2, . . . , n do3 i f ai > m then4 m := ai

5 end i f6 end for7 return m

Para a analise supomos que toda operacao basica (atribuicao, comparacao,aritmetica) tem um custo constante. Podemos obter uma cota superior simplesde O(n) observando que o laco sempre executa um numero fixo de operacoes(ao maximo dois no corpo). Para uma analise mais detalhada vamos denotaro custo em numeros de operacoes de cada linha como li e supomos que todaoperacao basico custa 1 e a linha 2 do laco custa dois (l2 = 2, para fazer umteste e um incremento), entao temos

l1 + (n− 1)(l2 + l3) + kl4 + l7 = 3n + k − 1

com um numero de execucoes da linha 4 ainda nao conhecido k. No melhorcaso temos k = 0 e custos de 3n − 1. No pior caso m = n − 1 e custos de4n−2. E facil ver que assintoticamente todos os casos, inclusive o caso medio,tem custo Θ(n). ♦

Exemplo 2.9 (Busca sequencial)O segundo algoritmo que queremos estudar e a busca sequencial.

43

Page 46: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Busca sequencial

Busca sequencial

Entrada Uma sequencia de numeros a1, . . . , an com n > 0 e um chave c.

Saıda A primeira posicao p tal que ap = c ou p = ∞ caso nao existe talposicao.

1 for i := 1, . . . , n do2 i f ai = c then3 return i4 end i f5 end for6 return ∞

Busca sequencial

• Fora do laco nas linhas 1–5 temos uma contribuicao constante.

• Caso a sequencia nao contem a chave c, temos que fazer n iteracoes.

• Logo temos complexidade pessimista Θ(n).

Counting-Sort

Counting-Sort

Entrada Um inteiro k, uma sequencia de numeros a1, . . . , an e uma sequenciade contadores c1, . . . , cn.

Saıda Uma sequencia ordenada de numeros b1, . . . , bn.

1 for i := 1, . . . , k do2 ci := 03 end for4 for i := 1, . . . , n do5 cai := cai + 16 end for

44

Page 47: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.2. Complexidade pessimista

7 for i := 2, . . . , k do8 ci := ci + ci−1

9 end for10 for i := n, . . . , 1 do11 bcai

:= ai

12 cai := cai − 113 end for14 return b1, . . . , bn

Loteria Esportiva

Loteria Esportiva

Entrada Um vetor de inteiros r[1, . . . , n] com o resultado e uma matrizA13xn com as apostas dos n jogadores.

Saıda Um vetor p[1, . . . , n] com os pontos feitos por cada apostador.

1 i := 12 while i ≤ n do3 pi := 04 for j de 1, . . . , 13 do5 i f Ai,j = rj then pi := pi + 16 end for7 i := i + 18 end while9 for i de1, . . . , n do

10 i f pi = 13 then pr in t ( Apostador i e ganhador ! )11 end for12 return p

Exemplo 2.10 (Busca Binaria)

Busca Binaria

45

Page 48: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Busca Binaria

Entrada Um inteiro x e uma sequencia S = a1, a2, . . . an de numerosordenados.

Saıda Posicao i em que x se encontra na sequencia S ou −1 caso x /∈ S.

1 i := 12 f := n

3 m :=⌊

f−i2

⌋+ i

4 while i ≤ f do5 i f am = x then return m6 i f am < x then f := m− 17 else i := m + 1

8 m :=⌊

f−i2

⌋+ i

9 end while10 return −1

A busca binaria e usada para encontrar um dado elemento numa sequenciaordenada de numeros com gaps. Ex: 3,4,7,12,14,18,27,31,32...n. Se os numerosnao estiverem ordenados um algoritmo linear resolveria o problema, e no casode numeros ordenados e sem gaps (nenhum numero faltante na sequencia, umalgoritmo constante pode resolver o problema. No caso da busca binaria, opior caso acontece quando o ultimo elemento que for analisado e o procurado.Neste caso a sequencia de dados e dividida pela metade ate o termino dabusca, ou seja, no maximo log2 n = x vezes, ou seja 2x = n. Neste caso

Cp[a] = =log2 n∑i=1

c

= O(log2 n)

Exemplo 2.11 (Busca em Largura)

46

Page 49: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.2. Complexidade pessimista

Busca em Largura

Busca em Largura

Entrada Um no origem s e um grafo direcionado estruturado como uma sequencia das listasde adjacencias de seus nos.

Saıda Posicao i vetor de distancias (numero de arcos) de cada no ao origem.

1 for cada v e r t i c e u ∈ V − s do2 cu :=BRANCO3 du = ∞4 end for5 cs :=CINZA6 ds := 07 Q := ∅8 Enqueue (Q, s )9 while Q 6= ∅

10 u := Dequeue (Q)11 for cada v ∈ Adj(u)12 i f cv =BRANCO13 then cv =CINZA14 dv = du + 115 Enqueue (Q, v )16 end i f17 end for18 cu =PRETO19 end while

Este algoritmo, bem como sua analise, estao disponıveis no livro do Cor-men [7]. O laco while (linhas 9-19) sera executado no maximo |V | vezes, ouseja, para cada no do grafo. Ja o laco for (linhas 11-17) executara du vezes,sendo du o grau de saıda do no u. Desta forma, os dois lacos executarao |E|vezes (este tipo de analise se chama de analise agregada). Como o primeirolaco for do algoritmo tem complexidade O(|V |), entao a complexidade totaldo algoritmo sera O(|V |+ |M |. ♦

Exercıcios sobre Ordens assintoticas

• (Exercıcio Adicional 2.9) Suponha que f e g sao funcoes polinomiais eN em N: f(n) ∈ Θ(nr) e g(n) ∈ Θ(ns). O que se pode afirmar sobre afuncao composta g(f(n))?

• (Exercıcio adicional 2.3.e) Classifique as funcoes f(n) = 5 · 2n + 3 eg(n) = 3 · n2 + 5 · n como f ∈ O(g), f ∈ Θ(g) ou f ∈ Ω(g).

• Verifique se 2n · n ∈ Θ(2n) e se 2n+1 ∈ Θ(2n).

47

Page 50: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Exemplo 2.12 (Multiplicacao de matrizes)O algoritmo padrao da computar o produto C = AB de matrizes (de tamanhom× n, n× o) segue diretamente a definicao

cik =∑

1≤j≤n

aijbjk 1 ≤ i ≤ m; 1 ≤ k ≤ o

e resulta na implementacao

Multiplicacao de matrizes

Entrada Duas matrizes A = (aij) ∈ Rm×n, B = (bjk) ∈ Rn×o.

Saıda O produto C = (cik) = AB ∈ Rm×o.

1 for i := 1, . . . ,m do2 for k := 1, . . . , o do3 cik := 04 for j := 1, . . . , n do5 cik := cik + aijbjk

6 end for7 end for8 end for

No total, precisamos mno(M+A) operacoes, com M denotando multiplicacoese A adicoes. E costume estudar a complexidade no caso n = m = o e somenteconsiderar as multiplicacoes, tal que temos uma entrada de tamanho Θ(n2) eΘ(n3) operacoes1.Esse algoritmo nao e o melhor possıvel: Temos o algoritmo de Strassen queprecisa somente nlog2 7 ≈ n2.807 multiplicacoes (o algoritmo esta detalhadono capıtulo 6.3) e o algoritmo de Coppersmith-Winograd com n2.376 multi-plicacoes [6]. Ambas sao pouco usadas na pratica porque o desempenho reale melhor somente para n grande (no caso de Strassen n ≈ 700; no caso deCoppersmith-Winograd o algoritmo nao e praticavel). A conjetura atual eque existe um algoritmo (otimo) de O(n2).

1Tambem e de costume contar as operacoes de ponto flutuante diretamente e nao em

relacao ao tamanho da entrada. Senao a complexidade seria 2n/33/2 = O(n3/2).

48

Page 51: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.3. Complexidade media

2.3. Complexidade media

Nesse capıtulo, vamos estudar algumas tecnicas de analise da complexidademedia.

Motivacao

• A complexidade pessimista e pessimista demais?

• Imaginavel: poucos (ou irrelevantes) instancias aumentam ela artificial-mente.

• Isso motiva a estudar a complexidade media.

• Para tamanho n, vamos considerar

– O espaco amostral Dn = d ∈ D| tam(d) = n– Uma distribuicao de probabilidade Pr sobre Dn

– A variavel aleatoria desemp[a]– O custo medio

Cm[a](n) = E[desemp[a]] =∑

d∈Dn

P (d) desemp[a](d)

Tratabilidade?

• Esperanca: Problemas intrataveis viram tratavel?

• Exemplos de tempo esperado:

– Caminho Hamiltoniano: linear!– Parada nao-determinıstico em k passos: fica NP-completo.

(Resultados citados: [11, 9] (Caminho Hamiltanio), [31] (Parada em k pas-sos).)

Criptografia

• Criptografia somente e possıvel se existem “funcoes unica” (ingles: one-way functions).

• Uma funcao sem saıda f : 0, 1∗ → 0, 1∗ e tal que

– dado x, computar f(x) e facil (eficiente)– dada f(x) achar um x′ tal que f(x′) = f(x) e difıcil

49

Page 52: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Metodo

(Vitter, Flajolet, [30])

Exemplo 2.13 (Busca sequencial)(Continuando exemplo 2.9.)

Busca sequencial

• Caso a chave fica na i-esima posicao, temos que fazer i iteracoes.

• Supondo uma distribuicao uniforme da posicao da chave na sequencia,temos

1n + 1

n +∑

1≤i≤n

i

iteracoes e uma complexidade media de Θ(n).

Exemplo 2.14(Continuando o exemplo 2.1.)Seja n um tamanho fixo. Para Busca1 temos o espaco amostral Dn =(a1, . . . , an)|a1 ≥ 1, . . . , an ≥ 1. Para a analise da complexidade media,qual seria uma distribuicao adequada das entradas? Observe que isso nao

50

Page 53: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.3. Complexidade media

e totalmente trivial, porque temos um conjunto infinito de numeros natu-rais. Qual seria uma distribuicao realıstica? Parece natural que na praticanumeros maiores sao menos provaveis. Logo escolhemos um processo tal quecada elemento da sequencia e gerado independentemente com a probabilidadePr[ai = n] = 2−n (que e possıvel porque

∑1≤i 2−i = 1).

Com isso temosPr[(a1, . . . , an)] =

∏1≤i≤n

2−ai

e, Pr[ai = 1] = 1/2 e Pr[ai 6= 1] = 1/2. Considere a variaveis aleatoriasdesemp[a] e

p =

µ se o primeira 1 e na posicao µ

n caso contrario

Temos desemp[a] = 2p + 1 (veja os resultados do exemplo 2.1). Para i ser aprimeira posicao com elemento 1 as posicoes 1, . . . , i − 1 devem ser diferentede 1, e ai deve ser 1. Logo para 1 ≤ i < n

Pr[p = i] = Pr[a1 6= 1] · · ·Pr[ai−1 6= 1]Pr[ai = 1] = 2−i.

O caso p = n tem duas causas: ou a posicao do primeiro 1 e n ou a sequencianao contem 1. Ambas tem probabilidade 2−n e logo Pr[p = n] = 21−n.A complexidade media calcula-se como

cp[a](n) = E[desemp[a]] = E[2p + 1] = 2E[p] + 1

E[p] =∑i≥0

Pr[p = i]i = 2−nn +∑

1≤i≤n

2−nn

= 2−nn + 2− 2−n(n + 2) = 2− 21−n (A.34)

cp[a](n) = 5− 22−n = O(1)

A seguinte tabela mostra os custos medios para 1 ≤ n ≤ 9n 1 2 3 4 5 6 7 8 9

Cm 3 4 4.5 4.75 4.875 4.938 4.969 4.984 4.992♦

Exemplo 2.15 (Ordenacao por insercao direta)(Continuando exemplo 2.7.)

Ordenacao por insercao direta

• Qual o numero medio de comparacoes?

51

Page 54: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

• Observacao: Com as entradas distribuıdas uniformemente, a posicao dachave i na sequencia ja ordenada tambem e.

• Logo chave i precisa ∑1≤j≤i

j/i =i + 1

2

comparacoes em media.

• Logo o numero esperado de comparacoes e∑2≤i≤n

i + 12

=12

∑3≤i≤n+1

i =12

((n + 1)(n + 2)

2− 3)

= Θ(n2)

Exemplo 2.16 (Bubblesort)(Continuando exemplo 2.6.)O numero de comparacoes de Bubblesort e independente da entrada. Logo,com essa operacao basica temos uma complexidade pessimista e media deΘ(n).

Bubblesort: Transposicoes

• Qual o numero de transposicoes em media?

0

5000

10000

15000

20000

25000

30000

0 5 10 15 20 25 30 35 40

# de

ent

rada

s

Comparaçıes

Complexidade de Bubblesort

52

Page 55: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.3. Complexidade media

Qual a complexidade contando o numero de transposicoes? A figura em cimamostra no exemplo das instancias com tamanho 9, que o trabalho varia entre 0transposicoes (sequencia ordenada) e 36 transposicoes (caso pior) e na maioriados casos, precisamos 18 transposicoes. A analise no caso que todas entradassao permutacoes de [1, n] distribuıdas uniformemente resulta em n/4(n − 1)transposicoes na media, a metade do caso pior.

Inversoes

• Uma inversao em uma permutacao e um par que nao e em ordem, i.e.

i < j tal que ai > aj .

• Exemplos

Permutacao #Inversoes

123 0132 1213 1231 2312 2321 3

• Frequentemente o numero de inversoes facilite a analise de algoritmosde ordenacao.

• Em particular para algoritmos com transposicoes de elementos adjacen-tes: #Transposicoes = # Inversoes

Numero medio de transposicoes

• Considere o conjunto de todas permutacoes Sn sobre [1, n].

• Denota com inv(π) o numero de inversoes de uma permutacao.

• Para cada permutacao π existe uma permutacao π− correspondente comordem inversa:

35124; 42153

• Cada inversao em π nao e inversao em π− e vice versa:

inv(π) + inv(π−) = n(n− 1)/2.

53

Page 56: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Numero medio de transposicoes

• O numero medio de inversoes e

1/n!∑

π∈Sn

inv(π) = 1/(2n!)

(∑π∈Sn

inv(π) +∑

π∈Sn

inv(π)

)

= 1/(2n!)

(∑π∈Sn

inv(π) +∑

π∈Sn

inv(π−)

)

= 1/(2n!)

(∑π∈Sn

inv(π) + inv(π−)

)

= 1/(2n!)

(∑π∈Sn

n(n− 1)/2

)= n(n− 1)/4

• Logo, a complexidade media (de transposicoes) e Θ(n2).

Exemplo 2.17 (Maximo)(Continuando exemplo 2.8.)Queremos analisar o numero medio de atribuicoes na determinacao do maximo,i.e. o numero de atualizacoes do maximo.

Maximo

• Qual o numero esperado de atualizacoes no algoritmo Maximo?

• Para uma permutacao π considere a tabela de inversoes b1, . . . , bn.

• bi e o numero de elementos na esquerda de i que sao maiores que i.

• Exemplo: Para 53142b1 b2 b3 b4 b5

2 3 1 1 1

• Os bi obedecem 0 ≤ bi ≤ n− i.

54

Page 57: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.3. Complexidade media

Tabelas de inversoes

• Observacao: Cada tabela de inversoes corresponde com uma permutacaoe vice versa.

• Exemplo: A permutacao correspondente comb1 b2 b3 b4 b5

3 1 2 1 0

• Vantagem para a analise: Podemos escolher os bi independentemente.

• Observacao, na busca do maximo i e maximo local se todos numeros noseu esquerdo sao menores, i.e. se todos numeros que sao maiores sao noseu direito, i.e. se bi = 0.

Numero esperado de atualizacoes

• Seja Xi a variavel aleatoria Xi = [i e maximo local].

• Temos Pr[Xi = 1] = Pr[bi = 0] = 1/(n− i + 1).

• O numero de maximos locais e X =∑

1≤i≤n Xi.

• Portanto, o numero esperado de maximos locais e

E[X] = E

∑1≤i≤n

Xi

=∑

1≤i≤n

E[Xi]

=∑

1≤i≤n

Pr[Xi] =∑

1≤i≤n

1n− i + 1

=∑

1≤i≤n

1i

= Hn

• Contando atualizacoes: tem uma a menos que os maximos locais Hn−1.

Exemplo 2.18 (Quicksort)Nessa secao vamos analisar e Quicksort, um algoritmo de ordenacao que foiinventado pelo C.A.R. Hoare em 1960 [14].

55

Page 58: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Quicksort

• Exemplo: o metodo Quicksort de ordenacao por comparacao.

• Quicksort usa divisao e conquista.

• Ideia:

– Escolhe um elemento (chamado pivo).

– Divide: Particione o vetor em elementos menores que o pivo emaiores que o pivo.

– Conquiste: Ordene as duas particoes recursivamente.

Particionar

Partition

Entrada Indices l, r e um vetor a com elementos al, . . . , ar.

Saıda Um ındice m ∈ [l, r] e a com elementos ordenados tal que ai ≤ am

para i ∈ [l,m[ e am ≤ ai para i ∈]m, r].

1 e s c o l h e um pivo ap

2 t roca ap e ar

3 i := l − 1 ultimo ındice menor que pivo 4 for j := l to r − 1 do5 i f aj ≤ ar then6 i := i+17 t roca ai e aj

8 end i f9 end for

10 t roca ai+1 e ar

11 return i + 1

Escolher o pivo

• Partition combina os primeiros dois passos do Quicksort..

• Operacoes relevantes: Numero de comparacoes entre chaves!

56

Page 59: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.3. Complexidade media

• O desempenho de Partition depende da escolha do pivo.

• Dois exemplos

– Escolhe o primeiro elemento.

– Escolhe o maior dos primeiros dois elementos.

• Vamos usar a segunda opcao.

Complexidade de particionar

• O tamanho da entrada e n = r − l + 1

• Dependendo da escolha do pivo: precisa nenhuma ou uma comparacao.

• O laco nas linhas 4–9 tem n− 1 iteracoes.

• O trabalho no corpo do laco e 1 = Θ(1) (uma comparacao)

• Portanto temos a complexidade pessimista

cp[Partition] = n− 1 = n = Θ(n)cp[Partition] = n− 1 + 1 = n = Θ(n).

Quicksort

Quicksort

Entrada Indices l, r e um vetor a com elementos al, . . . , ar.

Saıda a com os elementos em ordem nao-decrescente, i.e. para i < j temosai ≤ aj .

1 i f l < r then2 m := Par t i t i on ( l , r , a ) ;3 Quicksort ( l ,m− 1 ,a ) ;4 Quicksort (m + 1 ,r ,a ) ;5 end i f

57

Page 60: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

desemp[QS](al, . . . , ar) = desemp[P ](al, . . . , ar)+ desemp[QS](al, . . . , am−1) + desemp[QS](am+1, . . . , ar)

desemp[QS](al, . . . , ar) = 0 se l ≥ r

Complexidade pessimista

• Qual a complexidade pessimista?

• Para entrada d = (a1, . . . , an), sejam dl = (al, . . . , am−1) e dr = (am+1, . . . , ar)

cp[QS](n) = maxd∈Dn

desemp[P ](d) + desemp[QS](dl) + desemp[QS](dr)

= n + maxd∈Dn

desemp[QS](dl) + desemp[QS](dr)

= n + max1≤i≤n

cp[QS](i− 1) + cp[QS](n− i)

• cp[QS](0) = cp[QS](1) = 0

Esse analise e valido para escolha do maior entre os dois primeiros elementoscomo pivo. Tambem vamos justificar o ultimo passo na analise acima commais detalhes. Seja Dn =

⋃i Di

n uma particao das entradas com tamanho ntal que para d ∈ Di

n temos |dl |= i − 1 (e consequentemente |dr |= n − i).Entao

maxd∈Dn

desemp[QS](dl) + desemp[QS](dr)

= max1≤i≤n

maxd∈Di

n

desemp[QS](dl) + desemp[QS](dr) separando Dn

= max1≤i≤n

maxd∈Di

n

cp[QS](i− 1) + cp[QS](n− i)

e o ultimo passo e justificado, porque a particao de uma permutacao aleatoriagera duas particoes aleatorias, e existe uma entrada d em que as duas sub-particoes assumem o maximo. Para determinar o maximo da ultima expressao,podemos observar que ele deve ocorrer no ındice i = 1 ou i = bn/2c (porquef(i) = cp[QS](i−1)+cp[QS](n− i) e simetrico com eixo de simetria i = n/2).

58

Page 61: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.3. Complexidade media

Complexidade pessimista

• O maximo ocorre para i = 1 ou i = n/2

• Caso i = 1

cp[QS](n) = n + cp[QS](0) + cp[QS](n− 1) = n + cp[QS](n− 1)

= · · · =∑

1≤i≤n

(i− 1) = Θ(n2)

• Caso i = n/2

cp[QS](n) = n + 2cp[QS](n/2) = n− 1 + 2((n− 1)/2 + cp(n/4))= · · · = Θ(n log2 n)

• Logo, no caso pior, Quicksort precisa Θ(n2) comparacoes.

• No caso bem balanceado: Θ(n log2 n) comparacoes.

Complexidade media

• Seja X a variavel aleatoria que denota a posicao (ingles: rank) do pivoam na sequencia.

• Vamos supor que todos elementos ai sao diferentes (e, sem perda dageneralidade, uma permutacao de [1, n]).

cm[QS] =∑

d∈Dn

Pr[d] desemp[QS](d)

=∑

d∈Dn

Pr[d](desemp[P ](d) + desemp[QS](dl) + desemp[QS](dr))

= n +∑

d∈Dn

Pr[d](desemp[QS](dl) + desemp[QS](dr))

= n +∑

1≤i≤n

Pr[X = i](cm[QS](i− 1) + cm[QS](n− i))

59

Page 62: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Novamente, o ultimo passo e o mais difıcil de justificar. A mesma particaoque aplicamos acima leva a∑

d∈Dn

Pr[d](desemp[QS](dl) + desemp[QS](dr))

=∑

1≤i≤n

∑d∈Di

n

Pr[d](desemp[QS](dl) + desemp[QS](dr))

=∑

1≤i≤n

1|D|

∑d∈Di

n

(desemp[QS](dl) + desemp[QS](dr))

=∑

1≤i≤n

|Din||D|

(cm[QS](i− 1) + cm[QS](n− i))

=∑

1≤i≤n

Pr[X = i](cm[QS](i− 1) + cm[QS](n− i))

e o penultimo passo e correto, porque a media do desempenho as permutacoesdl e dr e a mesma que sobre as permutacoes com i−1 e n−i, respectivamente:toda permutacao ocorre com a mesma probabilidade e o mesmo numero devezes (para mais detalhes veja [18, p. 119]).Se denotamos o desempenho com Tn = cp[QS](n), obtemos a recorrencia

Tn = n +∑

1≤i≤n

Pr[X = i] (Ti−1 + Tn−i)

com base Tn = 0 para n ≤ 1. A probabilidade de escolher o i-gesimo elementocomo pivo depende da estrategia da escolha. Vamos estudar dois casos.

1. Escolhe o primeiro elemento como pivo. Temos Pr[X = i] = 1/n. ComoPr[X = i] nao depende do i a equacao acima vira

Tn = n− 1 + 2/n∑

0≤i<n

Ti

(com uma comparacao a menos no particionamento).

2. Escolhe o maior dos dois primeiros elementos2. Temos Pr[X = i] =2(i− 1)/(n(n− 1)).

2Supomos para analise que todos elementos sao diferentes. Um algoritmo pratico tem queconsiderar o caso que um ou mais elementos sao iguais (veja [27, p. 72])

60

Page 63: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.3. Complexidade media

Tn = n + 2/(n(n− 1))∑

1≤i≤n

(i− 1) (Ti−1 + Tn−i)

= n + 2/(n(n− 1))∑

0≤i<n

i (Ti + Tn−i−1)

= n + 2/(n(n− 1))∑

0≤i<n

iTi +∑

0≤i<n

iTn−i−1

= n + 2/(n(n− 1))∑

0≤i<n

iTi +∑

0≤i<n

(n− i− 1)Ti

= n + 2/n∑

0≤i<n

Ti

Recorrencia

• A solucao final depende da escolha do pivo.

• Dois exemplos

– Escolhe o primeiro elemento: Pr[X = i] = 1/n.

– Escolhe o maior dos primeiros dois elementos diferentes: Pr[X =i] = 2(i− 1)/(n(n− 1)).

• Denota Tn = cm[QS](n)

• Ambas solucoes chegam (quase) na mesma equacao recorrente

Tn = n + 2/n∑

0≤i<n

Ti

Exemplo 2.19Vamos determinar a probabilidade de escolher o pivo Pr[X = i] no caso n = 3explicitamente:Permutacao Pivo123 2132 3213 2231 3312 3321 3

61

Page 64: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

Logo temos as probabilidadesPivo i 1 2 3Pr[X = i] 0 1/3 2/3

Resolver a equacao

• A solucao da recorrencia

Tn = n + 1 + 2/n∑

0≤i<n

Ti

eTn = Θ(n lnn)

• Logo, em ambos casos temos a complexidade media de Θ(n lnn).

Tn = n + 1 + 2/n∑

0≤i<n

Ti para n > 0

multiplicando por n obtemos

nTn = n2 + n + 2∑

0≤i<n

Ti

a mesmo equacao para n− 1 e

(n− 1)Tn−1 = (n− 1)2 + n− 1 + 2∑

0≤i<n−1

Ti para n > 1

subtraindo a segunda da primeira obtemos

nTn − (n− 1)Tn−1 = 2n + 2Tn−1 para n > 0, verificando n = 1nTn = (n + 1)Tn−1 + 2n

multiplicando por 2/(n(n + 1))

2n + 1

Tn =2n

Tn−1 +4

n + 1

62

Page 65: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.4. Exercıcios

substituindo An = 2Tn/(n + 1)

An = An−1 +2

n + 1=∑

1≤i≤n

4i + 1

e portanto

Tn = 2(n + 1)∑

1≤i≤n

1i + 1

= 2(n + 1)(Hn −n

n + 1)

= Θ(n lnn)

2.4. Exercıcios

(Solucoes a partir da pagina 223.)

Exercıcio 2.1Qual a complexidade pessimista dos seguintes algoritmos?

Alg1

Entrada Um tamanho de problema n.

1 for i := 1 . . . n do2 for j := 1 . . . 2i

3 opera c o e s cons tante s4 j := j + 15 end for6 end for

Alg2

Entrada Um tamanho de problema n.

63

Page 66: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

1 for i := 1 . . . n do2 for j := 1 . . . 2i

3 opera c o e s com complexidade O(j2)4 j := j + 15 end for6 end for

Alg3

Entrada Um tamanho de problema n.

1 for i := 1 . . . n do2 for j := i . . . n3 opera c o e s com complexidade O(2i)4 end for5 end for

Alg4

Entrada Um tamanho de problema n.

1 for i := 1 . . . n do2 j := 13 while j ≤ i do4 opera c o e s com complexidade O(2j)5 j := j+16 end for7 end for

Alg5

Entrada Um tamanho de problema n.

1 for i := 1 . . . n do

64

Page 67: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.4. Exercıcios

2 j := i3 while j ≤ n do4 opera c o e s com complexidade O(2j)5 j := j+16 end for7 end for

Exercıcio 2.2Tentando resolver a recorrencia

Tn = n− 1 + 2/n∑

0≤i<n

Ti

que ocorre na analise do Quicksort (veja exemplo 2.18), o aluno J. Rapidezchegou no seguinte resultado: Supomos que Tn = O(n) obtemos

Tn = n− 1 + 2/n∑

0≤i<n

O(i)

= n− 1 + 2/nO(n2) = n− 1 + O(n) = O(n)

e logo, a complexidade media do Quicksort e O(n). Qual o problema?

Exercıcio 2.3Escreve um algoritmo que determina o segundo maior elemento de uma sequenciaa1, . . . , an. Qual a complexidade pessimista dele considerando uma com-paracao como operacao basica?

Exercıcio 2.4Escreve um algoritmo que, dado uma sequencia a1, . . . , an com ai ∈ N deter-mina um conjunto de ındices C ⊆ [1, n] tal que∣∣∣∣∣∣

∑i∈C

ai −∑i 6∈C

ai

∣∣∣∣∣∣e mınimo. Qual a complexidade pessimista dele?

Exercıcio 2.5Qual o numero medio de atualizacoes no algoritmo

65

Page 68: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2. Analise de complexidade

1 s := 02 for i = 1, . . . , n do3 i f i > bn/2c then4 s := s+i5 end i f6 end for

Exercıcio 2.6Count6

Entrada Uma sequencia a1, . . . , an com ai ∈ [1, 6].

Saıda O numero de elementos tal que ai = 6.

1 k := 02 for i = 1, . . . , n do3 i f ai = 6 then4 k := k + 15 end i f6 end for

Qual o numero medio de atualizacoes k := k + 1, supondo que todo valor emcada posicao da sequencia tem a mesma probabilidade? Qual o numero mediocom a distribuicao P [1] = 1/2, P [2] = P [3] = P [4] = P [5] = P [6] = 1/10?

Exercıcio 2.7Suponha um conjunto de chaves numa arvore binaria completa de k nıveis esuponha uma busca binaria tal que cada chave da arvore esta buscada coma mesma probabilidade (em particular nao vamos considerar o caso que umachave buscada nao pertence a arvore.). Tanto nos quanto folhas contem chaves.Qual o numero medio de comparacoes numa busca?

Exercıcio 2.8Usando a tecnica para resolver a recorrencia (veja p. 62)

Tn = n + 1 + 2/n∑

0≤i<n

Ti

66

Page 69: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

2.4. Exercıcios

resolve as recorrencias

Tn = n + 2/n∑

0≤i<n

Ti

Tn = n− 1 + 2/n∑

0≤i<n

Ti

explicitamente.

67

Page 70: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 71: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Parte II.

Projeto de algoritmos

69

Page 72: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 73: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

3. Introducao

Resolver problemas

• Modelar o problema

– Simplificar e abstrair

– Comparar com problemas conhecidos

• Inventar um novo algoritmo

– Ganhar experiencia com exemplos

– Aplicar ou variar tecnicas conhecidas (mais comum)

Resolver problemas

• Provar a corretude do algoritmo

– Testar so nao vale

– Pode ser informal

• Analisar a complexidade

• Aplicar e validar

– Implementar, testar e verificar

– Adaptar ao problema real

– Avaliar o desempenho

71

Page 74: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 75: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

Radix omnium malorum est cupiditas.

(Seneca)

4.1. Introducao

(Veja [27, cap. 5.1.3].)

Algoritmos gulosos

• Algoritmos gulosos se aplicam a problemas de otimizacao.

• Ideia principal: Decide localmente.

• Um algoritmo guloso constroi uma solucao de um problema

– Comeca com uma solucao inicial.

– Melhora essa solucao com uma decisao local (gulosamente!).

– Nunca revisa uma decisao.

• Por causa da localidade: Algoritmos gulosos frequentemente sao apro-priados para processamento online.

Trocar moedas

Troca mınima

Instancia Valores (de moedas ou notas) v1 > v2 > · · · > vn = 1, umasoma s.

Solucao Numeros c1, . . . , cn tal que s =∑

1≤i≤n civi

Objetivo Minimizar o numero de unidades∑

1≤i≤n ci.

73

Page 76: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

A abordagem gulosa

1 for i:=1, . . . , n do2 ci := bs/vic3 s := s− civi

4 end for

Exemplo

Exemplo 4.1Com v1 = 500, v2 = 100, v3 = 25, v4 = 10, v5 = 1 e s = 3.14, obtemosc1 = 0, c2 = 3, c3 = 0, c4 = 1, c5 = 4.Com v1 = 300, v2 = 157, v3 = 1, obtemos v1 = 1, v2 = 0, v3 = 14.No segundo exemplo, existe uma solucao melhor: v1 = 0, v2 = 2, v3 = 0.No primeiro exemplo, parece que a abordagem gulosa acha a melhor solucao.Qual a diferenca? ♦

Uma condicao simples e que todos valores maiores sao multiplos inteiros dosmenores; essa condicao nao e necessaria, porque o algoritmo guloso tambemacha solucoes para outros sistemas de moedas, por exemplo no primeiro sis-tema do exemplo acima.

Lema 4.1A solucao do algoritmo guloso e a unica que satisfaz∑

i∈[m,n]

civi < vm−1

para m ∈ [2, n]. (Ela e chamada a solucao canonica.)

Proposicao 4.1Se vi+1|vi para 1 ≤ i < n a solucao gulosa e mınima.

Prova. Sejam os divisores vi = fivi+1 com fi ≥ 2 para 1 ≤ i < n e definefn = vn = 1. Logo cada valor tem a representacao vi = fifi+1fi+2 · · · fn.Seja c1, . . . , cn uma solucao mınima. A contribuicao de cada valor satisfazcivi < vi−1 senao seria possıvel de substituir fi−1 unidades de vi para umade vi−1, uma contradicao com a minimalidade da solucao (observe que issosomente e possıvel porque os fi sao numeros inteiros; senao o resto depois dasubstituicao pode ser fracional e tem quer ser distribuıdo pelos valores menores

74

Page 77: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.1. Introducao

que pode causar um aumento de unidades em total). Logo ci ≤ fi−1 − 1 etemos ∑

i∈[m,n]

civi ≤∑

i∈[m,n]

(fi−1 − 1)vi

=∑

i∈[m,n]

fi−1vi −∑

i∈[m,n]

vi

=∑

i∈[m,n]

vi−1 −∑

i∈[m,n]

vi

= vm−1 − vn = vm−1 − 1 < vm−1

Agora aplique lema 4.1.

Otimalidade da abordagem gulosa

• A pergunta pode ser generalizada: Em quais circunstancias um algo-ritmo guloso produz uma solucao otima?

• Se existe um solucao gulosa: frequentemente ela tem uma implementacaosimples e e eficiente.

• Infelizmente, para um grande numero de problemas nao tem algoritmoguloso otimo.

• Uma condicao (que se aplica tambem para programacao dinamica) e asubestrutura otima.

• A teoria de matroides e greedoides estuda as condicoes de otimalidadede algoritmos gulosos.

Definicao 4.1 (Subestrutura otima)Um problema de otimizacao tem subestrutura otima se uma solucao otima(mınima ou maxima) do problema consiste em solucoes otimas das subproble-mas.

Exemplo 4.2Considere caminhos (simples) em grafos. O caminho mais curto v1v2 . . . vn

entre dois vertices v1 e vn tem subestrutura otima, porque um subcaminhotambem e mais curto (senao seria possıvel de obter um caminho ainda maiscurto).

75

Page 78: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

Do outro lado, o caminho mais longo entre dois vertices v1 . . . vn nao temsubestrutura otima: o subcaminho v2 . . . vn, por exemplo, nao precisa ser ocaminho mais longo. Por exemplo no grafo

i j1

k

1

1

///////////////

o caminho mais longo entre i e j e ikj, mas o subcaminho kj nao e o subca-minho mais longo entre k e j. ♦

Para aplicar a definicao 4.1 temos que conhecer (i) o conjunto de subpro-blemas de um problema e (ii) provar, que uma solucao otima contem uma(sub-)solucao que e otima para um subproblema. Se sabemos como esten-der uma solucao de um subproblema para uma solucao de todo problema, asubestrutura otima fornece um algoritmo generico da forma

Solucao generica de problemas com subestrutura otima

Entrada Uma instancia I de um problema.

Saıda Uma solucao otima S∗ de I.

1 r e s o l v e (I ):=2 S∗ := n i l melhor solucao 3 for todos subproblemas I ′ de I do4 S′ := r e s o l v e (I ′ )5 es tende S′ para uma so lu c a o S de I6 i f S′ e a melhor so lu c a o then7 S∗ := S8 end i f9 end for

Informalmente, um algoritmo guloso e caracterizado por uma subestruturaotima e a caracterıstica adicional, que podemos escolher o subproblema queleva a solucao otima atraves de uma regra simples. Portanto, o algoritmoguloso evite resolver todos subproblemas.

76

Page 79: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.2. Algoritmos em grafos

Uma subestrutura otima e uma condicao necessaria para um algoritmo gulosoou de programacao dinamica ser otima, mas ela nao e suficiente.

4.2. Algoritmos em grafos

4.2.1. Arvores espalhadas mınimas

MotivacaoPontes para Polinesia Francesa!

Arvores espalhadas mınimas (AEM)

Arvore espalhada mınima (AEM)

Instancia Grafo conexo nao-direcionado G = (V,E), pesos c : E → R+.

Solucao Um subgrafo H = (VH , EH) conexo.

Objetivo Minimiza os custos∑

e∈EHc(e).

• Um subgrafo conexo com custo mınimo deve ser uma arvore (por que?).

• Grafo nao conexo: Busca uma arvore em todo componente (florestamınima).

77

Page 80: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

Aplicacoes

• Redes eletricas

• Sistemas de estradas

• Pipelines

• Caixeiro viajante

• Linhas telefonicas alugadas

Resolver AEM

• O numero de arvores espalhadas pode ser exponencial.

• Como achar uma solucao otima?

• Observacao importante

Lema 4.2 (Corte)Considere um corte V = S ∪ V \ S (com S 6= ∅, V \ S 6= ∅). O arcomınimo entre S e V \ S faz parte de qualquer AEM.

Prova. Na prova vamos supor, que todos pesos sao diferentes.Suponha um corte S tal que o arco mınimo e = u, v entre S e V \S nao fazparte de um AEM T . Em T existe um caminho de u para v que contem aomenos um arco e′ que cruza o corte. Nossa afirmacao: Podemos substituir e′

com e, em contradicao com a minimalidade do T .Prova da afirmacao: Se substituirmos e′ por e obtemos um grafo T ′. Como ee mınimo, ele custa menos. O novo grafo e conexo, porque para cada par denos ou temos um caminho ja em T que nao faz uso de e′ ou podemos obter, apartir de um caminho em T que usa e′ um novo caminho que usa um desviosobre e. Isso sempre e possıvel, porque ha um caminho entre u e v sem e, comdois sub-caminhos de u para u′ e de v′ para v, ambos sem usar e′. O novografo tambem e uma arvore, porque ele nao contem um ciclo. O unico ciclopossıvel e o caminho entre u e v em T com o arco e, porque T e uma arvore.

78

Page 81: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.2. Algoritmos em grafos

Prova

Resolver AEM

• A caracterıstica do corte possibilita dois algoritmos simples:

1. Comeca com algum no e repetidamente adicione o no ainda naoalcancavel com o arco de custo mınimo de algum no ja alcancavel:algoritmo de Prim.

2. Comeca sem arcos, e repetidamente adicione o arco com customınimo que nao produz um ciclo: algoritmo de Kruskal.

AEM: Algoritmo de Prim

AEM-Prim

Entrada Um grafo conexo nao-orientado G = (V,EG) com pesos c : VG →R+

Saıda Uma arvore T = (V,ET ) com custo∑

e∈ETc(e) mınimo.

79

Page 82: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

1 V ′ := v para um v ∈ V2 ET := ∅3 while V ′ 6= V do4 e s c o l h e e = u, v com custo mınimo5 ent re V ′ e V \ V ′ (com u ∈ V ′ )6 V ′ := V ′ ∪ v7 ET := ET ∪ e8 end while

AEM: Algoritmo de Kruskal

AEM-Kruskal

Entrada Um grafo conexo nao-orientado G = (V,EG) com pesos c : VG →R+

Saıda Uma arvore T = (V,ET ) com custo∑

e∈ETc(e) mınimo.

1 ET := ∅2 while (V, ET ) nao e conexo do3 e s co lha e com custo mınimo que nao produz c ı c l o4 ET := ET ∪ e5 end while

Exemplo 4.3Resultado dos algoritmos de Prim e Kruskal para Polinesia Francesa:

O mesmo! ♦

80

Page 83: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.2. Algoritmos em grafos

Implementacao do algoritmo de Prim

• Problema: Como manter a informacao sobre a distancia mınima deforma eficiente?

• Mantenha uma distancia do conjunto V ′ para cada no em V \ V ′.

• Nos que nao sao acessıveis em um passo tem distancia ∞.

• Caso um novo no seja selecionado: atualiza as distancias.

Implementacao do algoritmo de Prim

• Estrutura de dados adequada:

– Fila de prioridade Q de pares (e, v) (chave e elemento).

– Operacao Q.min() remove e retorna (e, c) com c mınimo.

– Operacao Q.atualiza(e, c′) modifica a chave de e para v′ caso v′ emenor que a chave atual.

• Ambas operacoes podem ser implementadas com custo O(log n).

AEM: Algoritmo de Prim

AEM-Prim

Entrada Um grafo conexo nao-orientado G = (V,EG) com pesos c : VG →R+

Saıda Uma arvore T = (V,ET ) com custo∑

e∈ETc(e) mınimo.

1 ET := ∅2 Q := ((v, u), c(v, u))|u ∈ N(v) nos alcancaveis 3 Q := Q ∪ ((u, u),∞)|u ∈ V \N(v) \ v nos restantes 4 while Q 6= ∅ do5 ((u, v), c) := Q. min() (u, v) e arco mınimo 6 for w ∈ N(v) do7 Q.atualiza((v, w), c(v, w))8 end for9 ET := ET ∪ u, v

10 end while

81

Page 84: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

Algoritmo de Prim

• Complexidade do algoritmo com o refinamento acima:

• O laco 4–9 precisa n− 1 iteracoes.

• O laco 6–8 precisa no total menos que m iteracoes.

• cp[AEM-Prim] = O(n log n + m log n) = O(m log n)

Uma implementacao do algoritmo de Kruskal em tempo O(m log n) tambeme possıvel. Para esta implementacao e necessario de manter conjuntos querepresentam nos conectados de maneira eficiente. Isso leva a uma estruturade dados conhecida como Union-Find que tem as operacoes

• C := cria(e): cria um conjunto com unico elemento e.

• uniao(C1, C2): junta os conjuntos C1 e C2.

• C := busca(e): retorna o conjunto do elemento e.

Essas operacoes podem ser implementados em tempo O(1), O(1) e O(log n)(para n elementos) respectivamente.

4.2.2. Caminhos mais curtos

Caminhos mais curtos

• Problema frequente: Encontra caminhos mais curtos em um grafo.

• Variacoes: Caminho mais curto

– entre dois nos.

– entre um no e todos outros (ingles: single-source shortest paths,SSSP).

– entre todas pares (ingles: all pairs shortest paths, APSP).

Caminhos mais curtos

Caminhos mais curtos

Instancia Um grafo direcionado G = (v1, . . . , vn, E) com funcao decustos c : E → R+ e um no inicial s ∈ V .

82

Page 85: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.3. Algoritmos de sequenciamento

Solucao Uma atribuicao d : V → R+ da distancia do caminho mais curtod(t) de s para t.

Aproximacao: Uma ideia

1. Comeca com uma estimativa viavel: d(s) = 0 e d(t) = ∞ para todo noem V \ s.

2. Depois escolhe uma aresta e = (u, v) ∈ E tal que d(u) + c(e) ≤ d(v) eatualiza d(v) = d(u) + c(e).

3. Repete ate nao ter mais arestas desse tipo.

Esse algoritmo e correto? Qual a complexidade dele?

4.3. Algoritmos de sequenciamento

Sequenciamento de intervalosConsidere o seguinte problema

Sequenciamento de intervalos

Instancia Um conjunto de intervalos S = [ci, fi], 1 ≤ i ≤ n, cada comcomeco ci e fim fi tal que ci < fi.

Solucao Um conjunto compatıvel C ⊆ S de intervalos, i.e. cada pari1, i2 ∈ C temos i1 ∩ i2 = ∅.

Objetivo Maximiza a cardinalidade |C|.

(ingles: interval scheduling)

Como resolver?

• Qual seria uma boa estrategia gulosa para resolver o problema?

• Sempre selecionada o intervalo que

– que comeca mais cedo?

83

Page 86: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

– que termina mais cedo?– que comeca mais tarde?– que termina mais tarde?– mais curto?– tem menos conflitos?

Implementacao

Sequenciamento de intervalos

Entrada Um conjunto de intervalos S = [ci, fi] | 1 ≤ i ≤ n, cada comcomeco ci e fim fi tal que ci < fi.

Saıda Um conjunto maximo de intervalos compatıveis C.

1 C := ∅2 while S 6= ∅ do3 Se ja [c, f ] ∈ S com f mınimo4 C := C ∪ [c, f ]5 S := S \ i ∈ S | i ∩ [c, f ] 6= ∅6 end while7 return C

Seja C = ([c1, f1], . . . , [cn, fn]) o resultado do algoritmo Sequenciamentode intervalos e O = ([c′1, f

′1], . . . , [c

′m, f ′m]) sequenciamento maximo, ambos

em ordem crescente.

Proposicao 4.2Para todo 1 ≤ i ≤ n temos fi ≤ f ′i .

Prova. Como O e otimo, temos n ≤ m. Prova por inducao. Base: Como oalgoritmo guloso escolhe o intervalo cujo terminacao e mınima, temos f1 ≤ f ′1.Passo: Seja fi ≤ f ′i com i < n. O algoritmo guloso vai escolher entre os inter-valos que comecam depois fi o com terminacao mınima. O proximo intervalo[c′i+1,m

′i+1] do sequenciamento otimo esta entre eles, porque ele comeca depois

f ′i e f ′i ≥ fi. Portanto, o proximo intervalo escolhido pelo algoritmo gulosotermina antes de f ′i+1, i.e. fi+1 ≤ f ′i+1.

Proposicao 4.3O sequenciamento do algoritmo guloso e otimo.

84

Page 87: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.3. Algoritmos de sequenciamento

Prova. Suponha que o algoritmo guloso retorna menos intervalos C que umsequenciamento otimo O. Pela proposicao 4.2, o ultimo (n-esimo) intervalo doC termina antes do ultimo intervalo de O. Como O tem mais intervalos, existemais um intervalo que poderia ser adicionado ao conjunto C pelo algoritmoguloso, uma contradicao com o fato, que o algoritmo somente termina se naosobram intervalos compatıveis.

Complexidade

• Uma implementacao detalhada pode

– Ordenar os intervalos pelo fim deles em tempo O(n log n)

– Comecando com intervalo 1 sempre escolher o intervalo atual edepois ignorar todos intervalos que comecam antes que o intervaloatual termina.

– Isso pode ser implementado em uma varredura de tempo O(n).

– Portanto o complexidade pessimista e O(n log n).

Conjunto independente maximoConsidere o problema

Conjunto independente maximo, CIM

Instancia Um grafo nao-direcionado G = (V,E).

Solucao Um conjunto independente M ⊆ V , i.e. todo m1,m2 ∈ V temosm1,m2 6∈ E.

Objetivo Maximiza a cardinalidade |M |.

(ingles: maximum independent set, MIS)

Grafos de intervalo

• Uma instancia S de sequenciamento de intervalos define um grafo nao-direcionado G = (V,E) com

V = S; E = i1, i2 | i1, i2 ∈ S, i1 ∩ i2 6= ∅

• Grafos que podem ser obtidos pelo intervalos sao grafos de intervalo.

85

Page 88: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

• Um conjunto compatıvel de intervalos corresponde com um conjuntoindependente nesse grafo.

• Portanto, resolvemos CIM para grafos de intervalo!

• Sem restricoes, CIM e NP-completo.

Variacao do problemaConsidere uma variacao de Sequenciamento de intervalos:

Particionamento de intervalos

Instancia Um conjunto de intervalos S = [ci, fi], 1 ≤ i ≤ n, cada comcomeco ci e fim fi tal que ci < fi.

Solucao Uma atribuicao de rotulos para intervalos tal que cada conjuntode intervalos com a mesma rotula e compatıvel.

Objetivo Minimiza o numero de rotulos diferentes.

Observacao

• Uma superposicao de k intervalos implica uma cota inferior de k rotulos.

• Seja d o maior numero de intervalos super-posicionados (a profundidadedo problema).

• E possıvel atingir o mınimo d?

Algoritmo

Particionamento de intervalos

Instancia Um conjunto de intervalos S = [ci, fi], 1 ≤ i ≤ n, cada comcomeco ci e fim fi tal que ci < fi.

Solucao Uma atribuicao de rotulos para os intervalos tal que cada con-junto de intervalos com a mesma rotula e compatıvel.

86

Page 89: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.3. Algoritmos de sequenciamento

Objetivo Minimiza o numero de rotulos diferentes.

1 Ordene S em ordem de comeco c r e s c en t e .2 for i := 1, . . . , n do3 Exc lu i r o t u l o s de i n t e r v a l o s4 precedente s c o n f l i t a n t e s5 Atr ibu i ao i n t e r v a l o i o numero6 i n t e i r o mınimo ≥ 1 que sobra

Corretude

• Com profundidade d o algoritmo precisa ao menos d rotulos.

• De fato ele precisa exatamente d rotulos. Por que?

• Qual a complexidade dele?

Observacoes: (i) Suponha que o algoritmo precise mais que d rotulos. Entaoexiste um intervalo tal que todos numeros em [1, d] estao em uso pelo intervalosconflitantes, uma contradicao com o fato que a profundidade e d. (ii) Depoisda ordenacao em O(n log n) a varredura pode ser implementada de forma queprecisa O(n) passos. Portanto a complexidade e O(n log n).

Coloracao de grafosConsidere o problema

Coloracao mınima

Instancia Um grafo nao-direcionado G = (V,E).

Solucao Uma coloracao de G, i.e. uma atribuicao de cores c : V → C talque c(v1) 6= c(v2) para v1, v2 ∈ E.

Objetivo Minimiza o numero de cores |C|.

• Particionamento de intervalos resolve o problema Coloracaomınima para grafos de intervalo.

• Coloracao mınima para grafos sem restricoes e NP-completo.

87

Page 90: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

4.4. Topicos

Compressao de dados

• Sequencia genetica (NM 005273.2, Homo sapiens guanine nucleotide bin-ding protein)

GATCCCTCCGCTCTGGGGAGGCAGCGCTGGCGGCGG . . .

com 1666bp.

• Como comprimir?

– Com codigo fixo:

A = 00; G = 01;T = 10; C = 11.

Resultado: 2b/bp e 3332b total.

– Melhor abordagem: Considere as frequencias, use codigos de dife-rente comprimento

A G T C.18 .30 .16 .36

Codigos: Exemplos

• Tentativa 1

T = 0; A = 1;G = 01; C = 10

• Desvantagem: Ambıguo! 01 = TC ou 01 = G?

• Tentativa 2

C = 0; G = 10;A = 110; T = 111

• Custo: 0.36× 1 + 0.30× 2 + 0.18× 3 + 0.16× 3 = 1.98b/bp, 3299b total.

88

Page 91: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.4. Topicos

Codigos livre de prefixos

• Os exemplos mostram

– Dependendo das frequencias, um codigo com comprimento variavelpode custar menos.

– Para evitar ambiguedades, nenhum prefixo de um codigo pode seroutro codigo: ele e livre de prefixos (ingles: prefix-free).

• Observacao: Esses codigos correspondem a arvores binarias.•

0~~|||

| 1

BBB

B

C •0~~~~~

~ 1

>>>

>

G •0

1>

>>>

A T

Cada codigo livre de prefixo pode ser representado usando uma arvore binaria:Comecando com a raiz, o sub-arvore da esquerda representa os codigos quecomecam com 0 e a sub-arvore da direita representa os codigos que comecamcom 1. Esse processo continua em cada sub-arvore considerando os demaisbits. Caso todos bits de um codigo foram considerados, a arvore termina nessaposicao com uma folha para esse codigo.Essas consideracoes levam diretamente a um algoritmo. Na seguinte imple-mentacao, vamos representar arvores binarias como estrutura da dados abs-trata que satisfaz

BinTree ::= Nil — Node(BinTree,Bintree)uma folha sendo um no sem filhos. Vamos usar a abreviacao

Leaf ::= Node(Nil,Nil).

PrefixTree

Entrada Um conjunto de codigos C livre de prefixos.

Saıda Uma arvore binaria, representando os codigos.

1 i f |C |= 0 then2 return Ni l nao tem arvore 3 end i f4 i f |C |= ε then5 return Leaf unico codigo vazio

89

Page 92: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

6 end i f7 Escreve C = 0C1 ∪ 1C2

8 return Node ( Pre f ixTree (C1 ) , Pre f ixTree (C2 ) )

Contrariamente, temos tambem

Proposicao 4.4O conjunto das folhas de cada arvore binaria corresponde com um codigo livrede prefixo.

Prova. Dado uma arvore binaria com as folhas representando codigos, ne-nhum codigo pode ser prefixo de outro: senao ocorreria como no interno.

Qual o melhor codigo?

• A teoria de informacao (Shannon) fornece um limite.

• A quantidade de informacao que um sımbolo que ocorre com frequenciaf transmite e

− log2 f

e o numero medio de bits (para um numero grande de sımbolos)

H = −∑

fi log2 fi.

• H e um limite inferior para qualquer codigo.

• Nem sempre e possıvel atingir esse limite. Com

A = 1/3, B = 2/3; H ≈ 0.92b

mas o codigo otimo precisa 1b por sımbolo.

• Nosso exemplo: H ≈ 1.92.

Como achar o melhor codigo?

• Observacao 1: Uma solucao otima e uma arvore completa. •1@

@@

•∗•

0~~

~ 1@

@@

• •

⇒ •1@

@@

•0~~

~ 1@

@@

• •

90

Page 93: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4.4. Topicos

• Observacao 2: Em uma solucao otima, os dois sımbolos com menorfrequencia ocorrem como irmaos no nıvel mais alto. Logo: Podemossubstituir eles com um no cujo frequencia e a soma dos dois.

•1!!B

BBB

•0

1?

??

fi fj

⇒ •1$$I

III

fi + fj

Algoritmo

Huffman

Entrada Um alfabeto de sımbolos S com uma frequencia fs para cadas ∈ S.

Saıda Uma arvore binaria que representa o melhor codigo livre de prefixospara S.

1 Q := Leaf(fs) | s ∈ S f i l a de prioridade 2 while |Q| > 0 do3 b1 := Q.min() com b1 = Node(fi, bi1, bi2)4 b2 := Q.min() com b2 = Node(fj , bj1, bj2)5 Q := Q.add(Node(fi + fj , b1, b2))6 end while

Exemplo 4.4

Saccharomyces cerevisiaeConsidere a sequencia genetica do Saccharomyces cerevisiae (ingles: baker’syeast)

MSITNGTSRSV SAMGHPAV ERY TPGHIV CV GTHKV EV V . . .

com 2900352bp. O alfabeto nessa caso sao os 20 aminoacidos

S = A,C, D, E, F,G,H, I, K, L, M, N, P,Q,R, S, T, V, W, Y .

que ocorrem com as frequencias

91

Page 94: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

4. Algoritmos gulosos

A C D E F G H I K L

0.055 0.013 0.058 0.065 0.045 0.050 0.022 0.066 0.073 0.096M N P Q R S T V W Y

0.021 0.061 0.043 0.039 0.045 0.090 0.059 0.056 0.010 0.034

ResultadosO algoritmo Huffman resulta em

A C D E F G H I K L0010 100110 1110 0101 0000 1000 100111 1101 0011 100M N P Q R S T V W Y

000111 1011 11011 01011 10111 1111 0001 1010 000110 10110

que precisa 4.201b/bp (compare com log2 20 ≈ 4.32). ♦

4.5. Notas

Magazine, Nemhauser e Trotter [22] dao criterios necessarios e suficientes parauma solucao gulosa do problema de troca ser otima.

4.6. Exercıcios

(Solucoes a partir da pagina 227.)

Exercıcio 4.1 (Analise de series)Suponha uma serie de eventos, por exemplo, as transacoes feitos na bolsa deforma

compra Dell, vende HP, compra Google, . . .Uma certa acao pode acontecer mais que uma vez nessa sequencia. O pro-blema: Dado uma outra sequencia, decida o mais rapido possıvel se ela e umasubsequencia da primeira.Achar um algoritmo eficiente (de complexidade O(m + n) com sequencia detamanho n e m), prova a corretude a analise a complexidade dele.(Fonte: [17]).

Exercıcio 4.2 (Comunicacao)Imagine uma estrada comprida (pensa em uma linha) com casas ao longodela. Suponha que todas casas querem acesso ao comunicacao com celular. Oproblema: Posiciona o numero mınimo de bases de comunicacao ao longo daestrada, com a restricao que cada casa tem quer ser ao maximo 4 quilometrosdistante de uma base.Inventa um algoritmo eficiente, prova a corretude e analise a complexidadedele.(Fonte: [17]).

92

Page 95: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

5.1. Introducao

Temos um par de coelhos recem-nascidos. Um par recem-nascido se tornefertil depois um mes. Depois ele gera um outro par cada mes seguinte. Logo,os primeiros descendentes nascem em dois meses. Supondo que os coelhosnunca morrem, quantos pares tem depois de n meses?n 0 1 2 3 4 · · ·# 1 1 2 3 5 · · ·

Como os pares somente produzem filhos depois de dois meses temos

Fn = Fn−1︸ ︷︷ ︸populacao antiga

+ Fn−2︸ ︷︷ ︸descendentes

com a recorrencia completa

Fn =

Fn−1 + Fn−2 caso n ≥ 21 caso n ∈ 0, 1

Os numeros definidos por essa recorrencia sao conhecidos como so numerosFibonacci.Uma implementacao recursiva simples para calcular-os e

1 f i b (n) :=2 i f n ≤ 1 then3 return 14 else5 return f i b (n− 1)+ f i b (n− 2)6 end i f7 end

Qual a complexidade dessa implementacao? Temos a recorrencia de tempo

T (n) =

T (n− 1) + T (n− 2) + Θ(1) caso n ≥ 2Θ(1) caso contrario

93

Page 96: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

E simples de ver (inducao!) que T (n) ≥ Fn, e sabemos que Fn = Ω(2n) (outrainducao), portanto a complexidade e exponencial. (A formula exata e

Fn =

(1+√

52

)n

−(

1−√

52

)n

√5

=

(

1+√

52

)n

√5

+12

e foi publicado por Binet em 1843.)Qual o problema dessa solucao? De um lado temos um numero exponencialde caminhos das chamadas recursivas

Fn

%%Fn−1 BB 99Fn−2

%%Fn−3 BB ::Fn−4

!!· · ·

mas so um numero polinomial de valores diferentes! Nossa ideia: usa umcache!

1 f0 := 12 f1 := 13 fi := ⊥ para i ≥ 245 f i b (n) :=6 i f fn = ⊥ then7 fn := f i b (n− 1)+ f i b (n− 2)8 end i f9 return fn

10 end

Exemplo de uma execucao:4 : f5

wwwww

wwww

!!DDD

DDDD

D

3 : f4

wwwww

wwww

##GGGGGGGGG f3

2 : f3

wwwww

wwww

##GGGGGGGGG f2

1 : f2

zzzz

zzzz

##GGGGGGGGG f1

f1 f0

94

Page 97: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.1. Introducao

f5 f4 f3 f2 f1 f0

Inicial ⊥ ⊥ ⊥ ⊥ 1 11 ⊥ ⊥ ⊥ 2 1 12 ⊥ ⊥ 3 2 1 13 ⊥ 5 3 2 1 14 8 5 3 2 1 1

O trabalho agora e O(n), i.e. linear! Essa abordagem se chama memoizacao:usamos um cache para evitar recalcular resultados intermediarios frequentes.Esse implementacao e top-down e corresponde exatamente com a recorrenciaacima. Uma implementacao (ligeiramente) mais eficiente que preenche o “ca-che” da forma bottom-up e

1 f i b (n) :=2 f0 := 13 f1 := 14 for i ∈ [2, n] do5 fi := fi−1 + fi−2

6 end for7 return fn

8 end

Finalmente, podemos otimizar a computacao no caso dos numeros Fibonacciainda mais, evitando o cache totalmente

1 f i b (n) :=2 f := 13 g := 14 for i ∈ [2, n] do5 invariante : f = Fi−2 ∧ g = Fi−1 6 g:= f+g7 f :=g f8 invariante : f = Fi−1 ∧ g = Fi 9 end for

A ideia de armazenar valores intermediarias usados frequentemente numa com-putacao recursiva e uma das ideias principais da programacao dinamica. Asequencia de implementacoes nosso exemplo dos numeros Fibonacci e tıpicopara algoritmos de programacao dinamica, inclusive o ultimo para reduzir acomplexidade de espaco. Na pratica, as implementacoes ascendentes (ingl.bottom-up) sao preferidas.

Programacao Dinamica

95

Page 98: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

1. Para aplicar PD o problema deve apresentar substrutura otima (umasolucao otima para um problema contem solucoes otimas de seus sub-problemas) e superposicao de subproblemas (reutiliza solucoes de sub-problemas).

2. Pode ser aplicada a problemas NP-completos e polinomiais.

3. Em alguns casos o algoritmo direto tem complexidade exponencial, en-quanto que o algoritmo desenvolvido por PD e polinomial.

4. As vezes a complexidade continua exponencial, mas de ordem maisbaixa.

5. E util quando nao nao e facil chegar a uma sequencia otima de decisoessem testar todas as sequencias possıveis para entao escolher a melhor.

6. Reduz o numero total de sequencias viaveis, descartando aquelas quesabidamente nao podem resultar em sequencias otimas.

Ideias basicas da PD

1. Objetiva construir uma resposta otima atraves da combinacao das res-postas obtidas para subproblemas

2. Inicialmente a entrada e decomposta em partes mınimas e resolvidas deforma ascendente (bottom-up)

3. A cada passo os resultados parciais sao combinados resultando respos-tas para subproblemas maiores, ate obter a resposta para o problemaoriginal

4. A decomposicao e feita uma unica vez, e os casos menores sao tratadosantes dos maiores

5. Este metodo e chamado ascendente, ao contrario dos metodos recursivosque sao metodos descendentes.

96

Page 99: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.2. Comparacao de sequencias

Passos do desenvolvimento de um algoritmo de PD

1. Caracterizar a estrutura de uma solucao otima

2. Definir recursivamente o valor de uma solucao otima

3. Calcular o valor de uma solucao otima em um processo ascendente

4. Construir uma solucao otima a partir de informacoes calculadas

5.2. Comparacao de sequencias

5.2.1. Subsequencia Comum Mais Longa

Subsequencia Comum Mais Longa

• Dada uma sequencia X = 〈x1, x2, . . . , xm〉 e Z = 〈z1, z2, . . . , zk〉, X euma subsequencia de Z se existe uma sequencia estritamente crescente〈i1, i2, . . . , ik〉 de ındices de X tais que, para todo j = 1, 2, . . . , k, temosxij = zj .

• Exemplo: Z = 〈B,C,D,B〉 e uma subsequencia de X = 〈A,B,C,D,A, B〉

• Dadas duas sequencias X e Y , dizemos que uma sequencia Z e umasubsequencia comum de X e Y se Z e uma subsequencia de X e Y aomesmo tempo.

Subsequencia Comum Mais Longa

• Z = 〈B,C,A, B〉 e uma subsequencia comum mais longa de X = 〈A,B, C, B, D,A,B〉e Y = 〈B,D,C,A, B,A〉

• Definicao do Problema da SCML

SCML

Instancia Duas sequencias X = 〈x1, x2, . . . , xm〉 e Y = 〈y1, y2, . . . , yn〉.Solucao Uma subsequencia comum Z de X, Y .

Objetivo Maximiza o comprimento de Z.

97

Page 100: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

• Exemplo de Aplicacao: comparar dois DNAs:

X = ACCGGTCGAGTG

Y = GTCGTTCGGAATGCCGTTGCTCTGTAAA

• Os caracteres devem aparecer na mesma ordem, mas nao necessaria-mente ser consecutivos.

Teorema: Subestrutura Otima de uma SCMLSejam as sequencias X = 〈x1, x2, . . . , xm〉 e Y = 〈y1, y2, . . . , yn〉, e seja Z =〈z1, z2, . . . , zk〉 qualquer SCML de X e Y

• Se xm = yn, entao Zk = xm = yn e Zk−1 e um SCML de Xm−1 e Yn−1

• Se xm 6= yn, entao zk 6= xm implica que Z e uma SCML de Xm−1 e Y

• Se xm 6= yn, entao zk 6= ym implica que Z e uma SCML de X e Yn−1

Isso leva ao definicao recursiva

SCML(X, Y ) =

8><>:SCML(X ′, Y ′) + 1 se X = X ′c, Y = Y ′c

maxSCML(X, Y ′), SCML(X ′, Y ) se X = X ′c1, Y = Y ′c2 e c1 6= c2

0 se X = ε ou Y = ε

Qual a complexidade de implementacao recursiva (naiva)? No pior caso exe-cutamos

T (n, m) = T (n− 1,m) + T (n, m− 1) + Θ(1)

operacoes. Isso com certeza e mais que o numero de caminhos de (n, m) ate(0, 0), que e maior que

(m+n

n

), i.e. exponential no pior caso.

Com memoizacao ou armazenamento de valores intermediarios, podemos re-duzir o tempo e espaco para O(nm):

SCML

SCML

Entrada Dois strings X e Y e seus respectivos tamanhos m e n medidosem numero de caracteres.

Saıda O tamanho da maior subsequencia comum entre X e Y .

98

Page 101: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.2. Comparacao de sequencias

1 m := comprimento (X)2 n := comprimento (Y)3 for i := 1 to m do c [ i , 0 ] := 0 ;4 for i := 1 to m do c [ 0 , j ] := 0 ;5 for i := 1 to m do6 for j := 1 to n do7 i f xi = yi then8 c[i, j] := c[i− 1, j − 1] + 19 else

10 c[i, j] := max(c[i, j − 1], c[i− 1, j]11 end i f12 end for13 return c[m,n]

Caso so o comprimento da maior subsequencia em comum importa, podemosreduzir o espaco usado. Os valores de cada linha ou coluna dependem so dosvalores da linha ou coluna anterior. Supondo, que o comprimento de uma li-nha e menor que o comprimento de uma coluna, podemos manter duas linhase calcular os valores linha por linha. Caso as colunas sao menores, procede-mos das mesmo forma coluna por coluna. Com isso, podemos determinar ocomprimento da maior subsequencia em comum em tempo O(nm) e espacoO(minn, m).Caso queremos recuperar a propria subsequencia, temos que manter essa in-formacao adicionalmente:

SCML

SCML

Entrada Dois strings X e Y e seus respectivos tamanhos m e n medidosem numero de caracteres.

Saıda O tamanho da maior subsequencia comum entre X e Y e o vetorb para recuperar a maior SCML.

1 m := comprimento [X]2 n := comprimento [Y]3 for i := 1 to m do c [ i , 0 ] := 0 ;

99

Page 102: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

4 for i := 1 to m do c [ 0 , j ] := 0 ;5 for i := 1 to m do6 for j := 1 to n do7 i f xi = yi then8 c[i, j] := c[i− 1, j − 1] + 19 b[i, j] :=

10 else i f c[i− 1, j] ≥ c[i, j − 1] then11 c[i, j] := c[i− 1, j]12 b[i, j] := ↑13 else14 c[i, j] := c[i, j − 1]15 b[i, j] := ←16 return c e b

Nesse caso, nao tem metodo simples para reduzir o espaco de O(nm) (vejaos comentarios sobre o algoritmo de Hirschberg abaixo). Mantendo duas li-nhas ou colunas de c, gasta menos recursos, mas para recupar a subsequenciacomum, temos que manter O(nm) elementos em b.O algoritmo de Hirschberg [13]), via Divisao e Conquista, resolve o problemada subsequencia comum mais longa em tempo O(mn), mas com complexidadede espaco linear O(m + n). O algoritmo recursivamente divide a tabela emquatro quadrantes e ignora os quadrantes superior-direito e inferior-esquerdo,visto que a solucao nao passa por eles. Apos, o algoritmo e chamado recursiva-mente nos quadrantes superior-esquerdo e inferior-direito. Em cada chamadarecursiva e criada uma lista com as operacoes executadas, e tal lista e conca-tenada ao final das duas chamadas recursivas. A recuperacao da sequenciasde operacoes pode ser feita percorrendo-se linearmente esta lista.

Print-SCML

Print-SCML

Entrada Matriz b ∈ ←,, ↑m×n.

Saıda A maior subsequencia Z comum entre X e Y obtida a partir de b.

1 i f i = 0 or j = 0 then return2 i f b[i, j] = then

100

Page 103: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.2. Comparacao de sequencias

3 Pr int−SCML(b , X , i 1 , j 1 )4 p r i n t xi

5 else i f b[i, j] =↑ then6 Pr int−SCML(b , X , i 1 , j )7 else8 Pr int−SCML(b , X , i , j 1 )

5.2.2. Similaridade entre strings

Considere o problema de determinar o numero mınimo de operacoes que trans-formam um string s em um string t, se as operacoes permitidas sao a insercaode um caracter, a delecao de um caracter ou a substituicao de um caracterpara um outro. O problema pode ser visto como um alinhamento de doisstrings da forma

sonharvo--ar

em que cada coluna com um caracter diferente (inclusive a “falta” de um carac-ter -) tem custo 1 (uma coluna (a,−) corresponde a uma delecao no primeiroou uma insercao no segundo string, etc.). Esse problema tem subestruturaotima: Uma solucao otima contem uma solucao otima do subproblema sema ultima coluna, senao podemos obter uma solucao de menor custo. Existemquatro casos possıveis para a ultima coluna:[

a

];[−a

];[aa

];[ab

]com caracteres a, b diferentes. O caso (a, a) somente se aplica, se os ultimoscaracteres sao iguais, o caso (a, b) somente, se eles sao diferentes. Portanto,considerando todos casos possıveis fornece uma solucao otima:

d(s, t) =

max(|s|, |t|) se |s |= 0 ou |t |= 0min(d(s′, t) + 1, d(s, t′) + 1, d(s′, t′) + [c1 6= c2]) se s = s′c1 e t = t′c2

Essa distancia esta conhecida como distancia de Levenshtein [20]. Uma im-plementacao direta e

101

Page 104: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

Distancia entre textos

distancia

Entrada Dois strings s, t e seus respectivos tamanhos n e m medidos emnumero de caracteres.

Saıda A distancia mınima entre s e t.

1 d i s t a n c i a ( s , t , n ,m):=2 i f (n=0) return m3 i f (m=0) return n4 i f (sn = tm ) then5 sol0 = d i s t a n c i a (s ,t ,n 1 , m 1 )6 else7 sol0 = d i s t a n c i a (s ,t ,n 1 , m 1)+18 end i f9 sol1 = d i s t a n c i a (s ,t ,n ,m 1 ) + 1

10 sol2 = d i s t a n c i a (s ,t ,n 1 , m) + 111 return min(sol0, sol1, sol2)

Essa implementacao tem complexidade exponencial. Com programacao dinamica,armazenando os valores intermediarios de d em uma matriz m, obtemos

Distancia entre textos

PD-distancia

Entrada Dois strings s e t, e n e m, seus respectivos tamanhos medidosem numero de caracteres.

Saıda A distancia mınima entre s e t.

Comentario O algritmo usa uma matriz M = (mi,j) ∈ N(n+1)×(m+1) quearmazena as distancias mınimas mi,j entre os prefixos s[1 . . . i] et[1 . . . j].

1 PD−d i s t a n c i a ( s , t , n ,m):=2 for i := 1, . . . , n do mi,0 := i3 for i := 1, . . . ,m do m0,i := i

102

Page 105: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.2. Comparacao de sequencias

4 for i := 1, . . . , n do5 for j := 1, . . . ,m do6 i f (si = tj ) then7 sol0 := mi−1,j−1

8 else9 sol0 := mi−1,j−1 + 1

10 end i f11 sol1 := mi,j−1 + 112 sol2 := mi−1,j + 113 mi,j := min(sol0, sol1, sol2) ;14 end for15 return mi,j

Distancia entre textosValores armazenados na matriz M para o calculo da distancia entre ALTO eLOIROS

· L O I R O S· 0 1 2 3 4 5 6A 1 1 2 3 4 5 6L 2 1 2 3 4 5 6T 3 2 2 3 4 5 6O 4 3 3 3 4 4 5

-ALTO-LOIROS

Distancia entre textos

PD-distancia

Entrada Dois strings s e t, e n e m, seus respectivos tamanhos medidosem numero de caracteres.

Saıda A distancia mınima entre s e t e uma matriz P = (pi,j) que arma-zena a sequencia de operacoes.

103

Page 106: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

Comentario O algoritmo usa uma matriz M = (mi,j) ∈ N(n+1)×(m+1)

que armazena as distancias mınimas mi,j entre os prefixos s[1 . . . i]e t[1 . . . j].

1 PD d i s t a n c i a ( s , t , n ,m):=2 for i := 1, . . . , n do mi,0 = i; pi,0 := −13 for i := 1, . . . ,m do m0,i = i; p0,i := −14 for i := 1, . . . , n do5 for j := 1, . . . ,m do6 i f (si = tj ) then7 sol0 = mi−1,j−1

8 else9 sol0 = mi−1,j−1 + 1

10 end i f11 sol1 := mi,j−1 + 112 sol2 := mi−1,j + 113 mi,j := min(sol0, sol1, sol2) ;14 pi,j := mini|soli = mij15 end for16 return mi,j

Reconstrucao da Sequencia de Operacoes

PD-operacoes

Entrada Uma matriz P = (pij) de tamanho n × m com marcacao deoperacoes, strings s, t, posicoes i e j.

Saıda Uma sequencia a1, a2, ax de operacoes executadas.

1 PD opera c o e s (P, s , t , i , j ):=2 case3 pi,j = −1 :4 return5 pi,j = 0 :6 PD−opera c o e s (s ,t , i− 1 ,j − 1)7 p r in t ( ’M’ )8 pi,j = 1 :

104

Page 107: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.3. Mochila maxima

9 PD−opera c o e s (s ,t , i ,j − 1)10 p r in t ( ’ I ’ )11 pi,j = 2 :12 PD−opera c o e s (s ,t , i− 1 ,j )13 p r in t ( ’D’ )14 end case

O algoritmo possui complexidade de tempo e espaco O(mn), sendo que oespaco sao duas matrizes P e M . O espaco pode ser reduzido para O(minn, m)usando uma adaptacao do algoritmo de Hirschberg.

5.3. Mochila maxima

Mochila maxima (ingl. maximum Knapsack)

Instancia Um n itens com valores vi e peso wi, 1 ≤ i ≤ n e um limite depeso da mochila W .

Solucao Um subconjunto S ⊆ [1, n] que cabe na mochila, i.e.∑

i∈S wi ≤W .

Objetivo Maximizar o valor total∑

i∈S vi dos itens selecionados.

Ideia: Ou item i faz parte da solucao otima com itens i . . . n ou nao.

• Caso sim: temos um valor vi acima da solucao otima para itens i +1, . . . , n com capacidade restante W − wi.

• Caso nao: temos um valor correspondente ao solucao otima para itensi]1, . . . , n com capacidade W .

Seja M(i, w) o valor da solucao maxima para itens em [i, n] e capacidade W .A ideia acima define uma recorrencia

M(i, w) =

0 se i > n ou w = 0M(i + 1, w) se wi > w nao cabemaxM(i + 1, w),M(i + 1, w − wi) + vi se wi ≤ w

105

Page 108: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

A solucao desejada e M(n, W ). Para determinar a selecao de itens:

Mochila maxima (Knapsack)

• Seja S∗(k, v) a solucao de tamanho menor entre todas solucoes que

– usam somente itens S ⊆ [1, k] e

– tem valor exatamente v.

• Temos

S∗(k, 0) = ∅S∗(1, v1) = 1S∗(1, v) = undef para v 6= v1

Mochila maxima (Knapsack)

• S∗ obedece a recorrencia

S∗(k, v) = mintamanho

(S∗(k − 1, v − vk) ∪ k se vk ≤ v e S∗(k − 1, v − vk) definido

S∗(k − 1, v)

• Menor tamanho entre os dois∑i∈S∗(k−1,v−vk)

ti + tk ≤∑

i∈S∗(k−1,v)

ti.

• Melhor valor: Escolhe S∗(n, v) com o valor maximo de v definido.

• Tempo e espaco: O(n∑

i vi).

5.4. Multiplicacao de Cadeias de Matrizes

Qual e a melhor ordem para multiplicar n matrizes M = M1×· · ·×Mn? Comoo produto de matrizes e associativo, temos varias possibilidades de chegar emM . Por exemplo, com quatro matrizes temos as cinco possibilidades

106

Page 109: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.4. Multiplicacao de Cadeias de Matrizes

Possıveis multiplicacoesDadas (M1,M2,M3,M4) pode-se obter M1 × M2 × M3 × M4 de 5 modosdistintos, mas resultando no mesmo produto

M1(M2(M3M4))M1((M2M3)M4)(M1M2)(M3M4)(M1(M2M3))M4

((M1M2)M3)M4

• Podemos multiplicar duas matrizes somente se Ncol(A) = Nlin(B)

• Sejam duas matrizes com dimensoes p · q e q · r respectivamente. Onumero de multiplicacoes resultantes e p · q · r.

Dependendo do tamanho dos matrizes, um desses produtos tem o menornumero de adicoes e multiplicacoes. O produto de duas matrizes p × q eq × r precisa prq multiplicacoes e pr(q − 1) adicoes. No exemplo acima, casotemos matrizes do tamanho 3 × 1, 1 × 4, 4 × 1 e 1 × 5 as ordens diferentesresultam em

Numero de multiplicacoes para cada sequencia

20 + 20 + 15 = 554 + 5 + 15 = 24

12 + 20 + 60 = 924 + 5 + 15 = 24

12 + 12 + 15 = 39

operacoes, respectivamente. Logo, antes de multiplicar as matrizes vale a penadeterminar a ordem otima (caso o tempo para determinar ela nao e proibitivo).Dada uma ordem, podemos computar o numero de adicoes e multiplicacoesem tempo linear. Mas quantas ordens tem? O produto final consiste em duasmatrizes que sao os resultados dos produtos de i e n− i matrizes; o ponto deseparacao i pode ser depois qualquer matriz 1 ≤ i < n. Por isso o numero depossibilidades Cn satisfaz a recorrencia

Cn =∑

1≤i<n

CiCn−i

107

Page 110: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

para n ≥ 1 e as condicoes C1 = 1 e C2 = 1. A solucao dessa recorrencia eCn =

(2nn

)1

2(2n−1) = O(4n/n3/2) e temos Cn ≥ 2n−2, logo tem um numeroexponencial de ordens de multiplicacao possıveis1.

Solucao por RecorrenciaO numero de possibilidades Tn satisfaz a recorrencia

T (n) =∑

1≤i<n−1

T (i) · T (n− i)

para n ≥ 1 e as condicoes T (1) = 1.A solucao dessa recorrencia e T (n) =

(2nn

)1

2(2n−1) = O(4n/n3/2) e temosCn ≥ 2n−2

Entao nao vale a pena avaliar o melhor ordem de multiplicacao, enfrentandoum numero exponencial de possibilidades? Nao, existe uma solucao comprogramacao dinamica, baseada na mesma observacao que levou a nossa re-correncia.

mik =

mini≤j<k mij + m(j+1)k + bi−1bjbk caso i < k

0 caso i = kx

Multiplicacao de Cadeias de Matrizes

• Dada uma cadeia (A1, A2, . . . , An) de n matrizes, coloque o produtoA1A2 . . . An entre parenteses de forma a minimizar o numero de multi-plicacoes.

Algoritmo Multi-Mat-1Retorna o numero mınimo de multiplicacoes necessarias para multiplicar a cadeia de matrizespassada como parametro.

Multi-Mat-1

Entrada Cadeia de matrizes (A1, A2, . . . , An) e suas respectivas dimensoes bi, 0 ≤ i ≤ n. Amatrix Ai tem dimensao bi−1 × bi.

Saıda Numero mınimo de multiplicacoes.

1Podemos obter uma solucao usando funcoes geratrizes. (Cn−1)n≥1 sao os numeros Ca-talan, que tem um numero enorme de aplicacoes na combinatorica.

108

Page 111: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.4. Multiplicacao de Cadeias de Matrizes

1 for i:=1 to n do mi,j := 02 for u:=1 to n− 1 do diagonais superiores3 for i:=1 to n− u do posicao na diagonal4 j :=i + u u = j − i5 mi,j := ∞6 for k:=i to j − 1 do7 c:= mi,k + mk+1,j + bi−1 · bk · bj

8 i f c < mi,j then mi,j :=c9 end for

10 end for11 end for12 return m1,n

Consideracoes para a Analise

• O tamanho da entrada se refere ao numero de matrizes a serem multi-plicadas

• As operacoes aritmeticas sobre os naturais sao consideradas operacoesfundamentais

Analise de Complexidade do Algoritmo

Cp =n−1∑u=1

n−u∑i=1

(1 +j−1∑k−i

4) =n−1∑u=1

n−u∑i=1

(1 + 4u)

=n−1∑u=1

(n− u)(1 + 4u) =n−1∑u=1

n + 4nu− u− 4u2 = O(n3)

Analise de Complexidade do Algoritmo

Cp[Inicializacao] = O(n)

Cp[Iteracao] = O(n3)Cp[Finalizacao] = O(1)

Cp[Algoritmo] = O(n) + O(n3) + O(1) = O(n3)

109

Page 112: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

Algoritmo Multi-Mat-2Retorna o numero mınimo de multiplicacoes e a parentizacao respectiva para multiplicar a cadeiade matrizes passada como parametro.

Multi-Mat-1

Entrada Cadeia de matrizes (A1, A2, . . . , An) e suas respectivas dimensoes armazenadas novetor b.

Saıda Numero mınimo de multiplicacoes.

1 for i:=1 to n do mi,j := 0 i n i c i a l i z a diagonal principal2 for d:=1 to n− 1 do para todas diagonais superiores3 for i:=1 to n− u do para cada posicao na diagonal4 j :=i + u u=j i5 mi,j := ∞6 for k:=i to j do7 c:= mi,k + mk+1,j + bi−1 · bk · bj

8 i f c < mi,j then9 mi,j :=c

10 Pi,j = k11 end for12 end for13 end for14 return m1,n, p

Algoritmo Print-Parentizacao

Print-Parentizacao

Entrada Matriz P , ındices i e j .

Saıda Impressao da parentizacao entre os ındices i e j.

1 i f i = j then2 pr in t ”Ai”3 else4 pr in t ”(”5 Pr int−Parent iza c a o (P, i, Pi,j )6 Pr int−Parent iza c a o (P, Pi,j + 1, j )7 p r i n t ”)”8 end i f

110

Page 113: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.5. Topicos

5.5. Topicos

5.5.1. Algoritmo de Floyd-Warshall

O algoritmo de Floyd-Warshall calcula o caminho mınimo entre todos os paresde vertices de um grafo.

Algoritmo de Floyd-Warshall

• Conteudo disponıvel na secao 25.2 do Cormen, e Exemplo 5.2.4 (Laira&Veloso,2a edicao).

• Calcula o caminho mınimo entre cada par de vertices de um grafo.

• Considera que o grafo nao tenha ciclos negativos, embora possa conterarcos de custo negativo.

Subestrutura otimaSubcaminhos de caminhos mais curtos sao caminhos mais curtos.

• Lema 24.1 (Cormen): Dado um grafo orientado ponderado G = (V,E),com funcao peso w : E → R, seja p = (v1, v2, . . . , vk) um caminho maiscurto do vertice v1 ate o vertice vk e, para quaisquer i e j tais que1 ≤ i ≤ j ≤ k, seja pij = (vi, vi+1, . . . , vj) o subcaminho p desde overtice vi ate o vertice vj . Entao, pij e um caminho mais curto de vi atevj .

Algoritmo de Floyd-Warshall

Algoritmo de Floyd-Warshall

Entrada Um grafo G = (V,E) e uma matriz quadrada com cada celulacontendo o peso do arco (i,j), ou ∞ caso o arco nao existir

Saıda Uma matriz quadrada com cada celula contendo a distanciamınima entre i e j.

1 n := l i nha s (W )2 for k := 1 to n3 for i := 1 to n

111

Page 114: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

4 for j := 1 to n

5 dkij := min(dk−1

ij , dk−1ik + dk−1

kj )6 return (Dn )

Exemplo

5.5.2. Caixeiro viajante

O problema de caixeiro viajante e um exemplo em que a programacao dinamicaajuda reduzir um trabalho exponencial. Esperadamente, o algoritmo finalainda e exponencial (o problema e NP-completo), mas significadamente menor.

Problema do Caixeiro Viajante

Instancia Um grafo G=(V,E) com pesos d (distancias) atribuıdos aoslinks. V = [1, n] sem perda de generalidade.

Solucao Uma rota que visita todos vertices exatamente uma vez, i.e. umapermutacao de [1, n].

Objetivo Minimizar o custo da rota∑

1≤i<n di,i+1 + dn,1.

O algoritmo e baseado na seguinte ideia (proposta por Bellman em 1962 [4]).Seja v1, v2, . . . uma solucao otima. Sem perda de generalidade, podemos suporque v1 = 1. Essa solucao tem como sub-solucao otima o caminho v2, v3, . . .que passa por todos vertices exceto v1 e volta. Da mesmo forma a ultima sub-solucao tem o caminho v3, v4, . . . que passa por todos vertices exceto v1, v2

e volta, como sub-solucao. Essa solucoes tem sub-estrutura otima, porquequalquer outro caminho menor pode ser substituıdo para o caminho atual.Logo, podemos definir T (i, V ) como menor rota comecando no vertice i epassando por todos vertices em V exatamente uma vez e volta para vertice1. A solucao desejada entao e T (1, [2, n]). Para determinar o valor de T (i, V )temos que minizar sobre todas continuacoes possıveis. Isso leva a recorrencia

112

Page 115: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.5. Topicos

T (i, V ) =

minv∈V div + T (v, V \ v) V 6= ∅di1 caso V = ∅

Se ordenamos todos os sub-conjuntos dos vertices [1, n] em ordem de ⊆, ob-temos uma matrix de dependencias

V1 V2 · · · V2n

12...n

em que qualquer elemento depende somente de elementos em colunas maispara esquerda. Uma implementacao pode representar uma subconjunto de[1, n] como numero entre 0 e 2n − 1. Nessa caso, a ordem natural ja respeitaa ordem ⊆ entre os conjuntos, e podemos substituir um teste v ∈ Vj com2v&j = 2v e a operacao Vj \ v com j − 2v.

1 for i ∈ [1, n] do Ti,0 := di1 base 2 for j ∈ [1, 2n − 1] do3 for i ∈ [1, n] do4 Ti,j := min2k&j=2k dik + Ti,j−2k tempo O(n) ! 5 end for6 end for

A complexidade de tempo desse algoritmo e n22n porque a minimzacao nalinha 4 precisa O(n) operacoes. A complexidade do espacao e O(n2n). Essa eatualmente o melhor algoritmo exato conhecido para o problema do caixeiroviajante (veja tambem xkcd.com/399).

5.5.3. Arvore de busca binaria otima

Motivacao para o Problema

• Suponha que temos um conjunto de chaves com probabilidades de buscaconhecidas.

• Caso a busca e repetida muitas vezes, vela a pena construir uma estru-tura de dados que minimiza o tempo medio para encontrar uma chave.

• Uma estrutura de busca eficiente e um arvore binaria.

113

Page 116: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

Portanto, vamos investigar como construir o arvore binaria otimo. Para umconjunto de chaves com distribuicao de busca conhecida, queremos minimizaro numero medio de comparacoes (nossa medida de custos).

Exemplo 5.1Considere a sequencia ordenada a < b < c < d e as probabilidades

ExemploElemento a b c dPr 0.2 0.1 0.6 0.1

qual seria uma arvore otima? Alguns exemplos

Arvore correspondente'&%$ !"#a == '&%$ !"#b <<'&%$ !"#c ==/.-,()*+d

'&%$ !"#b <<'&%$ !"#a '&%$ !"#c ==/.-,()*+d

/.-,()*+d'&%$ !"#b

=='&%$ !"#a '&%$ !"#c

com um numero medio de comparacoes 0.2×1+0.1×2+0.6×3+0.1×4 = 2.6,0.2×2+0.1×1+0.6×2+0.1×3 = 2.0, 0.2×3+0.1×2+0.6×3+0.1×1 = 2.7,respectivamente. ♦

Arvore de Busca Binaria OtimaEm geral, temos que considerar nao somente as probabilidades que procure-seum dado chave, mas tambem as probabilidades que um chave procurada naopertence a arvore. Logo supomos que temos

1. uma sequencia ordenada a1 < a2 < · · · < an de n chaves e

2. probabilidades

Pr[c < a1],Pr[c = a1],Pr[a1 < c < a2], . . .. . . , Pr[an−1 < c < an],Pr[c = an],Pr[an < c]

que a chave procurado c e uma das chaves da sequencia ou cai numintervalo entre elas.

A partir dessas informacoes queremos minimizar a complexidade media dabusca. Em uma dada arvore, podemos observar que o numero de com-paracoes para achar uma chave existente e igual a profundidade dela na arvore(comecando com profundidade 1 na raiz). Caso a chave nao pertence a arvore,

114

Page 117: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.5. Topicos

podemos imaginar chaves artificiais que representam os intervalos entre as cha-ves, e o numero de comparacoes necessarias e um menos que a profundidadede uma chave artificial. Um exemplo de um arvore com chaves artificiais(representado pelos intervalos correspondentes) e

x2

sshhhhhhhhhh++VVVVVVVVVV

x1wwoooo %%LL

L x3yyrrr %%LL

L

]−∞, x1[ ]x1, x2[ ]x2, x3[ ]x3,∞[Para facilitar o tratamento, vamos introduzir chaves adicionais a0 = −∞ ean+1 =∞. Com isso, obtemos a complexidade media de busca

cM =∑

1≤i≤n

Pr[c = ai]prof(ai) +∑

0≤i≤n

Pr[ai < c < ai+1](prof(]ai, ai+1[)− 1);

ela depende da arvore concreta.Como achar a arvore otima? A observacao crucial e a seguinte: Uma daschaves deve ser a raiz e a duas sub-arvores da esquerda e da direita devem serarvores otimas pelas sub-sequencias correspondentes.Para expressar essa observacao numa equacao, vamos denotar com cM (e, d)a complexidade ponderada de uma busca numa sub-arvore otima sobre oselementos ae, . . . , ad. Para a complexidade da arvore inteira, definido acima,temos cM = cM (1, n). Da mesmo forma, obtemos

cM (e, d) =∑

e≤i≤d

Pr[c = ai]prof(ai)+∑

e−1≤i≤d

Pr[ai < c < ai+1](prof(]ai, ai+1[)−1)

Arvore de Busca Binaria OtimaSupondo que ar e a raiz desse sub-arvore, essa complexidade pode ser escritocomo

cM (e, d) = Pr[c = ar]

+∑

e≤i<r

Pr[c = ai]prof(ai) +∑

e−1≤i<r

Pr[ai < c < ai+1](prof(]ai, ai+1[)− 1)

+∑

r<i≤d

Pr[c = ai]prof(ai) +∑

r≤i≤d

Pr[ai < c < ai+1](prof(]ai, ai+1[)− 1)

=

∑e−1≤i≤d

Pr[ai < c < ai+1] +∑

e≤i≤d

Pr[c = ai]

+ cM (e, r − 1) + cM (r + 1, d)= Pr[ae−1 < c < ad+1] + cM (e, r − 1) + cM (r + 1, d)

115

Page 118: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5. Programacao dinamica

Arvore de Busca Binaria Otima(O penultimo passo e justificado porque, passando para uma sub-arvore aprofundidade e um a menos.) Com essa equacao podemos construir umarecorrencia para a complexidade media otima: Escolhe sempre a raiz queminimiza essa soma. Como base temos complexidade 0 se d > e:

cM (e, d) =mine≤r≤d Pr[ae−1 < c < ad+1] + cM (e, r − 1) + cM (r + 1, d) caso e ≤ d

0 caso e > d

(5.1)

Arvore de Busca Binaria OtimaAo inves de calcular o valor cM recursivamente, vamos usar a programacao(tabelacao) dinamica com tres tabelas:

• cij : complexidade media da arvore otima para as chaves ai ate aj

• rij : raiz da arvore otima para as chaves ai ate aj

• pij : Pr[ai−1 < c < aj+1]

Arvore de Busca Binaria Otima

ABB-OTIMA

Entrada Probabilidades pi = Pr[c = ai] e qi = Pr[ai < c < ai+1].

Saıda Vetores c e r como descrita acima.

1 for i:=1 to n+1 do2 pi(i−1) :=qi−1

3 ci(i−1) :=0

4 end for56 for d:=0 to n− 1 do para todas diagonais 7 for i:=1 to n− d do da chave i 8 j :=d + i ate chave j 9 pij :=pi(j−1) + pj + qj

10 cij :=∞11 for r:=i to j do12 c:= pij + ci(r−1) + c(r+1)j

13 i f c < cij then

116

Page 119: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

5.5. Topicos

14 cij :=c15 rij := r16 end for17 end for18 end for

i/j 1 2 3 · · · n12··n

Finalmente, queremos analisar a complexidade desse algoritmo. Sao tres lacos,cada com nao mais que n iteracoes e com trabalho constante no corpo. Logoa complexidade pessimista e O(n3).

117

Page 120: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 121: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

6.1. Introducao

Metodo de Divisao e Conquista

• Dividir o problema original em um determinado numero de subproble-mas independentes

• Conquistar os subproblemas, resolvendo-os recursivamente ate obter ocaso base.

• Combinar as solucoes dadas aos subproblemas, a fim de formar a solucaodo problema original.

Recorrencias

• O tempo de execucao dos algoritmos recursivos pode ser descrito poruma recorrencia.

• Uma recorrencia e uma equacao ou desigualdade que descreve umafuncao em termos de seu valor em entradas menores.

Divisao e conquista

DC

Entrada Uma instancia I de tamanho n.

1 i f n = 1 then2 return Solu c ao d i r e t a3 else4 Divide I em sub i n s t a n c i a s I1, . . . , Ik , k > 05 com tamanhos ni < n .6 Resolve recurs ivamente : I1, . . . , Ik .7 Resolve I usando sub so l u c o e s DC(I1), . . . , DC(Ik) .8 end i f

119

Page 122: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

Recursao natural

• Seja d(n) o tempo para a divisao.

• Seja s(n) o tempo para computar a solucao final.

• Podemos somar: f(n) = d(n) + s(n) e obtemos

T (n) =

Θ(1) para n < n0∑

1≤i≤k T (ni) + f(n) caso contrario.

Recursao natural: caso balanceado

T (n) =

Θ(1) para n < n0

kT (dn/me) + f(n) caso contrario.

Mergesort

Mergesort

Entrada Indices p, r e um vetor A com elementos Ap, . . . , Ar

Saıda A com elementos em ordem nao-decrescente, i.e. para i < j temosAi ≤ Aj .

1 i f n = 1 then2 return Solu c ao d i r e t a3 else4 Divide I em sub i n s t a n c i a s I1, . . . , Ik , k > 05 com tamanhos ni < n .6 Resolve recurs ivamente : I1, . . . , Ik .7 Resolve I usando sub so l u c o e s DC(I1), . . . , DC(Ik) .8 end i f

Recorrencias simplificadas

120

Page 123: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.2. Resolver recorrencias

Formalmente, a equacao de recorrencia do Mergesort e

T (n) =

Θ(1) se n = 1T (⌈

n2

⌉) + T (

⌊n2

⌋) + Θ(n) se n > 1

Em vez de

T (n) = 2T (n/2) + Θ(n)

Para simplificar a equacao, sem afetar a analise de complexidade correspon-dente, em geral:

• supoe-se argumentos inteiros para funcoes (omitindo pisos e tetos)

• omite-se a condicao limite da recorrencia

Recorrencias: caso do MergesortA equacao de recorrencia do Mergesort e

T (n) = 2T (n/2) + Θ(n)

Sendo que:

• T(n) representa o tempo da chamada recursiva da funcao para um pro-blema de tamanho n.

• 2T (n2 ) indica que, a cada iteracao, duas chamadas recursivas (2T) serao

executadas para entradas de tamanho n2 .

• Os resultados das duas chamadas recursivas serao combinados (merged)com um algoritmo com complexidade de pior caso Θ(n).

6.2. Resolver recorrencias

Metodos para resolver recorrenciasExistem varios metodos para resolver recorrencias:

• Metodo da substituicao

• Metodo de arvore de recursao

• Metodo mestre

121

Page 124: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

6.2.1. Metodo da substituicao

Metodo da substituicao

• O metodo da substituicao envolve duas etapas:

1. pressupoe-se um limite hipotetico.

2. usa-se inducao matematica para provar que a suposicao esta cor-reta.

• Aplica-se este metodo em casos que e facil pressupor a forma de resposta.

• Pode ser usado para estabelecer limites superiores ou inferiores.

Mergesort usando o metodo da substituicaoSupoe-se que a recorrencia

T (n) = 2T (⌊n

2

⌋) + n

tem limite superior igual a n log n, ou seja, T (n) = O(n log n). Devemosprovar que T (n) ≤ c ·n log n para uma escolha apropriada da constante c > 0.

T (n) ≤ 2(c⌊n

2

⌋log(

⌊n

2

⌋) + n)

≤ cn logn

2+ n = cn log n− cn + n

≤ cn log n

para c ≥ 1.A expressao na equacao

c · n log n−c · n + n︸ ︷︷ ︸residuo

se chama resıduo. O objetivo na prova e mostrar, que o resıduo e negativo.

Como fazer um bom palpite

• Usar o resultado de recorrencias semelhantes. Por exemplo, conside-rando a recorrencia T (n) = 2T (

⌊n2

⌋+ 17) + n, tem-se que T (n) ∈

O(n log n).

122

Page 125: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.2. Resolver recorrencias

• Provar limites superiores (ou inferiores) e reduzir o intervalo de incerteza.Por exemplo, para equacao do Mergesort podemos provar que T (n) =Ω(n) e T (n) = O(n2). Podemos gradualmente diminuir o limite superiore elevar o inferior, ate obter T (n) = Θ(n log n).

• Usa-se o resultado do metodo de arvore de recursao como limite hi-potetico para o metodo da substituicao.

Exemplo 6.1Vamos procurar o maximo de uma sequencia por divisao e conquista:

Maximo

Entrada Uma sequencia a e dois ındices l, r tal que al, . . . , ar−1 e definido.

Saıda maxl≤i<r ai

1 m1 := M(a, l, b(l + r)/2c2 m2 := M(a, b(l + r)/2, rc

Isso leva a recorrencia

T (n) = T (bn/2c) + T (dn/2e) + 1

Algumas sutilezas nas resolucoes

• Considere a recorrencia T (n) = T (bn/2c) + T (dn/2e) + 1. Prove queT (n) = O(n)

• Considere a recorrencia T (n) = 2T (bn/2c) + n. E possıvel provar queT (n) = O(n)?

• Considere a recorrencia T (n) = 2T (b√

nc) + log n. Prove que T (n) =O(log n log log n)

Proposta de exercıcios: 4.1-1, 4.1-2, 4.1-5 e 4.1-6 do Cormen (pag. 54 da edicaotraduzida).

123

Page 126: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

Substituicao direta

• Supomos que a recorrencia tem a forma

T (n) =

f(1) caso n = 1T (n− 1) + f(n) caso contrario

• Para resolver ele podemos substituir

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

= · · · =∑

1≤i≤n

f(i)

(Os · · · substituem uma prova por inducao.)

E simples de generalizar isso para

T (n) = T (n/c) + f(n)

= f(n) + f(n/c) + f(n/c2) + · · ·

=∑

0≤i≤logcn

f(n/ci)

Exemplo 6.2Na aula sobre a complexidade media do algoritmo Quicksort (veja pagina 59),encontramos uma recorrencia da forma

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

cuja solucao e∑

1≤i≤n i = n(n− 1)/2. ♦

Substituicao direta

• Da mesma forma podemos resolver recorrencias como

T (n) =

f(1) caso n = 1T (n/2) + f(n) caso contrario

• substituindo

T (n) = f(n) + T (n/2) = f(n) + f(n/2) + T (n/4)

= · · · =∑

0≤i≤log2 n

f(n/2i)

124

Page 127: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.2. Resolver recorrencias

Exemplo 6.3Ainda na aula sobre a complexidade media do algoritmo Quicksort (vejapagina 59), encontramos outra recorrencia da forma

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

Para colocar ela na forma acima, vamos dividir primeiro por n para obter

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

e depois substituir A(n) = T (n)/n, que leva a recorrencia

A(n) = 1 + A(n/2)

cuja solucao e∑

0≤i≤log2 n 1 = log2 n. Portanto temos a solucao T (n) =n log2 n.Observe que a analise nao considera constantes: qualquer funcao cn log2 ntambem satisfaz a recorrencia. A solucao exata e determinada pela base; umaalternativa e concluir que T (n) = Θ(n log2 n). ♦

Tambem podemos generalizar isso. Para

f(n) = 2f(n/2)

e simples de ver que

f(n) = 2f(n/2) = 22f(n/4) = · · · = 2log2 nn = n

(observe que toda funcao f(n) = cn satisfaz a recorrencia).Generalizando obtemos

f(n) = cf(n/2) = · · · = clog2 n = nlog2c

f(n) = c1f(n/c2) = · · · = clogc2

n

1 = nlogc2c1

O caso mais complicado e o caso combinado

T (n) = c1T (n/c2) + f(n).

O nosso objetivo e nos livrar da constante c1. Se dividimos por clogc2

n

1 obtemos

T (n)

clogc2

n

1

=T (n/c2)

clogc2

n/c2

1

+f(n)

clogc2

n

1

125

Page 128: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

e substituindo A(n) = T (n)/clogc2

n

1 temos

A(n) = A(n/c2) +f(n)

clogc2

n

1

uma forma que sabemos resolver:

A(n) =∑

0≤i≤logc2n

f(n/ci2)

clogc2

n/ci2

1

=1

clogc2

n

1

∑0≤i≤logc2

n

f(n/ci2)c

i1

Apos de resolver essa recorrencia, podemos re-substituir para obter a solucaode T (n).

Exemplo 6.4Multiplicacao de numeros inteiros A multiplicacao de numeros binarios (vejaexercıcio 6.3) gera a recorrencia

T (n) = 3T (n/2) + cn

Dividindo por 3log2 n obtemos

T (n)3log2 n

=T (n/2)3log2 n/2

+cn

3log2 n

e substituindo A(n) = T (n)/3log2 n temos

A(n) = A(n/2) +cn

3log2 n

= c∑

0≤i≤log2 n

n/2i

3log2 n/2i

=cn

3log2 n

∑0≤i≤log2 n

(32

)i

=cn

3log2 n

(3/2)log2 n+1

1/2= 3c

e portanto

T (n) = A(n)3log2 n = 3cnlog2 3 = Θ(n1.58)

126

Page 129: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.2. Resolver recorrencias

6.2.2. Metodo da arvore de recursao

O metodo da arvore de recursaoUma arvore de recursao apresenta uma forma bem intuitiva para a analise decomplexidade de algoritmos recursivos.

• Numa arvore de recursao cada no representa o custo de um unico sub-problema da respectiva chamada recursiva

• Somam-se os custos de todos os nos de um mesmo nıvel, para obter ocusto daquele nıvel

• Somam-se os custos de todos os nıveis para obter o custo da arvore

ExemploDada a recorrencia T (n) = 3T (bn/4c) + Θ(n2)

• Em que nıvel da arvore o tamanho do problema e 1? No nıvel i =log4 n = log2 n

2 .

• Quantos nıveis tem a arvore? A arvore tem log4 n + 1 nıveis (0, 1, 2, 3,..., log4 n).

• Quantos nos tem cada nıvel? 3i.

• Qual o tamanho do problema em cada nıvel? n4i .

• Qual o custo de cada nıvel i da arvore? 3ic( n4i )2.

• Quantos nos tem o ultimo nıvel? Θ(nlog4 3).

• Qual o custo da arvore?∑log4(n)

i=0 n2 · (3/16)i = O(n2).

Exemplo

nıvel nos

0 Θ(n2)uukkkkk

))SSSSS 30

1 Θ((n/4)2)uukkk ))SSS

Θ((n/4)2) Θ((n/4)2) 31

2 Θ((n/42)2) Θ((n/42)2) Θ((n/42)2) 32

· · ·

h = dlog4 ne · · · Θ((n/4h)2) · · · 3h

127

Page 130: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

Prova por substituicao usando o resultado da arvore de recorrencia

• O limite de O(n2) deve ser um limite restrito, pois a primeira chamadarecursiva e Θ(n2).

• Prove por inducao que T (n) = Θ(n2)

T (n) ≤ 3T (bn/4c) + cn2

≤ 3d bn/4c2 + cn2

≤ 3d(n/4)2 + cn2

=316

dn2 + cn2

≤ d · n2

para (3d16 + c) ≤ d, ou seja, para valores de d tais que d ≥ 16

13c

Exemplo 6.5Outro exemplo e a recorrencia T (n) = 3T (n/2) + cn da multiplicacao denumeros binarios. Temos log2 n nıveis na arvore, o nıvel i com 3i nos, tamanhodo problema n/2i, trabalho cn/2i por no e portanto (3/2)in trabalho total pornıvel. O numero de folhas e 3log2 n e portanto temos

T (n) =∑

0≤i<log2 n

(3/2)in + Θ(3log2 n)

= n

((3/2)log2 n − 1

3/2− 1

)+ Θ(3log2 n)

= 2(nlog2 3 − 1) + Θ(nlog2 3)

= Θ(nlog2 3)

Observe que a recorrencia T (n) = 3T (n/2) + c tem a mesma solucao. ♦

Resumindo o metodo

1. Desenha a arvore de recursao

2. Determina

• o numero de nıveis

• o numero de nos e o custo por nıvel

128

Page 131: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.2. Resolver recorrencias

• o numero de folhas

3. Soma os custos dos nıveis e o custo das folhas

4. (Eventualmente) Verifica por substituicao

Arvore de recorrencia: ramos desiguaisCalcule a complexidade de um algoritmo com a seguinte equacao de recorrencia

T (n) = T (n/3) + T (2n/3) + O(n)

Proposta de exercıcios: 4.2-1, 4.2-2 e 4.2-3 do Cormen [7].

6.2.3. Metodo Mestre

Metodo MestrePara aplicar o metodo mestre deve ter a recorrencia na seguinte forma:

T (n) = aT(n

b

)+ f(n)

onde:

• a ≥ 1

• b > 1

• f(n) e uma funcao assintoticamente positiva.

Se a recorrencia estiver no formato acima, entao T (n) e limitada assintotica-mente como:

1. Se f(n) = O(nlogb a−ε) para algum ε > 0, entao T (n) = Θ(nlogb a)

2. Se f(n) = Θ(nlogb a), entao T (n) = Θ(nlogb a log n)

3. Se f(n) = Ω(nlogb a+ε) para algum ε > 0, e se af(n/b) ≤ cf(n) parac < 1 e para todo n suficientemente grande, entao T (n) = Θ(f(n))

Consideracoes

• Nos casos 1 e 3 f(n) deve ser polinomialmente menor, resp. maior quenlogb a, ou seja, f(n) difere assintoticamente por um fator nε para umε > 0.

• Os tres casos nao abrangem todas as possibilidades

Proposta de exercıcios: 6.1 e 6.2.

129

Page 132: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

Algoritmo Potenciacao

Potenciacao-Trivial (PT)

Entrada Uma base a ∈ R e um exponente n ∈ N.

Saıda A potencia an.

1 i f n = 02 return 13 else4 return PT(a, n− 1)× a5 end i f

Complexidade da potenciacao

T (n) =

Θ(1) se n = 0T (n− 1) + 1 se n > 0

A complexidade dessa recorrencia e linear, ou seja, T (n) ∈ O(n)

Algoritmo Potenciacao para n = 2i

Potenciacao-Npotencia2 (P2)

Entrada Uma base a ∈ R e um exponente n ∈ N.

Saıda A potencia an.

1 i f n = 1 then2 return a3 else4 x := P2(a , n÷ 2)5 return x× x6 end i f

130

Page 133: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.2. Resolver recorrencias

Complexidade da potenciacao-Npotencia2

T (n) =

Θ(1) se n = 0T (⌊

n2

⌋) + c se n > 0

A complexidade dessa recorrencia e logarıtmica, ou seja, T (n) ∈ O(log n)

Busca Binaria

Busca-Binaria(i,f,x,S)

Entrada Um inteiro x, ındices i e f e uma sequencia S = a1, a2, . . . an denumeros ordenados.

Saıda Posicao i em que x se encontra na sequencia S ou ∞ caso x /∈ S.

1 i f i = f then2 i f ai = x return i3 else return ∞4 end i f

5 m :=⌊

f−i2

⌋+ i

6 i f x < am then7 return Busca Bin a r ia ( i , m− 1)8 else9 return Busca Bin a r ia (m + 1 , f )

10 end i f

Complexidade da Busca-Binaria

T (n) =

Θ(1) se n = 1T (⌊

n2

⌋) + c se n > 1

A complexidade dessa recorrencia e logarıtmica, ou seja, T (n) ∈ O(log n)

Quicksort

Quicksort

131

Page 134: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

Entrada Indices l, r e um vetor a com elementos al, . . . , ar.

Saıda a com os elementos em ordem nao-decrescente, i.e. para i < j temosai ≤ aj .

1 i f l < r then2 m := Par t i t i on ( l , r , a ) ;3 Quicksort ( l ,m− 1 ,a ) ;4 Quicksort (m + 1 ,r ,a ) ;5 end i f

Complexidade do Quicksort no pior caso

T (n) =

Θ(1) se n = 1T (n− 1) + Θ(n) se n > 1

A complexidade dessa recorrencia e quadratica, ou seja, T (n) ∈ O(n2)

Complexidade do Quicksort no melhor caso

T (n) =

Θ(1) se n = 12T (n

2 ) + Θ(n) se n > 1

A complexidade dessa recorrencia e T (n) ∈ O(n log n)

Complexidade do Quicksort com Particionamento Balanceado

T (n) =

Θ(1) se n = 1T ( 9n

10 ) + T ( n10 ) + Θ(n) se n > 1

A complexidade dessa recorrencia e T (n) ∈ O(n log n)

Prova do Teorema Master

• Consideremos o caso simplificado em que n = 1, b, b2, ..., ou seja, n euma potencia exata de dois e assim nao precisamos nos preocupar comtetos e pisos.

132

Page 135: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.2. Resolver recorrencias

Prova do Teorema MasterLema 4.2: Sejam a ≥ 1 e b > 1 constantes, e seja f(n) uma funcao naonegativa definida sobre potencias exatas de b. Defina T (n) sobre potenciasexatas de b pela recorrencia:

T (n) = Θ(1) se n = 1T (n) = aT (n

b ) + f(n) se n = bi

Onde i e um inteiro positivo. Entao

T (n) = Θ(nlogba) +logb(n−1)∑

j=0

aj · f(n/bj)

Prova do Teorema MasterLema 4.4: Sejam a ≥ 1 e b > 1 constantes, e seja f(n) uma funcao nao negativadefinida sobre potencias exatas de b. Uma funcao g(n) definida sobre potenciasexatas de b por

g(n) =logb(n−1)∑

j=0

aj · f(n/bj)

1. Se f(n) = O(nlogb a−ε) para algum ε > 0 ∈ R+, entao T (n) = Θ(nlogb a)

2. Se f(n) = Θ(nlogb a), entao T (n) = Θ(nlogb a · lgn)

3. Se a·f(n/b) ≤ c·f(n) para c < 1 e para todo n ≥ b, entao g(n) = Θ(f(n))

Prova do Teorema MasterLema 4.4: Sejam a ≥ 1 e b > 1 constantes, e seja f(n) uma funcao naonegativa definida sobre potencias exatas de b. Defina T (n) sobre potenciasexatas de b pela recorrencia

T (n) = Θ(1) se n = 1T (n) = aT (n

b ) + f(n) se n = bi

onde i e um inteiro positivo. Entao T (n) pode ser limitado assintoticamentepara potencias exatas de b como a seguir:

133

Page 136: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

Prova do Metodo Mestre

1. Se f(n) = O(nlogb a−ε) para algum ε > 0 ∈ R+, entao T (n) = Θ(nlogb a)

2. Se f(n) = Θ(nlogb a), entao T (n) = Θ(nlogb a · lgn)

3. Se f(n) = Ω(nlogb a+ε) para algum ε > 0 ∈ R+, e se a · f(n/b) ≤ c · f(n)para c < 1 e para todo n suficientemente grande, entao T (n) = Θ(f(n))

6.3. Topicos

O algoritmo de Strassen

No capıtulo 2.2.2 analisamos um algoritmo para multiplicar matrizes quadra-das com complexidade de O(n3) multiplicacoes, sendo n o tamanho (numerode linhas e colunas) das matrizes. Tambem mencionamos que existem al-goritmos mais eficientes. A ideia do algoritmo de Strassen e: subdivide osmatrizes num produto A× B = C em quatro sub-matrizes com o metade docomprimento (e, portanto, um quarto de elementos):(

A11 A12

A21 A22

)×(

B11 B12

B21 B22

)=(

C11 C12

C21 C22.

)

Com essa subdivisao, o produto AB obtem-se pelas equacoes

C11 = A11B11 + A12B21

C12 = A11B12 + A12B22

C21 = A21B11 + A22B21

C22 = A21B12 + A22B22

e precisa-se de oito multiplicacoes de matrizes de tamanho n/2 ao inves deuma multiplicacao de matrizes de tamanho n. A recorrencia correspondente(somente considerando multiplicacoes)

T (n) = 8T (n/2) + O(1)

infelizmente tem solucao T (n) = O(n3) e portanto nao melhora o algoritmo

134

Page 137: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6.4. Exercıcios

simples. Strassen inventou as equacoes

M1 = (A11 + A22)(B11 + B22)M2 = (A21 + A22)B11

M3 = A11(B12 −B22)M4 = A22(B21 −B11)M5 = (A11 + A12)B22

M6 = (A21 −A11)(B11 + B12)M7 = (A12 −A22(B21 + B22)C11 = M1 + M4 −M5 + M7

C12 = M3 + M5

C21 = M2 + M4

C22 = M1 −M2 + M3 + M6

(cuja verificacao e simples). Essas equacoes contem somente sete multi-plicacoes de matrizes de tamanho n/2, que leva a recorrencia

T (n) = 7T (n/2) + O(1)

para o numero de multiplicacoes, cuja solucao e T (n) = O(nlog2 7) = O(n2.81).

6.4. Exercıcios

(Solucoes a partir da pagina 228.)

Exercıcio 6.1Resolva os seguintes recorrencias

1. T (n) = 9T (n/3) + n

2. T (n) = T (2n/3) + 1

3. T (n) = 3T (n/4) + n log n

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

5. T (n) = 4T (n/2) + n2 lg n

6. T (n) = T (n− 1) + log n

7. T (n) = 2T (n/2) + nlog n

135

Page 138: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

6. Divisao e conquista

8. T (n) = 3T (n/2) + n log n

Exercıcio 6.2Aplique o teorema mestre nas seguintes recorrencias:

1. T (n) = 9T (n/3) + n

2. T (n) = T (2n/3) + 1

3. T (n) = 3T (n/4) + n log n

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

Exercıcio 6.3Descreva o funcionamento dos problemas abaixo, extraia as recorrencias dosalgoritmos, analise a complexidade pelos tres metodos vistos em aula.

1. Produto de numero binarios (Exemplo 5.3.8 da Toscani&Veloso).

2. Algoritmo de Strassen para multiplicacao de matrizes (Cormen 28.2 ecapıtulo 6.3).

3. Encontrar o k-esimo elemento de uma lista nao ordenada (Cormen 9.3).

136

Page 139: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

Algoritmos

• Supondo um computador de 4.8GHz (4.8 bilhoes de instrucoes por s) euma instancia de tamanho n = 50 de um problema qualquer.

• Suponha que o problema pode ser resolvido por tres algoritmos com ascomplexidades n2, 2n e 3n.

1. Para complexidade Alg1 = O(n2)⇐⇒ 0, 0000025 segundos

2. Para complexidade Alg2 = O(2n) ≈ 13 dias

3. Para complexidade Alg2 = O(3n) ≈ 23080600 seculos!

Backtracking

• Algoritmo de forca bruta “refinado”.

• Explora sistematicamente todas possıveis configuracoes do espaco debusca.

• Assume que uma solucao e representada por vetores (v1, v2, v3, ..., vn)de elementos.

• Percorre na forma de busca em profundidade o domınio dos vetores, ateque as solucoes otimas sejam encontradas.

Backtracking

• A exploracao do espaco de solucoes pode ser representada por umaarvore de busca em profundidade.

• A arvore raramente e armazenada em memoria, mas apenas um caminhocom comprimento igual a altura da arvore.

137

Page 140: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

O problema das n-rainhas

Problema das n-rainhas

Instancia Um tablado de xadrez de dimensao n*n, e n rainhas.

Solucao Todas as formas de posicionar as n rainhas no tablado sem queduas rainhas estejam na mesma coluna, linha ou diagonal.

O problema das n-rainhas (simplificado: sem restricao da diagonal)

138

Page 141: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

O que representam as folhas da arvore de busca para este problema?

O problema das n-rainhas

• A melhor solucao conhecida para este problema e via Backtracking.

• Existem nn formas de posicionar n rainhas no tablado

• Restringindo uma rainha por coluna problema passa de nn para n!

• Pode-se facilmente verificar que n! ≤ nn

• Pela aproximacao de Stirling

n! ≈√

2πn(n

e

)n

(1 + O(1/n)) (7.1)

O problema das n-rainhas

139

Page 142: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

Se considerarmos tambem a restricao de diagonal podemos reduzir ainda mais

o espaco de busca (neste caso, nenhuma solucao e factıvel)

Backtracking

• Testa solucoes sistematicamente ate que a solucao esperada seja encon-trada

• Durante a busca, se a insercao de um novo elemento “nao funciona”,o algoritmo retorna para a alternativa anterior (backtracks) e tenta umnovo ramo

• Quando nao ha mais elementos para testar, a busca termina

• E apresentado como um algoritmo recursivo

• O algoritmo mantem somente uma solucao por vez

Backtracking

• Durante o processo de busca, alguns ramos podem ser evitados de serexplorados

1. O ramo pode ser infactıvel de acordo com restricoes do problema

2. Se garantidamente o ramo nao vai gerar uma solucao otima

O problema do caixeiro viajanteEncontrar uma rota de menor distancia tal que, partindo de uma cidade inicial,visita todas as outras cidades uma unica vez, retornando a cidade de partidaao final.

140

Page 143: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Problema do Caixeiro Viajante

Instancia Um grafo G=(V,E) com pesos p (distancias) atribuıdos aoslinks. V = [1, n] sem perda de generalidade.

Solucao Uma rota que visita todos vertices exatamento uma vez, i.e. umapermutacao de [1, n].

Objetivo Minimizar o custo da rota∑

1≤i<n pi,i+1 + pn,1.

O problema do caixeiro viajante

O problema do caixeiro viajante

• Para cada chamada recursiva existem diversos vertices que podem serselecionados

• Vertices ainda nao selecionados sao os candidatos possıveis

• A busca exaustiva e gerada caso nenhuma restricao for imposta

• Todas as permutacoes de cidades geram as solucoes factıveis (Pn = n(n−1)(n− 2)...1 = n!)

• Este problema tem solucao n2 ∗ 2n usando Programacao Dinamica

• Mas para resolver este problema em PD e necessario muita memoria!

141

Page 144: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

O problema do caixeiro viajante

• Alguma ideia de como diminuir ainda mais o espaco de busca?

Vantagens x Desvantagens e Caracterısticas MarcantesVantagens

• Facil implementacao

• Linguagens da area de programacao logica (prolog, ops5) trazem meca-nismos embutidos para a implementacao de backtracking

Desvantagens

• Tem natureza combinatoria. A busca exaustiva pode ser evitada com oteste de restricoes, mas o resultado final sempre e combinatorio

Caracterıstica Marcante

• Backtracking = “retornar pelo caminho”: constroem o conjunto desolucoes ao retornarem das chamadas recursivas.

142

Page 145: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Problema de Enumeracao de conjuntos

Enumeracao de conjuntos

Instancia Um conjunto de n itens S=a1, a2, a3, ...an.

Solucao Enumeracao de todos os subconjuntos de S.

• A enumeracao de todos os conjuntos gera uma solucao de custo expo-nencial 2n.

Problema da Mochila

Problema da Mochila

Instancia Um conjunto de n itens a1, a2, ...an e valores de importanciavi e peso wi referentes a cada elemento i do conjunto; um valor Kreferente ao limite de peso da mochila.

Solucao Quais elementos selecionar de forma a maximizar o valor totalde “importancia” dos objetos da mochila e satisfazendo o limite depeso da mochila?

• O problema da Mochila fracionario e polinomial

• O problema da Mochila 0/1 e NP-Completo

– A enumeracao de todos os conjuntos gera uma solucao de custoexponencial 2n

– Solucao via PD possui complexidade de tempo O(Kn) (pseudo-polinomial) e de espaco O(K)

Problema de coloracao em grafos

Problema de Coloracao em Grafos

Instancia Um grafo G=(V,E) e um conjunto infinito de cores.

143

Page 146: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

Solucao Uma coloracao do grafo, i.e. uma atribuicao c : V → C de corestal que vertices vizinhos nao tem a mesma cor: c(u) 6= c(v) para(u, v) ∈ E.

Objetivo Minimizar o numero de cores |C|.

• Coloracao de grafos de intervalo e um problema polinomial.

• Para um grafo qualquer este problema e NP-completo.

• Dois numeros sao interessantes nesse contexto:

– O numero de clique ω(G): O tamanho maximo de uma clique quese encontra como sub-grafo de G.

– O numero cromatico χ(G): O numero mınimo de cores necessariaspara colorir G.

• Obviamente: χ(V ) ≥ ω(G)

• Um grafo G e perfeito, se χ(H) = ω(H) para todos sub-grafos H.

• Verificar se o grafo permite uma 2-coloracao e polinomial (grafo bipar-tido).

• Um grafo k-partido e um grafo cujos vertices podem ser particionadosem k conjuntos disjuntos, nos quais nao ha arestas entre vertices de ummesmo conjunto. Um grafo 2-partido e o mesmo que grafo bipartido.

Coloracao de Grafos

• A coloracao de mapas e uma abstracao do problema de colorir vertices.

• Projete um algoritmo de backtracking para colorir um grafo planar(mapa).

• Um grafo planar e aquele que pode ser representado em um plano semqualquer interseccao entre arestas.

• Algoritmo O(nn), supondo o caso em que cada area necessite uma cordiferente

144

Page 147: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

• Teorema de Kuratowski: um grafo e planar se e somente se nao possuirminor K5 ou K3,3.

• Teorema das Quatro Cores: Todo grafo planar pode ser colorido comate quatro cores (1976, Kenneth Appel e Wolfgang Haken, University ofIllinois)

• Qual o tamanho maximo de um clique de um grafo planar?

• Algoritmo O(4n), supondo todas combinacoes de area com quatro cores.

• Existem 3n−1 solucoes possıveis (algoritmo O(3n)) supondo que duasareas vizinhas nunca tenham a mesma cor.

De quantas cores precisamos?

a

b

c

d

e

f

De quantas cores precisamos?

a

b

c

d

e

fb

f

c

d

ea

Precisamosde 4 cores!

Backtracking

bt-coloring

145

Page 148: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

Entrada Grafo nao direcionado G=(V,E)

Saıda Designacao de cores para cada vertice, sem que haja vertices vizi-nhos com a mesma cor e minimizando o numero de cores utilizadas

1 boolean bt c o l o r i n g ( i n t areaID , i n t cor ) 2 i f (areaID > n) return true3 i f (corOK(areaID , cor )) 4 mapCor[ areaID ] = cor5 for ( int cor = 1; cor <= 4; cor++) 6 i f (bt coloring (areaID + 1 , cor ))7 return true ;8 end for9 return f a l s e ;

10

Backtracking

corOK (areaID, cor)

Entrada Grafo G=(V,E) e duas cores.

Saıda true se a um no vizinho de areaID foi designada cor e false casocontrario.

1 boolean corOK( in t areaID , i n t cor ) 2 for ( int i=0; i<i |map[ areaID ] | ; i++) 3 ithAdj = map[ areaID ] [ i ] ;4 i f (mapCor[ ithAdj ] = cor)5 return fa l se ;6 7 8 return ( t rue )9

De quantas cores precisamos?

146

Page 149: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

a

b

c

d

e

De quantas cores precisamos?

a

b

c

d

e

a

eb

d

c

Precisamosde 3 cores!

Coloracao de Grafos

• Existe um algoritmo O(n2) para colorir um grafo com 4 cores (1997,Neil Robertson, Daniel P. Sanders, Paul Seymour).

• Mas talvez sejam necessarias menos que 4 cores para colorir um grafo!

• Decidir se para colorir um grafo planar sao necessarias 3 ou 4 cores eum problema NP-completo.

147

Page 150: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

De quantas cores precisamos?

a

b

c

d

e

Roteamento de Veıculos

Roteamento de Veıculos

Instancia Um grafo G=(V,A), um deposito v0, frota de veıculos com ca-pacidade Q (finita ou infinita), demanda qi > 0 de cada no (q0 = 0,distancia di > 0 associada a cada aresta

Solucao Rotas dos veıculos.

Objetivo Minimizar a distancia total.

• Cada rota comeca e termina no deposito.

• Cada cidade V \ v0 e visitada uma unica vez e por somente um veıculo(que atende sua demanda total).

• A demanda total de qualquer rota nao deve superar a capacidade docaminhao.

Roteamento de Veıculos

• Mais de um deposito

• veıculos com capacidades diferentes

• Entrega com janela de tempo (perıodo em que a entrega pode ser reali-zada

• Periodicidade de entrega (entrega com restricoes de data)

148

Page 151: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

• Entrega em partes (uma entrega pode ser realizada por partes)

• Entrega com recebimento: o veıculo entrega e recebe carga na mesmaviagem

• Entrega com recebimento posterior: o veıculo recebe carga apos todasentregas

• ...

Backtracking versus Branch & Bound

• Backtracking: enumera todas as possıveis solucoes com exploracao debusca em profundidade.

– Exemplo do Problema da Mochila: enumerar os 2n subconjuntos eretornar aquele com melhor resultado.

• Branch&Bound: usa a estrategia de backtracking

– usa limitantes inferior (relaxacoes) e superior (heurısticas e propri-edades) para efetuar cortes

– explora a arvore da forma que convier

– aplicado apenas a problemas de otimizacao.

Metodos Exatos

• Problemas de Otimizacao Combinatoria: visam minimizar ou maximizarum objetivo num conjunto finito de solucoes.

• Enumeracao: Backtracking e Branch&Bound.

• Uso de cortes do espaco de busca: Planos de Corte e Branch&Cut.

• Geracao de Colunas e Branch&Price.

Metodos nao exatos

• Algoritmos de aproximacao: algoritmos com garantia de aproximacaoS = αS∗.

• Heurısticas: algoritmos aproximados sem garantia de qualidade de solucao.

– Ex: algoritmos gulosos nao otimos, busca locais, etc.

149

Page 152: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

7. Backtracking

• Metaheurısticas: heurısticas guiadas por heurısticas (meta=alem + heu-riskein = encontrar).

– Ex: algoritmos geneticos, busca tabu, GRASP (greedy randomizedadaptive search procedure), simulating de annealing, etc.

150

Page 153: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

8.1. Introducao

Vertex cover

Considere

Cobertura por vertices (ingl. vertex cover)

Instancia Grafo nao-direcionado G = (V,E).

Solucao Uma cobertura C ⊆ V , i.e. ∀e ∈ E : e ∩ C 6= ∅.

Objetivo Minimiza |C|.

A versao de decisao de Cobertura por vertices e NP-completo.

O que fazer?

151

Page 154: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

1

2

3

4

5

6

7

8

9

1 0

1 1

1 2

1 3

1 4

1 5

1 6

1 7

1 8

1 9

2 0 2 1

2 2

2 4

2 3

2 5

Simplificando o problema

• Vertice de grau 1: Usa o vizinho.

• Vertice de grau 2 num triangulo: Usa os dois vizinhos.

Reducao de cobertura por vertices

Entrada Grafo nao-direcionado G = (V,E).

152

Page 155: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.1. Introducao

Saıda Um conjunto C ⊆ V e um grafo G′, tal que cada cobertura devertices contem C, e a uniao de C com a cobertura mınima de G′ euma cobertura mınima de G.

1 Reduz (G) :=2 while ( alguma regra em baixo se ap l i c a ) do3 Regra 1 :4 i f ∃u ∈ V : deg(u) = 1 then5 s e j a u, v ∈ E6 C := C ∪ v7 G := G− u, v8 end i f9 Regra 2 :

10 i f ∃u ∈ V : deg(u) = 2 then11 s e j a u, v, u, w ∈ E12 i f v, w ∈ E then13 C := C ∪ v, w14 G := G− u, v, w15 end i f16 end while17 return (C,G)

Arvore de busca

Arvore de busca

Entrada Grafo nao-direcionado G = (V,E).

Saıda Cobertura por vertices S ⊆ V mınima.

1 minVertexCover (G):=2 i f E = ∅ return ∅3 e s c o l h e u, v ∈ E4 C1 := minVertexCover(G− u) ∪ u5 C2 := minVertexCover(G− v) ∪ v6 i f ( |C1| < |C2|) then7 return C1

8 else

153

Page 156: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

9 return C2

10 end i f

Solucao otima?

1

2

3

4

5

6

7

8

9

1 0

1 1

1 2

1 3

1 4

1 5

1 6

1 7

1 8

1 9

2 0 2 1

2 2

2 4

2 3

2 5

Problemas de otimizacao

154

Page 157: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.1. Introducao

Definicao 8.1Um problema de otimizacao e uma relacao binaria P ⊆ I × S com instanciasx ∈ I e solucoes y ∈ S, tal que (x, y) ∈ P e com

• uma funcao de otimizacao ϕ : P → N (ou Q).

• um objetivo: Encontrar mınimo ou maximo OPT(x) = optφ(x, y)|(x, y) ∈P.

Tipo de problemas

• Construcao: Dado x, encontra solucao otima y e o valor ϕ∗(x).

• Avaliacao: Dado x, encontra valor otimo OPT(x).

• Decisao: Dado x, k ∈ N, decide se OPT(x) ≥ k (maximizacao) ouOPT(x) ≤ k (minimizacao).

ConvencaoEscrevemos um problema de otimizacao na forma

Nome

Instancia x

Solucao y

Objetivo Minimiza ou maximiza φ(x, y).

Classes de complexidade

• PO: Problemas de otimizacao com algoritmo polinomial.

• NPO: Problemas de otimizacao tal que

1. Instancias reconhecıveis em tempo polinomial.

2. A relacao P e polinomialmente limita.

3. Para y arbitrario, polinomialmente limitado: (x, y) ∈ P decidıvelem tempo polinomial.

4. ϕ e computavel em tempo polinomial.

155

Page 158: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

• NPO contem todos problemas de otimizacao, que satisfazem criteriosmınimos de tratabilidade.

Lembranca (veja definicao 11.1): P e polinomialmente limitada, se para solucoes(x, y) ∈ P temos |y| ≤ p(|x|), para um polinomio p.

Motivacao

• Para varios problemas nao conhecemos um algoritmo eficiente.

• No caso dos problemas NP-completos: solucao eficiente e pouco provavel.

• O quer fazer?

• Ideia: Para problemas da otimizacao, nao busca o otimo.

• Uma solucao “quase” otimo tambem ajuda.

O que e “quase”? Aproximacao absoluta

• A solucao encontrada difere da solucao otima ao maximo um valor cons-tante.

• Erro absoluto:D(x, y) = |OPT(x)− ϕ(x, y)|

• Aproximacao absoluta: Algoritmo garante um y tal que D(x, y) ≤ k.

• Exemplo: Coloracao de grafos.

• Contra-exemplo: Knapsack.

O que e “quase”? Aproximacao relativa

• A solucao encontrada difere da solucao otima ao maximo um fator cons-tante.

• Erro relativo:

E(x, y) = D(x, y)/ maxOPT(x), ϕ(x, y).

• Algoritmo ε-aproximativo (ε ∈ [0, 1]): Fornece solucao y tal que E(x, y) ≤ε para todo x.

• Solucoes com ε ≈ 0 sao otimas.

• Solucoes com ε ≈ 1 sao pessimas.

156

Page 159: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.1. Introducao

Aproximacao relativa: Taxa de aproximacao

• Definicao alternativa

• Taxa de aproximacao R(x, y) = 1/(1− E(x, y)) ≥ 1.

• Com taxa r, o algoritmo e r-aproximativo.

• (Nao tem perigo de confusao com o erro relativo, porque r ∈ [1,∞].)

Aproximacao relativa: Exemplos

• Exemplo: Knapsack, Caixeiro viajante metrico.

• Contra-exemplo: Caixeiro viajante.

• Classe correspondente APX: r-aproximativo em tempo polinomial.

Aproximacao relativa

Exemplo: Cobertura por vertices gulosa

Cobertura por vertices

Entrada Grafo nao-direcionado G = (V,E).

Saıda Cobertura por vertices C ⊆ V .

1 VC GV(G) :=2 (C, G) := Reduz (G)3 i f V = ∅ then4 return C5 else6 e s c o l h e v ∈ V : deg(v) = ∆(G) grau maximo 7 return C ∪ v ∪VC-GV(G− v)8 end i f

157

Page 160: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

Proposicao 8.1O algoritmo VC-GV e uma O(log |V |)-aproximacao.Prova. Seja Gi o grafo depois da iteracao i e C∗ uma cobertura otima (|C∗| =OPT(G)).A cobertura otima C∗ e uma cobertura para Gi tambem. Logo, a soma dosgraus dos vertices em C∗ (contando somente arestas em Gi!) ultrapassa onumero de arestas em Gi ∑

v∈C∗

δ(v) ≥ ||Gi||

e o grau medio satisfaz

δ(Gi) ≥||Gi|||C∗|

=||Gi||

OPT(G).

Como o grau maximo e maior que o grau medio temos tambem

∆(Gi) ≥||Gi||

OPT(G).

Com isso podemos estimar∑0≤i<OPT

∆(Gi) ≥∑

0≤i<OPT

||Gi|||OPT(G)|

≥∑

0≤i<OPT

||GOPT|||OPT(G)|

= ||GOPT|| = ||G|| −∑

0≤i<OPT

∆(Gi)

ou ∑0≤i<OPT

∆(Gi) ≥ ||G||/2

i.e. a metade das arestas foi removido em OPT iteracoes. Essa estimativacontinua a ser valido, logo depois

OPT dlg ||G||e ≤ OPT d2 lg |G|e = O(OPT lg|G|)

iteracoes nao tem mais arestas. Como em cada iteracao foi escolhido umvertice, a taxa de aproximacao e lg |G|.

Exemplo: Buscar uma Cobertura por vertices

158

Page 161: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.1. Introducao

Cobertura por vertices

Entrada Grafo nao-direcionado G = (V,E).

Saıda Cobertura por vertices C ⊆ V .

1 VC B(G) :=2 (C, G) := Reduz (G)3 i f V = ∅ then4 return C5 else6 e s c o l h e v ∈ V : deg(v) = ∆(G) grau maximo 7 C1 := C ∪ v ∪VC-B(G− v)8 C2 := C ∪N(v) ∪VC-B(G− v −N(v))9 i f |C1| < |C2| then

10 return C1

11 else12 return C2

13 end i f14 end i f

Aproximacao: Motivacao

• Queremos uma aproximacao

• Quais solucoes sao aproximacoes boas?

• Problemas:

– Tempo polinomial desejada

– Aproximacao desejada (“heurıstica com garantia”)

– Frequentemente: a analise e o problema. Intuicao:

– Simples verificar se um conjunto e uma cobertura.

– Difıcil verificar a minimalidade.

Exemplo: Outra abordagem

Cobertura por vertices

159

Page 162: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

Entrada Grafo nao-direcionado G = (V,E).

Saıda Cobertura por vertices C ⊆ V .

1 VC GE(G) :=2 (C, G) := Reduz (G)3 i f E = ∅ then4 return C5 else6 e s c o l h e e = u, v ∈ E7 return C ∪ u, v ∪VC-GE(G− u, v)8 end i f

Proposicao 8.2Algoritmo VC-GE e uma 2-aproximacao para VC.

Prova. Cada cobertura contem ao menos um dos dois vertices escolhidos, i.e.

|C| ≥ φVC-GE(G)/2⇒ 2OPT(G) ≥ φVC-GE(G)

Tecnicas de aproximacao

• Aproximacoes gulosas

• Randomizacao

• Busca local

• Programacao linear

• Programacao dinamica

• Algoritmos sequenciais (“online”), p.ex. para particionamento.

8.2. Aproximacoes com randomizacao

Randomizacao

• Ideia: Permite escolhas randomicas (“joga uma moeda”)

• Objetivo: Algoritmos que decidem correta com probabilidade alta.

160

Page 163: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.2. Aproximacoes com randomizacao

• Objetivo: Aproximacoes com valor esperado garantido.

• Minimizacao: E[ϕA(x)] ≤ 2OPT(x)

• Maximizacao: 2E[ϕA(x)] ≥ OPT(x)

Randomizacao: Exemplo

Satisfatibilidade maxima, Maximum SAT

Instancia Formula ϕ ∈ L(V ), ϕ = C1 ∧ C2 ∧ · · · ∧ Cn em FNC.

Solucao Uma atribuicao de valores de verdade a : V → B.

Objetivo Maximiza o numero de clausulas satisfeitas

|Ci | [[Ci]]a = v| .

Nossa solucao

1 SAT−R(ϕ) :=2 s e j a ϕ = ϕ(v1, . . . , vk)3 for a l l i ∈ [1, k] do4 e s c o l h e vi = v com probab i l i dade 1/25 end for

Aproximacao?

• Surpresa: Algoritmo e 2-aproximacao.

Prova. Seja X a variavel aleatoria que denota o numero de clausulas satis-feitas. Afirmacao: E[X] ≥ (1− 2−l)n com l o numero mınimo de literais porclausula. Portanto, com l ≥ 1, temos E[X] ≥ n/2.Prova da afirmacao: P [[[Ci]] = f ] ≤ 2−l e logo P [[[Ci]] = v] ≥ (1− 2−l) e

E[X] =∑

1≤i≤k

E[[[Ci]] = v] =∑

1≤i≤k

P [[[Ci]] = v] = (1− 2−l)n.

161

Page 164: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

Outro exemploCobertura por vertices guloso e randomizado.

1 VC−RG(G) :=2 s e j a w :=

∑v∈V deg(v)

3 C := ∅4 while E 6= ∅ do5 e s c o l h e v ∈ V com probab i l i dade deg(v)/w6 C := C ∪ v7 G := G− v8 end while9 return C ∪ V

Resultado: E[φVC-RG(x)] ≤ 2OPT(x).

8.3. Aproximacoes gulosas

Problema de mochila (Knapsack)

Knapsack

Instancia Itens X = [1, n] com valores vi ∈ N e tamanhos ti ∈ N , parai ∈ X, um limite M , tal que ti ≤M (todo item cabe na mochila).

Solucao Uma selecao S ⊆ X tal que∑

i∈S ti ≤M .

Objetivo Maximizar o valor total∑

i∈S vi.

Observacao: Knapsack e NP-completo.

Como aproximar?

• Ideia: Ordene por vi/ti (“valor medio”) em ordem decrescente e encheo mochila o mais possıvel nessa ordem.

Abordagem

1 K−G(vi ,ti ) :=2 ordene os i t e n s t a l que vi/ti ≥ vj/tj , ∀i < j .3 for i ∈ X do4 i f ti < M then

162

Page 165: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.3. Aproximacoes gulosas

5 S := S ∪ i6 M := M − ti7 end i f8 end for9 return S

Aproximacao boa?

• Considere

v1 = 1, . . . , vn−1 = 1, vn = M − 1t1 = 1, . . . , tn−1 = 1, tn = M = kn k ∈ N arbitrario

• Entao:

v1/t1 = 1, . . . , vn−1/tn−1 = 1, vn/tn = (M − 1)/M < 1

• K-G acha uma solucao com valor ϕ(x) = n−1, mas o otimo e OPT(x) =M − 1.

• Taxa de aproximacao:

OPT(x)/ϕ(x) =M − 1n− 1

=kn− 1n− 1

≥ kn− k

n− 1= k

• K-G nao possui taxa de aproximacao fixa!

• Problema: Nao escolhemos o item com o maior valor.

Tentativa 2: Modificacao

1 K−G’ ( vi ,ti ) :=2 S1 := K−G(vi ,ti )3 v1 :=

∑i∈S1

vi

4 S2 := argmaxi vi5 v2 :=

∑i∈S2

vi

6 i f v1 > v2 then7 return S1

8 else9 return S2

10 end i f

163

Page 166: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

Aproximacao boa?

• O algoritmo melhorou?

• Surpresa

Proposicao 8.3K-G’ e uma 2-aproximacao, i.e. OPT(x) < 2ϕK-G′(x).

Prova. Seja j o primeiro item que K-G nao coloca na mochila. Nesse pontotemos valor e tamanho

vj =∑

1≤i<j

vi ≤ ϕK-G(x)

aj =∑

1≤i<j

ai ≤M

Afirmacao: OPT(x) < vj + vj . Nesse caso

1. Seja vj ≤ vj .OPT(x) < 2vj ≤ 2ϕK-G(x) ≤ 2ϕK-G′

2. Seja vj > vj

OPT(x) ≤ 2vj ≤ 2vmax ≤ 2ϕK-G′

Prova da afirmacao:

OPT(x) ≤ vj + (M − aj)vj

aj︸ ︷︷ ︸densidade mais alto no resto

< vj + vj

porque aj + aj > M ⇐⇒M − aj < aj aj nao cabe mais

Problemas de particionamento

• Bin packing (BP): “Particionamento em baldes” (PB).

Bin packing

Instancia Sequencia de itens v1, . . . , vn, vi ∈]0, 1], vi ∈ Q+

164

Page 167: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.3. Aproximacoes gulosas

Solucao Particao⋃

1≤i≤k Pi = [1, n] tal que∑

j∈Pi vj ≤ 1 para todosi ∈ [1, n].

Objetivo Minimiza o numero de particoes (“baldes”) k.

Abordagem?

• Ideia simples: Proximo que cabe (PrC).

• Por exemplo: Itens 6, 7, 6, 2, 5, 10 com limite 12.

Aproximacao?

• Interessante: PrC e 2-aproximacao.

• Observacao: PrC e um algoritmo on-line.

165

Page 168: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

Prova. Seja B o numero de baldes usadas, V =∑

1≤i≤n vi. B ≤ 2 dV eporque duas baldes consecutivas contem uma soma > 1. Mas precismaos aomenos B ≥ dV e baldes, logo OPT(x) ≥ dV e. Portanto, ϕPrC(x) ≤ 2 dV e ≤2OPT(x).

Aproximacao melhor?

• Isso e o melhor possıvel!

• Considere os 4n itens

1/2, 1/(2n), 1/2, 1/(2n), . . . , 1/2, 1/(2n)︸ ︷︷ ︸2n vezes

• O que faz PrC? ϕPrC(x) = 2n: baldes com

• Otimo: n baldes com dois elementos de 1/2 + um com 2n elementos de1/(2n). OPT(x) = n = 1.

166

Page 169: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.3. Aproximacoes gulosas

• Portanto: Assintoticamente a taxa de aproximacao 2 e estrito.

Melhores estrategias

• Primeiro que cabe (PiC), on-line, com “estoque” na memoria

• Primeiro que cabe em ordem decrescente: PiCD, off-line.

• Taxa de aproximacao?

ϕPiC(x) ≤ d1.7OPT(x)eϕPiCD(x) ≤ 1.5OPT(x) + 1

Prova. Da segunda taxa de aproximacao: Considere a particao A∪B∪C∪D =v1, . . . , vn com

A = vi | vi > 2/3B = vi | 2/3 ≥ vi > 1/2C = vi | 1/2 ≥ vi > 1/3D = vi | 1/3 ≥ vi

PiCD primeiro vai abrir |A| baldes com os itens em A e depois |B| baldes comos itens em B. Temos que analisar o que acontece com os itens em C e D.

167

Page 170: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

Hipotese: Um balde contem somente itens do tipo D. Logo: Os outros baldestem espaco livre menos que 1/3. Portanto:

B ≤⌈

V

2/3

⌉≤ 3/2V + 1 ≤ 3/2OPT(x) + 1

Caso contrario (nenhum balde contem somente itens tipo D): PiCD acha asolucao otima.

• 1a observacao: O numero de baldes sem itens tipo D e o mesmo (elessao os ultimos distribuıdos em nao abrem novo balde). Logo e suficientemostrar

ϕPiCD(x \D) = OPT (x \D)

• 2a observacao: Os itens tipo A nao importam: Sem itens D, nenhumoutro item cabe junto. Logo:

ϕPiCD(x \D) = |A|+ ϕPiCD(x \ (A ∪D))

• 3a observacao: O melhor caso para os restantes itens sao pares de ele-mentos em B e C: Nesse situacao, PiCD acha a solucao otima.

Aproximacao melhor?

• Tese doutorado D. S. Johnson, 1973, 70 pag

ϕPiCD(x) ≤ 119

OPT(x) + 4

• Baker, 1985

ϕPiCD(x) ≤ 119

OPT(x) + 3

8.4. Esquemas de aproximacao

Novas consideracoes

• Frequentemente uma r-aproximacao nao e suficiente. r = 2: 100% deerro!

• Existem aproximacoes melhores? p.ex. para SAT? problema do mochila?

168

Page 171: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8.5. Exercıcios

• Desejavel: Esquema de aproximacao em tempo polinomial (EATP);polynomial time approximation scheme (PTAS)

– Para cada entrada e taxa de aproximacao r:

– Retorne r-aproximacao em tempo polinomial.

Um exemplo: Mochila maxima (Knapsack)

• Problema de mochila (veja pagina 106):

– n itens com valor vi, peso wi.

– Mochila de tamanho W .

– Escolher subconjunto de itens que cabe em W de maior peso total.

• Algoritmo MM-PD com programacao dinamica: tempo O(n∑

i vi).

• Desvantagem: Pseudo-polinomial.

8.5. Exercıcios

Exercıcio 8.1Um aluno propoe a seguinte heurıstica para Binpacking: Ordene os itens emordem crescente, coloca o item com peso maximo junto com quantas itens depeso mınimo que e possıvel, e depois continua com o segundo maior item, atetodos itens foram colocados em bins. Temos o algoritmo

1 ordene i t e n s em ordem c r e s c en t e2 m:=1; M:=n3 while (m<M) do4 abre novo balde , co l o ca vM , M := M − 15 while (vm cabe e m < M ) do6 co l o ca vm no balde atua l7 m := m + 18 end while9 end while

Qual a qualidade desse algoritmo? E um algoritmo de aproximacao? Casosim, qual a taxa de aproximacao dele? Caso nao porque?

Exercıcio 8.2Um aluno propoe o seguinte pre-processamento para o algoritmo SAT-R deaproximacao para MAX-SAT (pagina 161): Caso a instancia contem clausulas

169

Page 172: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

8. Algoritmos de aproximacao

com um unico literal, vamos escolher uma delas, definir uma atribuicao parcialque satisfaz-la, e eliminar a variavel correspondente. Repetindo esse procedi-mento, obtemos uma instancia cujas clausulas tem 2 ou mais literais. Assim,obtemos l ≥ 2 na analise do algoritmo, o podemos garantir que E[X] ≥ 3n/4,i.e. obtemos uma 4/3-aproximacao.Este analise e correto ou nao?

170

Page 173: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Parte III.

Teoria de complexidade

171

Page 174: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 175: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9. Do algoritmo ao problema

9.1. Introducao

Motivacao

• Analise e projeto: Foca em algoritmos.

• Teoria de complexidade: Foca em problemas.

• Qual a complexidade intrınsica de problemas?

• Classes de complexidade agrupam problemas.

• Interesse particular: Relacao entre as classes.

Abstracoes: Alfabetos, linguagens

• Seja Σ um alfabeto finito de sımbolos.

• Codificacao: Entradas e saıdas de um algoritmo sao palavras sobre oalfabeto ω ∈ Σ∗.

• Tipos de problemas:

– Problema construtivo: Funcao Σ∗ → Σ∗ Alternativa: relacao R ⊆Σ∗ × Σ∗.

– Problema de decisao: Funcao Σ∗ → S, N Equivalente: conjuntoL ⊆ Σ∗ (uma linguagem).

– Problema de otimizacao: Tratado como problema de decisao coma pergunta “Existe solucao ≥ k?” ou “Existe solucao ≤ k?”.

• Frequentemente: Alfabeto Σ = 0, 1 com codificacao adequada.

Definicao 9.1Uma linguagem e um conjunto de palavras sobre um alfabeto: L ⊆ Σ∗.

173

Page 176: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9. Do algoritmo ao problema

Modelo de computacao: Maquina de Turing

• Foco: Estudar as limitacoes da complexidade, nao osalgoritmos.

• Portanto: Modelo que facilite o estudo teorica, nao aimplementacao.

• Solucao: Maquina de Turing.

But I was completely convinced only by Tu-ring’s paper.(Godel em uma carta para Kreisel, em maiode 1968, falando sobre uma definicao da com-putacao.).

Alan MathisonTuring (*1912,+1954)

Computing is normally done by writing certain symbols on paper.”We may suppose this paper is divided into squares like a child’sarithmetic book. In elementary arithmetic the two-dimensionalcharacter of the paper is sometimes used. But such a use isalways avoidable, and I think that it will be agreed that the two-dimensional character of paper is no essential of computation. I as-sume then that the computation is carried out on one-dimensionalpaper, i.e. on a tape divided into squares. I shall also suppose thatthe number of symbols which may be printed is finite. If we were toallow an infinity of symbols, then there would be symbols differingto an arbitrarily small extent j . The effect of this restriction ofthe number of symbols is not very serious. It is always possible touse sequences of symbols in the place of single symbols. Thus anArabic numeral such as 17 or 999999999999999 is normally treatedas a single symbol. Similarly in any European language words aretreated as single symbols (Chinese, however, attempts to have anenumerable infinity of symbols). The differences from our point ofview between the single and compound symbols is that the com-pound symbols, if they are too lengthy, cannot be observed at oneglance. This is in accordance with experience. We cannot tell ata glance whether 9999999999999999 and 999999999999999 are thesame. [28].

Maquina de Turing

174

Page 177: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9.1. Introducao

Maquina de Turing (MT)

M = (Q,Σ,Γ, δ)

• Alfabeto de entrada Σ (sem branco )

• Conjunto de estados Q entre eles tres estados diferentes:

– Um estado inicial q0 ∈ Q, um que aceita qa ∈ Q e um que rejeitaqr ∈ Q.

• Alfabeto de fita Γ ⊇ Σ (inclusive ∈ Γ)

• Regras δ : Q× Γ→ Q× Γ× L,R, escritas da forma

q, a→ q′a′D

(com q, q′ ∈ Q, a, a′ ∈ Σ e D ∈ L,R).

Maquina de Turing: Operacao

• Inıcio da computacao:

– No estado inicial q0 com cabeca na posicao mais esquerda,

– com entrada w ∈ Σ∗ escrita na esquerda da fita, resto da fita embranco.

• Computacao: No estado q lendo um sımbolo a aplica uma regra qa →q′a′D (um L na primeira posicao nao tem efeito) ate

175

Page 178: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9. Do algoritmo ao problema

– nao encontrar uma regra: a computacao termina, ou

– entrar no estado qa: a computacao termina e aceita, ou

– entrar no estado qr: a computacao termina e rejeita.

– Outra possibilidade: a computacao nao termina.

Exemplo 9.1 (Decidir wwR)

Tabela da transicaoSeja Σ = 0, 1. Uma maquina de Turing que reconhece a linguagem wwR|w ∈Σ∗ e

Notacao grafica

176

Page 179: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9.1. Introducao

(convencoes e abreviacoes do Turing machine simulator; veja pagina da disci-plina). ♦

Maquinas nao-determinısticas

• Observe: Num estado q lendo sımbolo a temos exatamente uma regrada forma qa→ q′a′D.

• Portanto a maquina de Turing se chama determinıstica (MTD).

• Caso temos mais que uma regra que se aplica em cada estado q e sımboloa a maquina e nao-determinıstica (MTND).

• A funcao de transicao muda para

δ : Q× Γ→ P(Q× Γ× L,R)

Linguagem de uma MTD

• O conjunto de palavras que uma MTD M aceita e a linguagem reconhe-cida de M .

L(M) = w ∈ Σ∗ |M aceita w

• Uma linguagem tal que existe um MTD M que reconhece ela e Turing-reconhecıvel por M .

L Turing-reconhecıvel⇐⇒ ∃M : L = L(M)

• Observe que uma MTD nem sempre precisa parar. Se uma MTD Msempre para, ela decide a sua linguagem.

• Uma linguagem Turing-reconhecıvel por uma MTD M que sempre parae Turing-decidıvel.

L Turing-decidıvel⇐⇒ ∃M : L = L(M) e M sempre para

Linguagem de uma MTND

• Conjunto de linguagens Turing-reconhecıveis: linguagens recursivamenteenumeraveis ou computavelmente enumeraveis.

• Conjunto de linguagens Turing-decidıveis: linguagens recursivas ou com-putaveis.

177

Page 180: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9. Do algoritmo ao problema

• Para uma maquina nao-determinıstica temos que modificar a definicao:ela precisa somente um estado que aceita e

– ela reconhece a linguagem

L(M) = w ∈ Σ∗ | existe uma computacao tal que M aceita w

– ela decide uma linguagem se todas computacoes sempre param.

Maquina de Turing nao-determinıstica

• Resposta sim, se existe uma computacao que responde sim.

Robustez da definicao

• A definicao de uma MTD e robusto: as seguintes modificacoes tem podercomputacional equivalente:

1. Uma MT com k > 1 fitas,

2. uma MT com fita dupla infinita,

3. uma MT com alfabeto restrito Σ = 0, 1,

4. uma MTND e

5. uma MT com fita de dois ou mais dimensoes.

• O poder computacional tambem e equivalente com varios outros modelosde computacao (p.ex. calculo lambda, maquina RAM, automato celular):Tese de Church-Turing.

Prova. (Rascunho.)

178

Page 181: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9.1. Introducao

1. Seja aij o sımbolo na posicao j da fita i e li o ındice do ultima sımbolousado na fita i. A maquina com unica fita representa os k fitas da forma

#a11 . . . a1l1# . . .#ak1 . . . aklk .

Para representar as posicoes da cabecas, usamos sımbolos marcados comum ponto da forma a. A simulacao procede em tres passos: (i) Deter-minar os sımbolos em baixa das cabecas em um passo (ii) executar asoperacoes da k cabecas. Caso um cabeca ultrapassa a direita da repre-sentacao, a MTD estende ela, copiando todos sımbolos da direita maisuma para direita.

2. Seja ai o sımbolo na posicao i da fita, com i ∈ Z. A maquina com unicafita meio-infinito representa essa fita como

a0〈< a−1a1〉〈< a−2a2〉 . . . .

com sımbolos novos em Σ∪Σ2. Os estados desse maquina sao Q×T,B.Eles representam se a cabeca trabalho em cima ou em baixo, com regrasmodificadas adequadamente. Ela tambem tem regras para passar decima para baixo e vice versa.

3. Cada sımbolo e representado como sequencia de 0, 1 do comprimentow = dlog |Σ|e. Na simulacao, a MTD primeiro leia os w sımbolos atu-ais, determina e escreve a representacao do novo sımbolo e depois semovimenta w posicoes para esquerda ou direita.

4. Uma simulacao das configuracoes, listando todas as execucoes possıveissistematicamente.

Decibilidade versus complexidade

• Qual e o poder computacional?

• Surpreendentemente (?), varios problemas nao sao decidıveis.

• Exemplo: O “Entscheidungsproblem” de Hilbert, o problema de parada,etc.

• A equivalencia dos modelos significa que o modelo concreto nao importa?

• Sim para computabilidade, nao para complexidade!

179

Page 182: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

9. Do algoritmo ao problema

Exemplo 9.2 (Desvio: Maquina universal)Considere a maquina M = (u, d, a, b, a, b, , δ) com

δ = ua→ ubL, ub→ uaL, u → dbR, da→ u R, db→ daR, d → uaL.

Essa maquina e universal? Veja http://www.wolframscience.com/prizes/tm23.Obs: Aparentemente o problema foi resolvido em 24/10/2007. ♦

180

Page 183: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

10. Classes de complexidade

10.1. Definicoes basicas

Complexidade pessimista

• Recursos basicos: tempo e espaco.

• A complexidade de tempo (pessimista) e uma funcao

t : N→ N

tal que t(n) e o numero maximo de passos para entradas de tamanho n.

• A complexidade de espaco (pessimista) e uma funcao

s : N→ N

tal que s(n) e o numero maximo de posicoes usadas para entradas detamanho n.

• Uma MTND tem complexidades de tempo t(n) ou espaco s(n), se es-sas funcoes sao limites superiores para todas computacoes possıveis detamanho n.

Funcoes construtıveis

• Em que segue, nos vamos considerar somente funcoes t e s que saotempo-construtıveis e espaco-construtıveis.

• t(n) e tempo-construtıvel: existe uma MTD que tem a complexidade detempo t(n) e precisa t(n) passos para uma entrada.

• s(n) e espaco-construtıvel: existe uma MTD que tem a complexidade deespaco s(n) e precisa s(n) posicoes para uma entrada.

• Exemplos: nk, log n, 2n, n!, . . ..

181

Page 184: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

10. Classes de complexidade

Classes de complexidade fundamentais

• Uma classe de complexidade e um conjunto de linguagens.

• Classes fundamentais: Para T, S : N→ N e um problema X ⊆ Σ∗

– L ∈ DTIME[t(n)] se existe uma maquina Turing determinıstica talque aceita L com complexidade de tempo t(n).

– L ∈ NTIME[t(n)] se existe uma maquina Turing nao-determinısticaque aceita L com complexidade de tempo t(n).

– L ∈ DSPACE[s(n)] se existe uma maquina Turing determinısticaque aceita L com complexidade de espaco s(n).

– L ∈ NSPACE[s(n)] se existe uma maquina Turing nao-determinısticaque aceita L com complexidade de espaco s(n).

Hierarquia basica

• Observacao

DTIME[F (n)] ⊆ NTIME[F (n)] ⊆ DSPACE[F (n)] ⊆ NSPACE[F (n)]

• Definicoes conhecidas:

P =⋃k≥0

DTIME[nk]; NP =⋃k≥0

NTIME[nk]

• Definicoes similares para espaco:

PSPACE =⋃k≥0

DSPACE[nk]; NSPACE =⋃k≥0

NSPACE[nk]

• Com a observacao acima, temos

P ⊆ NP ⊆ DSPACE ⊆ NSPACE .

Prova. (Da observacao.) Como uma maquina nao-determinıstica e uma ex-tensao da uma maquina determinıstica, temos obviamente DTIME[F (n)] ⊆NTIME[F (n)] e DSPACE[F (n)] ⊆ NSPACE[F (n)]. A inclusao NTIME[F (n)] ⊆DSPACE[F (n)] segue, porque todas computacoes que precisam menos queF (n) passos, precisam menos que F (n) espaco tambem.

182

Page 185: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

10.2. Hierarquias basicas

Classes de complexidade

Zoologico de complexidade

10.2. Hierarquias basicas

Aceleracao

Teorema 10.1Podemos comprimir ou acelerar computacoes com um fator constante. Paratodos c > 0 no caso de espaco temos

L ∈ DSPACE[s(n)]⇒ L ∈ DSPACE[cs(n)]L ∈ NSPACE[s(n)]⇒ L ∈ NSPACE[cs(n)]

e no caso do tempo, para maquinas de Turing com k > 1 fitas e t(n) = ω(n)

L ∈ DTIME[s(n)]⇒ L ∈ DTIME[cs(n)]L ∈ NTIME[s(n)]⇒ L ∈ NTIME[cs(n)]

Prova. (Rascunho.) A ideia e construir uma MT M ′ que simula uma MT Mexecutando m passos em um passo. M ′ comeca de copiar a entrada para umaoutra fita, codificando cada m sımbolos em um sımbolo em tempo n+ dn/me.Depois a simulacao comeca. Em cada passo, M ′ leia os sımbolos na esquerdae direta e na posicao atual em tempo 4. Depois ela calcula os novos estadosno controle finito, e escreve os tres sımbolos novos em tempo 4. Logo, cada mpassos podem ser simulados em 8 passos em tempo

n + dn/me+ d8t(n)/me ≤ n + n/m + 8t(n)/m + 2 ≤ 3n + 8t(n)/n

que para cm ≥ 16 ⇔ 8/m ≤ c/2 e n suficientemente grande nao ultrapassact(n). O numero finito de palavras que nao satisfazem esse limite superior ereconhecido diretamente no controle finito.

Hierarquia de tempo (1)

• E possıvel que a decisao de todos problemas tem um limite superior (emtermos de tempo ou espaco)? Nao.

Teorema 10.2Para t(n) e s(n) total recursivo, existe um linguagem L tal que L 6∈ DTIME[t(n)]ou L 6∈ DSPACE[s(n)], respectivamente.

183

Page 186: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

10. Classes de complexidade

Prova. (Rascunho). Por diagonalizacao. As maquinas de Turing sao enu-meraveis: seja M1,M2, . . . uma enumeracao deles e seja x1, x2, . . . uma enu-meracao das palavras em Σ∗. Define

L = xi |Mi nao aceita xi em tempo t(|xi|).

Essa linguagem e decidıvel: Uma MT primeira computa t(n) (que e possıvelporque t(n) e recursivo e total.). Depois com entrade xi, ela determina i e amaquina Mi correspondente e simula Mi para t(n) passos. Se Mi aceita, elarejeita, senao ela aceita.Essa linguagem nao pertence a DTIME[t(n)]. Prova por contradicao: SejaL = L(Mi). Entao xi ∈ L? Caso sim, Mi nao aceita em tempo t(n), uma con-tradicao. Caso nao, Mi nao aceita em tempo t(n), uma contradicao tambem.

Hierarquia de tempo (2)Alem disso, as hierarquias de tempo sao “razoavelmente densos”:

Teorema 10.3 (Hartmanis,Stearns)Para f, g com g tempo-construtıvel e f log f = o(g) temos

DTIME(f) ( DTIME(g).

Para funcoes f, g, com g(n) ≥ log2 n espaco-construtıvel e f = o(g) temos

DSPACE(f) ( DSPACE(g).

Prova. (Rascunho.) Para provar o segundo parte (que e mais facil) temosque mostrar que existe uma linguagem L ⊆ Σ∗ tal que L ∈ DSPACE[g] masL 6∈ DSPACE[f ]. Vamos construir uma MT M sobre alfabeto de entrada Σ =0, 1 cuja linguagem tem essa caracterıstica. A ideia basica e diagonalizacao:com entrada w simula a maquina Mw com entrada w e garante de nuncareconhecer a mesma linguagem que Mw caso ela e limitada por f .Consideracoes:

1. Temos que garantir que M precisa nao mais que g(n) espaco. Portanto,M comeca de marcar g(|w|) espaco no comeco (isso e possıvel porque ge espaco-construtıvel). Caso a simulacao ultrapassa o espaco marcado,M rejeita.

2. Nos temos que garantir que M pode simular todas maquinas que temlimite de espaco f(n). Isso tem duas problemas (a) M tem um alfabetode fita fixo, mas a maquina simulada pode ter mais sımbolos de fita.

184

Page 187: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

10.2. Hierarquias basicas

Portanto, a simulacao precisa um fator c1 de espaco a mais. (b) Pordefinicao, para f ∈ o(g) e suficiente de ter f ≤ cg a partir de umn > n0. Logo para entrada |w| ≤ n0 o espaco g(n) pode ser insuficientepara simular qualquer maquina que precisa espaco f(n). Esses assuntospodem ser resolvidos usando uma enumeracao de MT (com alfabeto Σ)tal que cada maquina tem codificacoes de comprimento arbitrario (porexemplo permitindo 〈M〉10n).

3. Alem disso, temos que garantir que a simulacao para. Portanto Musa um contador com O(log n) espaco, e rejeita caso a simulacao ultra-passa c

f(n)2 passos; c2 depende das caracterısticas da maquina simulada

(numero de estados, etc.).

Com essas preparacoes, com entrada w, M construa Mw, verifica que Mw euma codificacao de uma MT e depois simula Mw com entrada w. M rejeitase Mw aceita e aceita se Mw rejeita. Nao tem maquina que, em espaco f(n)reconhece L(M). Senao, caso M ′ seria uma maquina desses, com entradaw = 〈M ′〉01n para n suficientemente grande M consegue de simular M ′ eportanto, se w ∈M ′ entao w 6∈M e se w 6∈M ′ entao w ∈M , uma contradicao.A ideia da prova do primeiro parte e essencialmente a mesma. A fator delog f surge, porque para simular um MT um dado numero de passos por umaoutra, e necessario contar o numero de passos ate f(n) em log f(n) bits. Comuma simulacao mais eficiente (que nao e conhecida) seria possıvel de obter umteorema mais forte.

Espaco polinomial

Teorema 10.4 (Savitch)Para cada funcao S(n) ≥ log2 n (espaco-construtıvel)

NSPACE[S(n)] ⊆ DSPACE[S(n)2]

• Corolario: DSPACE = NSPACE

• Nao-determinismo ajuda pouco para espaco!

WalterJ. Savitch(*1943)

Prova. (Rascunho.) Se X ∈ NSPACE[T (n)], o tempo e limitado por umcS(n). A construcao do Savitch procura deterministicamente uma transicao doestado inicial para um estado final com menos que cS(n) passos. A abordagem

185

Page 188: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

10. Classes de complexidade

e divisao e conquista: Para ver, se tem uma transicao A ⇒ B com menos de2i passos, tenta se tem um caminho A⇒ I e I ⇒ B, cada um com 2i−1 passospara todas configuracoes I com menos que S(n) lugares. A altura do arvorede procura e O(S(n)) e o espaco da cada nıvel tambem e O(S(n)), resultandoem O(S(n)2) para tudo.A funcao tem que ter S(n) ≥ log2 n, por que para a simulacao precisamostambem gravar a posicao de cabeca de entrada em cada nıvel, que precisalog2 n bits.

Espaco polinomial (2)

186

Page 189: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11. Teoria da NP-completude

11.1. Caracterizacoes e problemas em NP

A hierarquia de Chomsky classifica linguagens em termos de automatos egramaticas que aceitam ou produzem elas:

Linguagem Nome Tipo Automato GramaticaRegular REG 3 Automato finito (deter-

minıstico)Regular

Livre de contexto CFL 2 Automato de pilha (nao-determinıstico)

Livre de con-texto

Sensitiva ao con-texto

CSL 1 MT linearmente limitada(nao-determinıstico)

Sensitiva aocontexto

Recursivamenteenumeravel

RE 0 MT Sistema semi-Thue (sem res-tricao)

O seguinte teorema relaciona a hierarquia de Chomsky com as classes decomplexidade (sem prova, referencias em [5], [3, Th. 25.6] e [26, Th. 7.16]).

Teorema 11.1 (Complexidade das linguagens da hierarquia de Chomsky)

REG = DSPACE[O(1)] = DSPACE[o(log log n)]REG ⊆ DTIME[n]

CFL ⊆ DSPACE[n3]CSL = NSPACE[n]

Normalmente, nosso interesse sao solucoes, nao decisoes: Ao seguir vamosdefinir P e NP em termos de solucoes. As perguntas centrais como P 6= NPacabam de ter respostas equivalentes.

P e NP em termos de busca

• A computacao de uma solucao pode ser vista como funcao Σ∗ → Σ∗

• Exemplo: Problema SAT construtiva: Uma solucao e uma atribuicao.

• Definicao alternativa: Uma computacao e uma relacao R ⊆ Σ∗ × Σ∗.

• Vantagem: Permite mais que uma solucao para cada entrada.

187

Page 190: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11. Teoria da NP-completude

• Nosso interesse sao solucoes que podem ser “escritas” em tempo polino-mial:

Definicao 11.1Uma relacao binario R e polinomialmente limitada se

∃p ∈ poly : ∀(x, y) ∈ R : |y| ≤ p(|x|)

P e NP em termos de busca

• P e NP tem definicao como classes de problemas de decisao.

• A linguagem correspondente a uma relacao R e

LR = x|∃y : (x, y) ∈ R

• A classe P: Linguagens LR tal que existe uma MTD que, com entradax ∈ LR, em tempo polinomial, busque (x, y) ∈ R ou responda, que naotem.

• Essa definicao do P as vezes e chamado FP ou PF.

• A classe NP: Linguagens LR tal que existe MTD que, com entrada (x, y),decida se (x, y) ∈ R em tempo polinomial. y se chama certificado.

Exemplos de problemas em NP

CLIQUE = 〈G, k〉|Grafo nao-direcionado G com clique de tamanho kSAT = 〈φ〉|φ formula satisfatıvel da logica propositional em FNCTSP = 〈M, b〉|Matriz simetrica de distancias M que tem TSP-ciclo ≤ b

COMPOSITE = 〈n〉|n = m1m2 com m1,m2 > 1

11.2. Reducoes

Reducoes

188

Page 191: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11.2. Reducoes

Definicao 11.2 (Reducao em tempo polinomial)Uma (many-one) reducao entre duas linguagens L, L′ com alfabetos Σ e Σ′ eum funcao total f : Σ∗ → Σ′∗ tal que x ∈ L ⇐⇒ f(x) ∈ L′. Se f e com-putavel em tempo polinomial, se chama uma reducao em tempo polinomial ;escrevemos L ≤P L′.

Definicao 11.3 (Problemas difıceis e completos)Dado uma classe de problemas C e um tipo de reducao ≤, um problema L eC-≤-difıcil, se L′ ≤ L para todos L′ ∈ C. Um problema L que e C-≤-difıcil ecompleto, se L ∈ C.

• Motivo: Estudar a complexidade relativa de problemas; achar problemas“difıceis” para separar classes.

• Do interesse particular: A separacao de P e NP. Denotamos a classe deproblemas NP -completos NPC.

Caracterısticas de ≤P

Proposicao 11.1 (Fecho para baixo)Se A ≤P B e B ∈ P entao A ∈ P.

Proposicao 11.2 (Transitividade)≤P e transitivo, i.e. se A ≤P B e B ≤P C entao A ≤P C.

Prova. (Fecho para baixo.) Uma instancia w ∈ A pode ser reduzido emtempo polinomial para w′ ∈ B. Depois podemos simular B com entrada w′

em tempo polinomial. Como a composicao de polinomios e um polinomio,A ∈ P.(Transitividade.) Com o mesmo argumento podemos reduzir w ∈ A primeiropara w′ ∈ B e depois para w′′ ∈ C, tudo em tempo polinomial.

O problema de parada

• O problema da parada

HALT = 〈M,w〉|MT M para com entrada w

nao e decidıvel.

• Qual o caso com

189

Page 192: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11. Teoria da NP-completude

Parada limitada (ingl. bounded halt)

Instancia MT M , entrada w e um numero n (em codificacao unaria).

Questao M para em n passos?

Teorema 11.2

BHALT = 〈M,w, 1n〉|MT M para com entrada w em n passos

e NP-completo.

Prova. BHALT ∈ NP porque podemos verificar uma execucao em n passos emtempo polinomial. Observe que a codificacao de uma execucao em limitadapolinomialmente em termos da entrada 〈M,w, 1n〉 pela codificacao de n emunario. Logo e suficiente de mostrar que qualquer problema em NP pode serreduzido para BHALT.Para alguma linguagem L ∈ NP, seja M uma MTND com L = L(M) queaceita L em tempo nk. Podemos reduzir uma entrada w ∈ L em tempopolinomial para w′ = 〈M,w, 1nk〉, temos w ∈ L ⇔ w′ ∈ BHALT. LogoL ≤P BHALT.

Ladrilhar: Exemplo

190

Page 193: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11.2. Reducoes

Ladrilhar: Solucao

Ladrilhar: Exemplo

Ladrilhar: O problema

• Para um conjunto finito de cores C, o tipo de um ladrilho e uma funcao

t : N,W,S,E → C.

191

Page 194: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11. Teoria da NP-completude

Ladrilhamento

Instancia Tipos de ladrilhos t1, . . . , tk e um grade de tamanho n×n comcores nas bordas. (Cada ladrilho pode ser representado por quatrosımbolos para as cores; a grade consiste de n2 ladrilhos em branco e4n cores; uma instancia tem tamanho O(k + n2).

Questao Existe um ladrilhamento da grade tal que todas cores casam(sem rotar os ladrilhos)?

Teorema 11.3 (Levin)Ladrilhamento e NP-completo.

Prova. O problema e em NP, porque dado um conjunto de tipos de ladri-lhos e um ladrilhamento, podemos verificar as restricoes das cores em tempopolinomial.Vamos reduzir qualquer problema em L ∈ NP para Ladrilhamento. SejaL = L(M) para alguma MTND e seja k tal que M precisa tempo nk. Paraentrada w, vamos construir uma instancia de Ladrilhamento do tamanho(|w|k)2. Ideia: os cores dos cantos de sul e de norte vao codificar um sımboloda fita a informacao se a cabeca esta presente e o estado da maquina. Oscores dos cantos oeste e este vao codificar informacao adicional para mover acabeca. O canto sul da grade vao ser colorido conforme o estado inicial damaquina, o canto norte com o estado final e vamos projetor as ladrilhas de talforma que ladrilhar uma linha (de sul para o norte) e somente possıvel, se ascores no sul e norte representam configuracoes sucessores.Nos vamos usar as cores Q∪−×Γ na direcao norte/sul e Q×L,R∪−na direcao oeste/este. Para uma regra q, a→ q′, a′, L os ladrilhos tem a forma

(−, a′)

(q′, L) −(q, a)

e para q, a→ q′, a′, R(−, a′)

− (q′, R)(q, a)

Alem disso, tem ladrilhos

192

Page 195: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11.2. Reducoes

(q, a)

(q, R) −(−, a)

(q, a)

− (q, L)(−, a)

(−, a)

− −(−, a)

As cores no sul da grade representam a configuracao inicial

(q0, a1)(−, a2) · · · (−, an)(−, ) · · · (−, )

as cores no norte a configuracao final (supondo que a maquina limpa a fitadepois, que sempre e possıvel)

(qa,−)(−, ) · · · (−, )

e as cores dos lados oeste e este todos sao −. Pela construcao uma com-putacao da MT que aceita corresponde com um ladrilhamento e vice versa.A construcao do grade e das tipos de ladrilhos pode ser computado por umamaquina de Turing em tempo polinomial.

Resultado intermediario

• Primeiros problemas em NPC: Para uma separacao e “so” provar queLadrilhamento 6∈ P ou BHALT 6∈ P.

• Infelizmente: a prova e difıcil, mesmo que a maioria das pesquisadoresacredita P 6= NP.

• Outro valor: Para provar que um problema L ∈ NPC, e suficiente demostrar que, por exemplo

Ladrilhamento ≤P L.

Proposicao 11.3Se A ⊆ B e A e fechado para baixo em relacao a reducao ≤ e L e B-≤-completoentao

L ∈ A⇐⇒ A = B.

Exemplo: O problema SAT

SAT

Instancia Formula proposicional em forma normal conjuntivaΦ(x1, . . . , xn).

Questao Tem uma atribuicao a1, . . . , an ∈ B que satisfaz Φ?

193

Page 196: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11. Teoria da NP-completude

Teorema 11.4 (Cook)SAT e NP-completo.

Prova (1)

Objetivo: Provar Ladrilhamento ≤P SAT.

Seja

Nx,y,c variavel “o norte da posicao x, y tem cor c”S, W, E analogamente

Li,x,y := Nx,y,ti(N) ∧∧c∈C

c 6=ti(N)

¬Nx,y,c

∧Wx,y,ti(W ) ∧∧c∈C

c 6=ti(W )

¬Wx,y,c

∧ Sx,y,ti(S) ∧∧c∈C

c 6=ti(S)

¬Sx,y,c

∧ Ex,y,ti(E) ∧∧c∈C

c 6=ti(E)

¬Ex,y,c

Prova (2)

194

Page 197: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11.2. Reducoes

Sejam cx,y as cores na bordas. Seja φ a conjuncao de∧x∈[1,n]

∧y∈[1,n]

∨c∈[1,k]

Lc,x,y Toda posicao tem um ladrilho

∧x∈[1,n]

Sx,1,cx,1 ∧Nx,n,cx,n Cores corretas nas bordas N,S

∧y∈[1,n]

W1,y,c1,y ∧ En,y,cn,y Cores corretas nas bordas W,E

∧x∈[1,n[

∧y∈[1,n]

Ex,y,c ⇒Wx+1,y,c Correspondencia E-W

∧x∈]1,n]

∧y∈[1,n]

Wx,y,c ⇒ Ex−1,y,c Correspondencia W-E

∧x∈[1,n[

∧y∈[1,n[

Nx,y,c ⇒ Sx,y+1,c Correspondencia N-S

∧x∈[1,n[

∧y∈]1,n]

Sx,y,c ⇒ Nx,y−1,c Correspondencia S-N

Prova (3)

• O numero de variaveis e o tamanho de φ e polinomial em n, k; φ podeser computado em tempo polinomial para uma instancia de Ladrilha-mento.

• Portanto, SAT e NP-difıcil.

• SAT ∈ NP, porque para formula φ e atribuicao a, podemos verificara |= φ em tempo polinomial.

O significado do P = NPKurt Godel 1958: Uma carta para John von NeumannObviamente, podemos construir uma maquina de Turing, que decide, paracada formula F da logica de predicados de primeira ordem e cada numero na-tural n, se F tem uma prova do tamanho n (tamanho = numero de sımbolos).Seja Φ(F, n) o numero de passos que a maquina precisa para isso, e sejaΨ(n) = maxF Φ(F, n). A questao e como Φ(n) cresce para uma maquinaotima. E possıvel provar que Φ(n) ≥ kn. Se existisse uma maquina comΦ(n) ∼ kn (ou pelo menos Φ(n) ∼ kn2), isso teria consequencias da maior

195

Page 198: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11. Teoria da NP-completude

importancia. Assim, seria obvio, apesar da indecibilidade do Entscheidungs-problem, poderia-se substituir completamente o raciocınio do matematico emquestoes de sim-ou-nao por maquinas. [25]Em original a carta diz

Man kann offenbar leicht eine Turingmaschine konstruieren, welche vonjeder Formel F des engeren Funktionenkalkuls u. jeder naturl. Zahl nzu entscheiden gestattet, ob F einen Beweis der Lange n hat [Lange= Anzahl der Symbole]. Sei Ψ(F, n) die Anzahl der Schritte, die dieMaschine dazu benotigt u. sei φ(n) = maxF Ψ(F, n). Die Frage ist,wie rasch φ(n) fur eine optimale Maschine wachst. Man kann zeigenφ(n) ≥ k ·n. Wenn es wirklich eine Maschine mit φ(n) ∼ k ·n (oder auchnur ∼ k · n2) gabe, hatte das Folgerungen von der grossten Tragweite.Es wurde namlich offenbar bedeuten, dass man trotz der Unlosbarkeitdes Entscheidungsproblems die Denkarbeit des Mathematikers bei ja-oder-nein Fragen vollstandig durch Maschinen ersetzen konnte.

A significado do P = NP

• Centenas de problemas NP-completos conhecidos seriam tratavel.

• Todos os problemas cujas solucoes sao reconhecidas facilmente (polino-mial), teriam uma solucao facil.

• Por exemplo na inteligencia artificial: planejamento, reconhecimento delinguagens naturais, visao, talvez tambem composicao da musica, escre-ver ficcao.

• A criptografia conhecida, baseada em complexidade, seria impossıvel.

I have heard it said, with a straight face, that a proof of P = NPwould be important because it would airlines schedule their flightbetter, or shipping companies pack more boxes in their trucks! [2]

Mais um problema NP-completo

Minesweeper consistencia

Instancia Uma matriz de tamanho b× b cada campo ou livre, ou com umnumero ou escondido.

196

Page 199: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

11.2. Reducoes

Decisao A matriz e consistente (tem uma configuracao dos campos es-condidos, que podem ser “bombas” ou livres tal que os numeros saocorretos)?

O mundo agora• O milagre da NP-completude

– Qualquer problema em NP tem uma reducao po-linomial para SAT!

– Por que nao usar so SAT? (solucoes em 1.3n)?

•Teorema 11.5 (Ladner [19])Se P 6= NP , existe uma linguagem L ∈ NP que neme NP-completo nem em P.

Stephen ArthurCook (*1939)

Leonid Levin(*1948)

197

Page 200: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 201: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12. Fora do NP

Classes fora do P-NP

L = DSPACE[log n]NL = NSPACE[log n]

EXPTIME =⋃k>0

DTIME[2nk

]

NEXPTIME =⋃k>0

NTIME[2nk

]

EXPSPACE =⋃k>0

DSPACE[2nk

]

NEXPSPACE =⋃k>0

NSPACE[2nk

]

Co-classes

Definicao 12.1 (Co-classes)Para uma linguagem L, a linguagem complementar e L = Σ∗ \ L. Para umaclasse de complexidade C, a co-classe co − C = L|L ∈ C e a classe daslinguagens complementares.

Proposicao 12.1P = co−P.

• Qual problema pertence a NP?

CLIQUE,SAT,TSP,COMPOSITE.

Prova. Seja L ∈ P. Logo existe um MTD M tal que L = L(M) em temponk. Podemos facilmente construir uma MTD que rejeita se M aceita e aceitase M rejeita.

199

Page 202: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12. Fora do NP

A classe co-NP

• A definicao da classe NP e unilateral. Por exemplo, considere

TAUT

Instancia Formula proposicional em forma normal disjuntiva ϕ.

Decisao ϕ e uma tautologia (Todas as atribuicoes satisfazem ϕ)?

• Uma prova sucinta para esse problema nao e conhecido, entao suponha-mos que TAUT 6∈ NP.

• Em outras palavras, NP parece de nao ser fechado sobre a comple-mentacao:

co-NP 6= NP ?

Proposicao 12.2Se L ∈ NPC entao L ∈ co-NP⇐⇒ NP = co-NP.

Proposicao 12.3TAUT e co-NP-completo.

Prova. (Proposicao 12.2.) Seja L ∈ NPC. (→): Seja L ∈ co-NP. Se L′ ∈ NP,temos L′ ≤P L ∈ co-NP, logo NP ⊆ co-NP. Se L′ ∈ co-NP, entao L′ ∈ NP eL′ ≤P L ∈ co-NP, logo L′ ∈ co-NP e L′ ∈ NP. (←): Como L ∈ NPC ⊆ NP, eNP = co-NP, tambem L ∈ co-NP. Prova. (Proposicao 12.3, rascunho.) TAUT ∈ co-NP, porque uma MT comum estado universal pode testar todas atribuicoes das variaveis proposicionaise aceita se todas sao verdadeiras.Para provar a completude, temos que provar, que toda linguagem L ∈ co-NP ≤P

TAUT. A prova e uma modificacao da prova do teorema de Cook: Com en-trada w ∈ L produzimos uma formula ϕw usando o metodo de Cook. Temos

w ∈ L⇐⇒ ϕw satisfatıvel pela def. de ϕw

w ∈ L⇐⇒ ϕw insatisfatıvel negacao da afirmacao⇐⇒ ¬ϕw e tautologia

200

Page 203: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12.1. De P ate PSPACE

A classe co-NP

• NP: Resposta sim, se existe uma computacao que responde sim.

• Ou: Dado um certificado, verificavel em tempo polinomial.

• co-NP: Resposta sim, se todas as computacoes respondem sim

• Ou: Dado um “falsificado”, falsificavel em tempo polinomial.

O mundo da complexidade ao redor do P

12.1. De P ate PSPACE

O mundo inteiro (2)

201

Page 204: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12. Fora do NP

Problemas PSPACE-completos

• Nao sabemos, se NP = PSPACE ou ate P = PSPACE

• Como resolver isso? Da mesma forma que a questao P = NP: busqueproblemas PSPACE-completos (relativo a ≤P ).

• Considere

Formulas booleanas quantificadas (ingl. quantified booleanformulas, QBF)

Instancia Uma sentenca booleana

Φ := (Q1x1)(Q2x2) · · · (Qnxn)[ϕ(x1, x2, . . . , xn)]

com Qi ∈ ∀,∃.Decisao Φ e verdadeira?

• Exemplo:(∀x1)(∃x2)(∀x3)(x1 ∨ x3 ≡ x2)

Teorema 12.1QBF e PSPACE-completo.

Prova. (Rascunho.) E facil de provar que QBF ∈ PSPACE: Podemos verificarrecursivamente que a sentenca e verdadeira: Para uma formula Qx1ϕ(x1, . . .)com Q ∈ ∀,∃ vamos aplicar o algoritmos para os casos ϕ(0) e ϕ(1).

202

Page 205: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12.1. De P ate PSPACE

Para provar a completude, temos que mostrar que toda linguagem L ∈ PSPACEpode ser reduzido para QBF. Assume que existe uma MT que reconheceL = L(M) em espaco nk e seja w ∈ L. A ideia principal e construir umaformula φq,s,t que afirma que tem uma transicao do estado q para s em aomaximo t passos. A ideia e testar φq0,qf ,2cf(n) com 2cf(n) sendo o numeromaximo de estados para entradas de tamanho n.Um estado pode ser codificado em um string de |w|k bits. Para φq,r,1 podemosusar basicamente a mesma formula do teorema de Cook. Para t > 1 a formula

φq,s,t = ∃r(φq,r,t/2 ∧ φr,s,t/2)

define se tem uma transicao com estado intermediario r. Essa formula infeliz-mente tem t sımbolos (que e demais para 2cf(n)), mas a formula

φq,s,t = ∃r∀(a, b) ∈ (q, r), (r, s)(φa,b,t/2)

evite a ocorrencia dupla de φ a tem comprimento polinomial.

Outro exemplo

Palavra em linguagem sensıvel ao contexto

Instancia Gramatica Γ sensıvel ao contexto, palavra w.

Decisao w ∈ L(Γ)

Mais quantificacoesO que acontece, se nos permitimos mais quantificacoes?

203

Page 206: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12. Fora do NP

A hierarquia polinomial

• Estendemos relacoes para aridade i + 1. Uma relacao R ⊆ (Σ∗)i+1 elimitada polinomial, se

∀(x, y1, . . . , yi) ∈ R ∃p ∈ poly ∀i |yi| ≤ p(|x|)

• Definicao: Σi e a classe das linguagens L, tal que existe uma relacaode aridade i + 1 que pode ser reconhecida em tempo polinomial, e

x ∈ L⇐⇒ ∃y1∀y2 · · ·Qi : (x, y1, . . . , yi) ∈ R

• Definicao: Πi e a classe das linguagens L, tal que existe uma relacaode aridade i + 1 que pode ser reconhecida em tempo polinomial, e

x ∈ L⇐⇒ ∀y1∃y2 · · ·Qi : (x, y1, . . . , yi) ∈ R

• As classes Σi e Πi formam a hierarquia polinomial.

• Observacao: Σ1 = NP, Π1 = co-NP.

Quantificacoes restritas ou nao

• Conjunto das classes com quantificacoes restritas:

PH =⋃k≥0

Σk

• Classe das linguagens reconhecidas por um maquina de Turing com al-ternacoes sem limite: APTIME

• As maquinas correspondentes sao maquinas de Turing com alternacaocom tempo t(n): ATIME[t(n)].

Teorema 12.2 (Chandra, Kozen, Stockmeyer)Para t(n) ≥ n

ATIME[t(n)] ⊆ DSPACE[t(n)] ⊆⋃c>0

ATIME[ct(n)2].

Corolario 12.1ATIME = PSPACE

• Esta caracterizacao facilite entender por que QBF e PSPACE-completo

204

Page 207: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12.1. De P ate PSPACE

A hierarquia polinomial

Mais exemplos da classe PSPACE

• Observacao: Uma questao com alternacao e tıpica para resolver jogos.

• Ganhar um jogo em um passo: ”Existe um passo tal que possa ganhar?”

• Ganhar um jogo em dois passos: ”Existe um passo, tal que para todosos passos do adversario, existe um passo tal que possa ganhar?”

• Ganhar um jogo:∃p1 ∀p2 ∃p3 ∀p4 · · · ∃p2k+1 :

p1, p2, p3, . . . , p2k+1e uma sequencia de passos para ganhar.

• Portanto, varios jogos sao PSPACE-completos: Generalized Hex, gene-ralized Geography, . . .

Mais exemplos da classe PSPACE (2)

Jogo de geografia para dois jogadores.

Em alternacao cada jogador diz o nome de um paıs. Cada nometem que comecar com a ultima letra do nome anterior. O primeirojogador que nao e capaz de dizer um novo paıs, perde.

Peru...

205

Page 208: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12. Fora do NP

Mais exemplos da classe PSPACE (3)

Geografia generalizada (ingl. Generalized geography)

Instancia Um grafo G = (V,E) e um no v0 ∈ V

Decisao Jogando ”geografia”com este grafo, o primeiro jogador pode ga-nhar com certeza?

Teorema 12.3Geografia generalizada e PSPACE-completo.

O mundo ate PSPACE

12.2. De PSPACE ate ELEMENTAR

Problemas intrataveis demonstraveis

206

Page 209: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12.2. De PSPACE ate ELEMENTAR

• Agora, consideramos os seguintes classes

EXP = DTIME[2nO(1)] =

⋃k≥0

DTIME[2nk

]

NEXP = NTIME[2nO(1)] =

⋃k≥0

NTIME[2nk

]

EXPSPACE = DSPACE[2nO(1)] =

⋃k≥0

DSPACE[2nk

]

• Estas classes sao as primeiras demonstravelmente separadas de P.

• Consequencia: Uma linguagem completa em EXP nao e tratavel.

• Exemplo de um problema EXP-completo:

Xadrez generalizada (ingl. Generalized chess)

Instancia Uma configuracao de xadrez com tabuleiro de tamanho n× n.

Decisao Branco pode forcar o ganho?

Problemas ainda mais intrataveis

• As classes k − EXP, k − NEXP e k − EXPSPACE tem k nıveis de expo-nenciacao!

• Por exemplo, considere a torre de dois de altura tres: 222k 0 1 2 3 44 16 65536 ≈ 1.16× 1077 ≈ 2× 1019728

• Problemas desse tipo sao bem intrataveis

ELEMENTAR =⋃k≥0

k − EXP

• Mas tem ainda problemas decidıveis fora desta classe!

207

Page 210: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

12. Fora do NP

O mundo ate ELEMENTAR

Um corte final: Expressoes regulares

• Uma expressao regular e

– 0 ou 1 (denota o conjunto L(0) = 0 e L(1) = 1).– e f , se e um operador, e e, f sao expressoes regulares.

• Operadores possıveis: ∪, ·, 2, ∗,¬.

• Decisao: Dadas as expressoes regulares e, f , L(e) 6= L(f)?

Expressoes regulares com Completo para∪, · NP∪, ·,∗ PSPACE∪, ·,2 NEXP∪, ·,2 ,∗ EXPSPACE∪, ·,¬ Fora do ELEMENTAR!

• O tempo do ultimo problema de decisao cresce ao menos como uma torrede altura lg n.

208

Page 211: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A. Conceitos matematicos

Nessa secao vamos repetir algumas definicoes basicas da matematica.

A.1. Funcoes comuns

N, Z, Q e R denotam os conjuntos dos numeros naturais sem 0, inteiros,racionais e reais, respectivamente. Escrevemos tambem N0 = N ∪ 0, e paraum dos conjuntos C acima, C+ := x ∈ C|x > 0 e C− := x ∈ C|x < 0.Por exemplo

R+ = x ∈ R|x > 0.

Para um conjunto finito S, P(S) denota o conjunto de todos subconjuntos deS.

Definicao A.1 (Valor absoluto)O valor absoluta | · | e definido por

|x |=

x se x ≥ 0−x se x < 0

Proposicao A.1 (Regras para valores absolutos)

` x| = |x| (A.1)x ≤ |x| (A.2)

|x + y| ≤ |x|+ |y| Desigualdade triangular (A.3)|xy| = |x||y| (A.4)

Prova. (i) Se −x > 0 temos x < 0, logo ` x |= −x e |x |= −x. O casosrestantes podem ser analisadas analogamente. (ii) Analise da casos. (iii) Parax + y < 0: |x + y |= −(x + y) = (−x) + (−y) ≤` x|+ ` y |= |x| + |y|. Parax + y ≥ 0: |x + y |= x + y ≤ |x| + |y|. (iv) Para xy ≥ 0: Se x = 0 temos|xy |= 0 = |x||y|, se x > 0 temos y > 0 e |xy |= xy = |x||y|, se x < 0 temosy < 0 e |xy |= xy = (−|x|)(−|y|) = |x||y|. Caso xy < 0 similar.

209

Page 212: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A. Conceitos matematicos

Corolario A.1

∣∣∣∣∣∣∑

1≤i≤n

xi

∣∣∣∣∣∣ ≤∑

1≤i≤n

|xi| (A.5)

∣∣∣∣∣∣∏

1≤i≤n

xi

∣∣∣∣∣∣ =∏

1≤i≤n

|xi| (A.6)

(A.7)

Prova. Prova com inducao sobre n.

Proposicao A.2 (Regras para o maximo)Para ai, bi ∈ R

maxi

ai + bi ≤ maxi

ai + maxi

bi (A.8)

Prova. Seja ak + bk = maxi ai + bi. Logo

maxi

ai + bi = ak + bk ≤(max

iai

)+ bi ≤ max

iai + max

ibi.

Definicao A.2 (Pisos e tetos)Para x ∈ R o piso bxc e o maior numero inteiro menor que x e o teto dxe e omenor numero inteiro maior que x. Formalmente

bxc = maxy ∈ Z|y ≤ xdxe = miny ∈ Z|y ≥ x

O parte fracionario de x e x = x− bxc.

Observe que o parte fracionario sempre e positivo, por exemplo −0.3 = 0.7.

Proposicao A.3 (Regras para pisos e tetos)Pisos e tetos satisfazem

x ≤ dxe < x + 1 (A.9)x− 1 < bxc ≤ x (A.10)

210

Page 213: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A.1. Funcoes comuns

Definicao A.3O fatorial e a funcao

n! : N→ N : n 7→∏

1≤i≤n

i.

Temos a seguinte aproximacao do fatorial (formula de Stirling)

n! =√

2πn(n

e

)n

(1 + O(1/n)) (A.11)

Uma estimativa menos preciso, pode ser obtido pelas observacoes

n! ≤ nn

en =∑i≥0

ni

i!>

nn

n!

que combinado ficam(n/e)n ≤ n! ≤ nn.

Revisao: Logaritmos

loga(1) = 0 (A.12)

aloga(n) = n por definicao (A.13)loga(n ·m) = loga(n) + loga(m) propriedade do produto (A.14)

loga(n

m) = loga(n)− loga(m) propriedade da divisao (A.15)

loga(nm) = m · loga(n) propriedade da potencia (A.16)loga(n) = logb(n) · loga(b) troca de base (A.17)

loga(n) =logc(n)logc(a)

mudanca de base (A.18)

logb(a) =1

loga(b)(A.19)

alogc(b) = blogc(a) expoentes (A.20)

Os numeros harmonicosHn =

∑1≤i≤n

1i

ocorrem frequentemente na analise de algoritmos.

211

Page 214: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A. Conceitos matematicos

Proposicao A.4

lnn < Hn < lnn + 1.

Prova. Resultado da observacao que

∫ n+1

1

1x

dx < Hn < 1 +∫ n+1

2

1x− 1

dx

(veja figura A.1) e o fato que∫

1/x = ln x.

6

2

1

0

1098754310 2

Figura A.1.: Cota inferior e superior dos numeros harmonicos.

A.2. Somatorio

Revisao: Notacao Somatorio

212

Page 215: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A.2. Somatorio

Para k uma constante arbitraria temosn∑

i=1

kai = k

n∑i=1

ai Distributividade (A.21)

n∑i=1

k = nk (A.22)

n∑i=1

m∑j=1

aibj =

(n∑

i=1

ai

) m∑j=1

bj

Distributividade generalizada (A.23)

n∑i=1

(ai + bi) =n∑

i=1

ai +n∑

i=1

bi Associativiade (A.24)

p∑i=1

ai +n∑

i=p+1

ai =n∑

i=1

ai (A.25)

n∑i=0

ap−i =p∑

i=p−n

ai (A.26)

A ultima regra e um caso particular de troca de ındice (ou comutacao) parasomas. Para um conjunto finito C e uma permutacao dos numeros inteiros πtemos ∑

i∈C

ai =∑

π(i)∈C

aπ(i).

No exemplo da regra acima, temos C = [0, n] e π(i) = p− i e logo∑0≤i≤n

ap−i =∑

0≤p−i≤n

ap−(i−p) =∑

p−n≤i≤p

ai.

Parte da analise de algoritmos se faz usando somatorios, pois lacos while e forem geral podem ser representados por somatorios. Como exemplo, considereo seguinte problema. Dadas duas matrizes matA e matB, faca um algoritmoque copie a matriz triangular inferior de matB para matA.

CopiaMTI

Entrada Matrizes quadraticos A e B e dimensao n.

Saıda Matriz A com a matriz triangular inferior copiada de B.

213

Page 216: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A. Conceitos matematicos

1 for i := 1 to n do2 for j := 1 to i do3 Aij = Bij

4 end for5 end for

Uma analise simples deste algoritmo seria:

n∑i=1

i∑j=1

1 =n∑

i=1

i =n · (n + 1)

2= O(n2)

Series

n∑i=1

i =n(n + 1)

2serie aritmetica (A.27)

n∑i=0

xi =xn+1 − 1

x− 1serie geometrica, para x 6= 1 (A.28)

se |x| < 1 entao

∞∑k=0

xk =1

1− xserie geometrica infinitamente decrescente (A.29)

(A.30)

Serie geometrica com limites arbitrarios:

∑a≤i≤b

xi =xb+1 − xa

x− 1para x 6= 1

Series

214

Page 217: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A.3. Inducao

n∑i=1

2i = 2n+1 − 2 (A.31)

n∑i=0

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

6(A.32)

n∑i=0

i · 2i = 2 + (n− 1) · 2n+1 (A.33)

Mais geral para alguma sequencia fi temos∑1≤i≤n

ifi =∑

1≤i≤n

∑1≤j≤i

fi =∑

1≤j≤i≤n

fi =∑

1≤j≤n

∑j≤i≤n

fi

=∑

1≤j≤n

∑1≤i≤n

fi −∑

1≤i<j

fi

.

Uma aplicacao:

∑1≤i≤n

ixi =∑

1≤j≤n

∑1≤i≤n

xi −∑

1≤i<j

xi

=∑

1≤j≤n

(xn+1 − x1

x− 1− xj − x1

x− 1

)

=1

x− 1

∑1≤j≤n

(xn+1 − xj

)=

1x− 1

(nxn+1 − xn+1 − x1

x− 1

)=

x

(x− 1)2(xn(nx− n− 1) + 1)

e com x = 1/2 temos∑1≤i≤n

i2−i = 2(2(2−1−2−n−1)−n2−n−1) = 2((1−2−n)−n2−n−1) = 2−2−n(n+2)

(A.34)

A.3. Inducao

Revisao: Inducao matematica

• Importante para provar resultados envolvendo inteiros.

215

Page 218: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A. Conceitos matematicos

• Seja P(n) uma propriedade relativa aos inteiros.

– Se P(n) e verdadeira para n=1 e

– se P(k) verdadeira implica que P(k+1) e verdadeira

– entao P(n) e verdadeira para todo inteiro n ≥ 1.

Revisao: Inducao matematica

• Para aplicarmos inducao matematica deve-se:

– Passo inicial: verificar se P(n) e verdadeira para a base n0.

– Hipotese: assumir P(n) valida.

– Prova: provar que P(n) e valida para qualquer valor de n ≥ n0.

• Se os passos acima forem verificados, conclui-se que P(n) e valida paraqualquer valor de n ≥ n0

Inducao matematica: exercıcios

• Mostre que n! ≤ nn.

• Mostre que 1loga(c) = logc(a).

• Demonstre a propriedade dos expoentes.

• Encontre uma formula alternativa para

n∑i=1

2i− 1

e prove seu resultado via inducao matematica.

• Use inducao matematica para provar que

n−1∑i=0

qi =qn − 1q − 1

.

• Resolva os exercıcios do capıtulo 1.

216

Page 219: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A.4. Limites

A.4. Limites

Definicao A.4 (Limites)Para f : N→ R o limite de n para ∞ e definido por

limn→∞

f(n) = c⇐⇒ ∃c ∀ε > 0 ∃n0 ∀n > n0 |f(n)− c| < ε. (A.35)

Caso nao existe um c ∈ R a funcao e divergente. Uma forma especial dedivergencia e quando a funcao ultrapasse qualquer numero real,

limn→∞

f(n) =∞⇐⇒ ∀c ∃n0 ∀n > n0 f(n) > c (A.36)

Tambem temos

lim infn→∞

f(n) = limn→∞

(inf

m≥nf(m)

)lim sup

n→∞f(n) = lim

n→∞

(supm≥n

f(m))

Lema A.1 (Definicao alternativa do limite)E possıvel substituir < com ≤ na definicao do limite.

limn→∞

f(n) = c⇐⇒ ∀ε > 0 ∃n0 ∀n > n0 |f(n)− c| ≤ ε

Prova. ⇒ e obvio. Para ⇐, escolhe ε′ = ε/2 < ε.

A.5. Probabilidade discreta

Probabilidade: Nocoes basicas

• Espaco amostral finito Ω de eventos elementares e ∈ Ω.

• Distribuicao de probabilidade Pr[e] tal que

Pr[e] ≥ 0;∑e∈Ω

Pr[e] = 1

• Eventos (compostos) E ⊆ Ω com probabilidade

Pr[E] =∑e∈E

Pr[e]

217

Page 220: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A. Conceitos matematicos

Exemplo A.1Para um dado sem bias temos Ω = 1, 2, 3, 4, 5, 6 e Pr[i] = 1/6. O eventoPar = 2, 4, 6 tem probabilidade Pr[Par] =

∑e∈Par Pr[e] = 1/2. ♦

Probabilidade: Nocoes basicas

• Variavel aleatoriaX : Ω→ N

• Escrevemos Pr[X = i] para Pr[X−1(i)].

• Variaveis aleatorias independentes

P [X = x e Y = y] = P [X = x]P [Y = y]

• Valor esperado

E[X] =∑e∈Ω

Pr[e]X(e) =∑i≥0

iPr[X = i]

• Linearidade do valor esperado: Para variaveis aleatorias X, Y

E[X + Y ] = E[X] + E[Y ]

Prova. (Das formulas equivalentes para o valor esperado.)∑0≤i

Pr[X = i]i =∑0≤i

Pr[X−1(i)]i

=∑0≤i

∑e∈X−1(i)

Pr[e]X(e) =∑e∈Ω

Pr[e]X(e)

Prova. (Da linearidade.)

E[X + Y ] =∑e∈Ω

Pr[e](X(e) + Y (e))

=∑e∈Ω

Pr[e]X(e)∑e∈Ω

Pr[e]Y (e)) = E[X] + E[Y ]

218

Page 221: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

A.6. Grafos

Exemplo A.2(Continuando exemplo A.1.)Seja X a variavel aleatorio que denota o numero sorteado, e Y a variavelaleatorio tal que Y = [a face em cima do dado tem um ponto no meio].

E[X] =∑i≥0

Pr[X = i]i = 1/6∑

1≤i≤6

i = 21/6 = 7/2

E[Y ] =∑i≥0

Pr[Y = i]i = Pr[Y = 1] = 1/2E[X + Y ] = E[X] + E[Y ] = 4

A.6. Grafos

Seja [D]k o conjunto de todos subconjuntos de tamanho k de D.Um grafo (ou grafo nao-direcionado) e um par G = (V,E) de vertices (ounos ou pontos) V e arestas (ou arcos ou linhas) E tal que E ⊆ [V ]2. Com|G| e ||G|| denotamos o numero de vertices e arestas, respectivamente. Doisvertices u, v sao adjacentes, se u, v ∈ E, duas arestas e, f sao adjacentes, see ∩ f 6= ∅. Para um vertice v, a vizinhanca (de vertices) N(v) e o conjuntode todas vertices adjacentes com ele, e a vizinhanca (de arestas) E(v) e oconjunto de todas arestas adjacentes com ele. O grau de um vertice v e onumero de vizinhos δ(v) = |N(v) |= |E(v)|.Um caminho de comprimento k e um grafo C = (v0, . . . , vk, vi, vi+1 |0 ≤i < k) com todo vi diferente. Um ciclo de comprimento k + 1 e um caminhocom a aresta adicional vn, v0. O caminho com comprimento k e denotadocom P k, o ciclo de comprimento k com Ck.Um grafo G e conexo se para todo par de vertices u, v existe um caminhoentre eles em G.Um subgrafo de G e um grafo G′ = (V ′, E′) tal que V ′ ⊆ V e E′ ⊆ E,escrito G′ ⊆ G. Caso G′ contem todas arestas entre vertices em V ′ (i.e.E′ = E ∩ [V ′]2) ela e um subgrafo induzido de V ′ em G, escrito G′ = G[V ′].Um grafo direcionado e um par G = (V,E) de vertices V e arestas E ⊆ V 2.Cada aresta e = (u, v) tem um comeco u e um termino v.

219

Page 222: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 223: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

B. Solucoes dos exercıcios

Solucao do exercıcio 1.1.As caracterısticas correspondentes sao

f = Ω(f) (B.1)cΩ(f) = Ω(f) (B.2)

Ω(f) + Ω(f) = Ω(f) (B.3)Ω(Ω(f)) = Ω(f) (B.4)

Ω(f)Ω(g) = Ω(fg) (B.5)Ω(fg) = fΩ(g) (B.6)

Todas as caracterısticas se aplicam para Ω tambem. As provas sao modi-ficacoes simples das provas das caracterısticas 1.10 ate 1.15 com ≤ substituıdopor ≥.Prova.Prova de B.1: Escolhe c = 1, n0 = 0.Prova de B.2: Se g ∈ cΩ(f), temos g = cg′ e existem c′ > 0 e n0 tal que∀n > n0 g′ ≥ c′f . Portanto ∀n > n0 g = cg′ ≥ cc′f e com cc′ e n0 temosg ∈ Ω(f).Prova de B.3: Para g ∈ Ω(f) + Ω(f) temos g = h + h′ com c > 0 e n0 talque ∀n > n0 h ≥ cf e c′ > 0 e n′0 tal que ∀n > n0 h′ ≥ c′f . Logo paran > max(n0, n

′0) temos g = h + h′ ≥ (c + c′)f .

Prova de B.4: Para g ∈ Ω(Ω(f)) temos g ≥ ch com h ≥ c′f a partir de ındicesn0 e n′0, e logo g ≥ cc′h a partir de max(n0, n

′0).

Prova de B.5: h = f ′g′ com f ′ ≥ cff e g′ ≥ cgg tal que h = f ′g′ ≥ cfcgfg.Prova de B.6: h ≥ cfg. Escrevendo h = fg′ temos que mostrar g′ ∈ Ω(g).Mas g′ = h/f ≥ cfg/f = cg.

Solucao do exercıcio 1.2.“⇐”:Seja f + c ∈ O(g), logo existem c′ e n0 tal que ∀n > n0 f + c ≤ c′g. Portantof ≤ f + c ≤ c′g tambem, e temos f ∈ O(g).“⇒”:Essa direcao no caso geral nao e valida. Um contra-exemplo simples e 0 ∈ O(0)mas 0+c 6∈ O(0). O problema e que a funcao g pode ser 0 um numero infinito

221

Page 224: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

B. Solucoes dos exercıcios

de vezes. Assim f tem que ser 0 nesses pontos tambem, mas f + c nao e. Mascom a restricao que g ∈ Ω(1), temos uma prova:Seja f ∈ O(g) logo existem c′ e n′0 tal que ∀n > n′0 f ≤ c′g. Como g ∈ Ω(1)tambem existem c′′ e n′′0 tal que ∀n > n′′0 g ≥ c′′. Logo para n > max(n′0, n

′′0)

f + c ≤ c′g + c ≤ c′g +c

c′′g = (c′ +

c

c′′)g.

Solucao do exercıcio 1.3.

1. Para n ≥ 2 temos log 1 + n ≤ log 2n = log 2 + log n ≤ 2 log n.

2. Seja f ∈ log O(n2), i.e. f = log g com g tal que ∃n0, c ∀n > n0 g ≤ cn2.Entao f = log g ≤ log cn2 = log c+2 log n ≤ 3 log n para n > max(c, n0).

3. Temos que mostrar que existem c e n0 tal que ∀n > n0 log log n ≤ c log n.Como log n ≤ n para todos n ≥ 1 a inequacao acima esta correto comc = 1.

Solucao do exercıcio 1.4.Para provar fn = O(n) temos que provar que existe um c tal que fn ≤ cn apartir um ponto n0. E importante que a constante c e a mesma para todo n.Na verificacao do professor Veloz a constante c muda implicitamente, e porisso ela nao e valida. Ele tem que provar que fn ≤ cn para algum c fixo. Umatentativa leva a

fn = 2fn−1

≤ 2cn

6≤ cn Perdido!

que mostra que essa prova nao funciona.

Solucao do exercıcio 1.5.E simples ver que f ∈ o(g) implica f ∈ o(g). Para mostrar a outra direcaosuponha que f ∈ o(g). Temos que mostrar que ∀c > 0 : ∃n0 tal que f < cg.Escolhe um c. Como f ∈ o(g) sabemos que existe um n0 tal que f ≤ c/2g paran > n0. Se g 6= 0 para n > n′0 entao c/2g < g tambem. Logo f ≤ c/2g < cgpara n > max(n0, n

′0).

Solucao do exercıcio 1.6.Primeira verifique-se que Φ satisfaz Φ + 1 = Φ2.

222

Page 225: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Prova que fn ∈ O(Φn) com inducao que fn ≤ cΦn. Base: f0 = 0 ≤ c ef1 = 1 ≤ cΦ para c ≥ 1/Φ ≈ 0.62. Passo:

fn = fn−1 + fn−2 ≤ cΦn−1 + cΦn−2 = (cΦ + c)Φn−2 ≤ cΦn

caso cΦ + c ≤ cΦ2.Prova que fn ∈ Ω(Φn) com inducao que fn ≥ cΦn. Base: Vamos escolhern0 = 1. f1 = 1 ≥ cΦ e f2 = 1 ≥ cΦ2 caso c ≤ Φ−2 ≈ 0.38. Passo:

fn = fn−1 + fn−2 ≥ cΦn−1 + cΦn−2 = (cΦ + c)Φn−2 ≤ cΦn

caso cΦ + c ≥ cΦ2.

Solucao do exercıcio [27, 2.3].

1. 3n + 7 ≤ 5n + 2⇐⇒ 5 ≤ 2n⇐⇒ 2.5 ≤ n (equacao linear)

2. 5n + 7 ≤ 3n2 + 1⇐⇒ 0 ≤ 3n2 − 5n− 6⇐⇒ 5/6 +√

97/6 ≤ n (equacaoquadratica)

3. 5 log2 n + 7 ≤ 5n + 1 ⇐⇒ 75 + 27 − 2 ≤ 25n ⇐⇒ 16933 ≤ 25n ⇐⇒2.809 . . . ≤ n

4. Veja item (b)

5. 52n + 3 ≥ 3n2 + 5n⇐⇒ n ≥ 2n ≥ (3n2 + 5n− 3)/5⇐ 2n ≥ n2.

6. n23n ≥ n32n + 1 ⇐ n23n ≥ n32n+1 ⇐⇒ 2 log2 n + n log2 3 ≥ 3 log2 n +(n + 1) log2 2⇐⇒ n log2 3 ≥ log2 n + (n + 1)⇐ n(log2 3− 1)/2 ≥ log2 n

Solucao do exercıcio [27, 2.9].Com f ∈ Θ(nr) e g ∈ Θ(ns) temos

c1nr ≤ f ≤ c2n

r; d1ns ≤ g ≤ d2n

s a partir de um n0

(para constantes c1, c2, d1, d2.) Logo

d1fq ≤ g f ≤ d2f

q

⇒ d1(c1np)q ≤ g ≤ d2(c2n

p)q

⇒ f1cq1n

p+q ≤ g ≤ d2cq2n

p+q

⇒ g ∈ Θ(np+q)

223

Page 226: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

B. Solucoes dos exercıcios

Solucao do exercıcio 2.1.

Cp[Alg1] =n∑

i=1

2i−1∑j=1

c =c

n∑i=1

2i = c · 2n − c = O(2n)

Cp[Alg2] =∑

1≤i≤n

∑1≤j≤2i

j ımpar

j2 ≤∑

1≤i≤n

∑1≤j≤2i

(2i)2

=∑

1≤i≤n

8i =8n+1 − 8

7≤ 8n+1 = O(8n)

Cp[Alg3] =n∑

i=1

n∑j=i

2i =n∑

i=1

2i · (n− i + 1)

=n∑

i=1

(n2i − i2i + 2i) =n∑

i=1

n.2i −n∑

i=1

i.2i +n∑

i=1

2i

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

= n2n+1 − 2n− 2− n2n+1 + 2n+1 + 2n+1 − 2

= 2n+2 − 2n− 4 = O(2n)

Cp[Alg4] =n∑

i=1

i∑j=1

2j =n∑

i=1

(2i+1 − 2)

= 2n∑

i=1

2i −n∑

i=1

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

= 4 · 2n − 4− 2n = O(2n)

224

Page 227: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Cp[Alg5] =n∑

i=1

n∑j=i

2j =n∑

i=1

n∑j=1

2j −i−1∑j=1

2j

=

n∑i=1

(2n+1 − 2− (2i−1+1 − 2)

)=

n∑i=1

(2.2n − 2− 2i + 2

)= 2 ·

n∑i=1

2n −n∑

i=1

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

= 2.n.2n − 2.2n + 2 = O(n2n)

Solucao do exercıcio 2.2.O problema e o mesmo da prova do exercıcio 1.4: Na prova a constante cmuda implicitamente. Para provar Tn = O(n) temos que provar Tn ≤ cn parac fixo. Essa prova vira

Tn = n− 1 + 2/n∑

0≤i<n

O(i)

≤ n− 1 + 2c/n∑

0≤i<n

i

= n− 1 + c(n− 1) = cn + (n− 1− c)6≤ cn Nao funciona para n > c + 1

Solucao do exercıcio 2.3.Uma solucao simples e manter um maximo M e o segundo maior elemento mno mesmo tempo:

1 M :=∞2 m :=∞3 for i = 1, . . . , n do4 i f ai > M then5 m := M6 M := ai

7 else i f ai > m do8 m := ai

225

Page 228: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

B. Solucoes dos exercıcios

9 end i f10 end for11 return m

O numero de comparacoes e ao maximo dois por iteracao, e esse limite ocorrenuma sequencia crescendo 1, 2, . . . , n. Portanto, a complexidade pessimista e2n = Θ(n). Existem outras solucoes que encontram o segundo maior elementocom somente n + log2 n comparacoes.

Solucao do exercıcio 2.4.Uma abordagem simples com busca exaustiva e

1 m :=∑

1≤i≤n ai

2 for C ⊆ [1, n] do

3 m′ :=∣∣∣∑i∈C ai −

∑i 6∈C ai

∣∣∣4 i f m′ < m then5 m := m′

6 end i f7 end for

Ele tem complexidade cp = O(n) + O(2nnc) = O(n2n).

Solucao do exercıcio 2.5.Para um dado n temos sempre n−bn/2c atualizacoes. Logo, o numero mediode atualizacoes e e mesma.

Solucao do exercıcio 2.6.Seja A,A1, . . . , An as variaveis aleatorias que denotam o numero total deatualizacoes, e o numero de atualizacoes devido a posicao i, respectivamente.Com a distribuicao uniforme temos E[Ai] = 1/6 e pela linearidade

E[A] = E

∑1≤i≤n

Ai

= n/6.

Com o mesmo argumento a segunda distribuicao leva a E[Ai] = 1/10 e E[A] =n/10 finalmente.

Solucao do exercıcio 2.7.Cada chave em nıvel i ∈ [1, k] precisa i comparacoes e a arvore tem

∑1≤i≤k 2i−1 =

2k − 1 nos e folhas em total. Para o numero de comparacoes C temos

E[C] =∑

1≤i≤k

P [C = i]i =∑

1≤i≤k

2i−1

2k−1i = 2−k

∑1≤i≤k

2ii = 2(k − 1) + 21−k.

226

Page 229: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Solucao do exercıcio 4.1.O seguinte algoritmo resolva o problema:

Subsequencia

Entrada Sequencia S′ = s′1 . . . s′m e S = s1 . . . sn.

Saıda true, se S′ ⊆ S (S′ e uma subsequencia de S)

1 i f m > n then2 return f a l s e3 end i f4 i := 15 for j := 1, . . . , n do6 i f s′i = sj then7 i := i + 18 i f i > m then9 return t rue

10 end i f11 end i f12 end for13 return f a l s e

e tem complexidade O(n). A corretude resulta de observacao que para cadasubsequencia possıvel temos outra subsequencia que escolhe o elemento maisesquerda em S. Portanto, podemos sempre escolher gulosamente o primeiroelemento da sequencia maior.

Solucao do exercıcio 4.2.O seguinte algoritmo resolve o problema:

Bases

Entrada Uma sequencia de posicoes xi de n cidades, 1 ≤ i ≤ n.

Saıda Uma sequencia mınima de posicoes bi de bases.

1 Sejam S = x′1 . . . x′n as po s i c o e s em ordem c r e s c en t e2 B = ε

227

Page 230: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

B. Solucoes dos exercıcios

3 while S 6 ε do4 Se ja S = x′S′

5 B := B, (x′ + 4) aumenta a sequencia B 6 Remove todos os e lementos x ≤ x′ + 8 de S7 end while

O algoritmo tem complexidade O(n) porque o laco tem ao maximo n iteracoes.Prova de corretude: Seja bi as posicoes do algoritmo guloso acima, e b′i asposicoes de alguma outra solucao. Afirmacao: bi ≥ b′i. Portanto, a solucaogulosa nao contem mais bases que alguma outra solucao. Prova da afirmacaocom inducao: A base b1 ≥ b′1 e correto porque toda solucao tem que alimentara primeira casa e o algoritmo guloso escolhe a ultima posicao possıvel. Passo:Seja bi ≥ b′i e sejam h, h′ as posicoes da proximas casas sem base. O algoritmoguloso escolha h + 4, mas como bi ≥ b′i e h ≥ h′ temos b′i+1 ≤ h′ + 4 porqueh′ precisa uma base. Logo, xi+1 = h + 4 ≥ h′ + 4 ≥ b′i+1.

Solucao do exercıcio 6.3.

1. Produto de dois numeros binarios (exemplo 5.3.8 em [27]).

mult-bin

Entrada Dois numeros binarios p, q com n bits.

Saıda O produto r = pq (que tem ≤ 2n bits).

1 i f n = 1 then2 return pq multiplica dois bits em O(1) 3 else4 x := p1 + p2

5 y := q1 + q2

6 z := mult-bin(x2, y2)7 t := (x1y1)2n + (x1y2 + x2y1)2n/2 + z8 u := mult-bin(p1, q1)9 v := mult-bin(p2, q2)

10 r := u2n + (t− u− v)2n/2 + v11 return r12 end i f

228

Page 231: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

E importante de observar que x e a soma de dois numeros com n/2 bitse logo tem no maximo n/2 + 1 bits. A divisao de x em x1 e x2 e tal quex1 represente o bit n/2 + 1 e x2 o resto.

p = | p1 |︸ ︷︷ ︸n/2bits

p2 |︸ ︷︷ ︸n/2bits

x = | p1 |︸ ︷︷ ︸n/2bits

+ | p2 |︸ ︷︷ ︸n/2bits

= |x1|︸︷︷︸1bit

x2 |︸ ︷︷ ︸n/2bits

(y tem a mesma subdivisao.)

Corretude do algoritmo Temos a representacao p = p12n/2 + p2 eq = q12n/2 + q2 e logo obtemos o produto

pq = (p12n/2+p2)(q12n/2+q2) = p1q12n+(p1q2+p2q1)2n/2+p2q2 (B.7)

Usando t = (p1 + p2)(q1 + q2) = p1q1 + p1q2 + p2q1 + p2q2 obtemos

p1q2 + p2q1 = t− p1q1 − p2q2. (B.8)

A linha 7 do algoritmo calcula t (usando uma chamada recursiva comn/2 bits para obter z = x2y2). Com os produtos u = p1q1, v = p2q2

(que foram obtidos com duas chamadas recursivas com n/2 bits) temos

p1q2 + p2q1 = t− u− v

pq = u2n + (t− u− v)2n/2 + v

substituindo u e v nas equacoes B.7 e B.8.

Complexidade do algoritmo Inicialmente provaremos pelo metodo dasubstituicao que a recorrencia deste algoritmo e O(nlog2 3). Se usarmos ahipotese de que T (n) ≤ cnlog2 3, nao conseguiremos finalizar a prova poispermanecera um fator adicional que nao podemos remover da equacao.

229

Page 232: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

B. Solucoes dos exercıcios

Caso este fator adicional for menor em ordem que a complexidade quequeremos provar, podemos usar uma hipotese mais forte como apresen-tado abaixo.

Hipotese: T (n) ≤ cnlog2 3 − dn

T (n) ≤ 3(c(n/2)log2 3 − d(n/2)) + bn

≤ 3cnlog2 3/(2log2 3)− 3d(n/2) + bn

≤ cnlog2 3 − 3d(n/2) + bn

≤ cnlog2 3 − dn

A desigualdade acima e verdadeira para −3d(n/2) + bn ≤ −dn, ou seja,para d ≤ −2b: T (n) ∈ O(nlog2 3 − dn) ∈ O(nlog2 3).

Com a hipotese que uma multiplicacao com 2k precisa tempo constante(shift left), a linha 7 do algoritmo tambem precisa tempo constante,porque uma multiplicacao com x1 ou y1 precisa tempo constante (defato e um if). O custo das adicoes e O(n) e temos a recorrencia

Tn =

1 se n = 13T (n/2) + cn se n > 1

cuja solucao e Θ(n1.58) (com 1.58 ≈ log2 3, aplica o teorema Master).

Exemplo B.1Com p = (1101.1100)2 = (220)10 e q = (1001.0010)2 = (146)10 temosn = 8, x = p1 + p2 = 1.1001 tal que x1 = 1 e x2 = 1001 e y = q1 + q2 =1011 tal que y1 = 0 e y2 = 1011. Logo z = x2y2 = 0110.0011, t =y224 + z = 21.0001.0011, u = p1q1 = 0111.0101, v = p2q2 = 0001.1000 efinalmente r = 1111.1010.111.1000 = 32120. ♦

O algoritmo acima nao e limitado para numeros binarios, ele pode seraplicado para numeros com base arbitrario. Ele e conhecido como algo-ritmo de Karatsuba [16]. Um algoritmo mais eficiente e do Schonhage eStrassen [24] que multiplica em O(n log n log log n). Em 2007, Furer [10]apresentou um algoritmo que multiplica em n log n 2O(log∗ n), um poucoacima do limite inferior Ω(n log n).

2. Algoritmo de Strassen para multiplicacao de matrizes.

230

Page 233: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

O algoritmo esta descrito na secao 6.3. A recorrencia correspondente e

T (n) = 7T (n/2) + Θ(n2).

Analisando com a arvore de recorrencia, obtemos 7i problemas em cadanıvel, cada um com tamanho n/2i e custo c(n/2i)2 = cn2/4i e alturah = dlog2 ne (com h + 1 nıveis) que leva a soma

T (n) ≤∑

0≤i≤h

cn2(7/4)i + 7h+1

= (4/3)cn2((7/4)h+1 − 1) + 7h+1 com 4h+1 ≥ 4n2

≤ (7c/3 + 1)7h − (4/3)cn2 com 7h ≤ 7 7log2 n

≤ (49c/3 + 1)nlog2 7 = O(nlog2 7).

Para aplicar o metodo de substituicao, podemos estimar T (n) ≤ anc −bn2 com c = log2 7 que resulta em

T (n) = 7T (n/2) + dn2

≤ 7a/2cnc − 7b/4n2 + dn2

= anc − bn2 + (d− 3b/4)n2

que e satisfeito para d− 3/4 ≤ 0⇔ b ≥ (4/3)d.

Para aplicar o metodo Master, e suficiente de verificar que com Θ(n2) =O(nlog2 7− ε) se aplica o caso 1, e portanto a complexidade e Θ(nlog2 7).

3. Algoritmo de selecao do k-gesimo elemento.

Esse algoritmo obedece a recorrencia

T (n) = T (n/5) + T (7n/10 + 6) + O(n)

(sem considerar o teto). Na aplicacao da arvore de recorrencia, enfren-tamos dois problemas: (i) Os ramos tem comprimento diferente, porqueos subproblemas tem tamanho diferente (portanto o metodo Master naose aplica nesse caso). (ii) O tamanho 7n/10+6 do segundo subproblemaleva a somas difıceis.

Por isso, vamos estimar o custo da arvore da seguinte forma: (i) Temosque garantir, que o segundo subproblema sempre e menor: 7n/10+6 < n.Isso e satisfeito para n > 20. (ii) Vamos substituir o sub-problema7n/10 + 6 com a cota superior (7 + ε)n/10 para um ε > 0 pequeno. Issoe satisfeito para n ≥ 60/ε. (iii) Sejam c1 := 1/5, c2 := (7 + ε)/10 e

231

Page 234: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

B. Solucoes dos exercıcios

c := c1 + c2. Entao a arvore tem custo cin no nıvel i e no ramo maislongo (que corresponde a c2) uma altura de h =

⌈logc2

20/n⌉. Portanto,

obtemos uma cota superior para o custo da arvore

T (n) ≤ n∑

0≤i≤h

ci + F (n)

≤ n∑

0≤i<∞

ci + F (n) porque c < 1 = 10n/(1− ε) + F (n)

com o numero de folhas F (n). Caso F (n) = O(n) obtemos a estimativadesejada T (n) = O(n). Observe que a estimativa

F (n) = 2h+1 ≤ 42logc220nlog1/c2

2 = Ω(n1.94)

nao serve! Como as folhas satisfazem a recorrencia

F (n) ≤

F (dn/5e) + F (b7n/10 + 6c) se n > 20O(1) se n ≤ 20

F (n) ≤ cn pode ser verificado com substituicao (resolvido no livro doCormen). O metodo master nao se aplica nesta recorrencia visto queesta nao se encontra no formato em que podemos aplicar o TeoremaMaster.

232

Page 235: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Bibliografia

[1] Wilkinson microwave anisotropy probe. Online. http://map.gsfc.nasa.gov.

[2] S. Aaronson. NP-complete problems and physical reality. ACM SIGACTNews, Mar. 2005.

[3] M. J. Atallah, editor. Algorithms and theory of computation handbook.CRC Press, 1999.

[4] R. Bellman. Dynamic programming treatment of the travelling salesmanproblem. J. ACM, 9(1):61–63, 1962.

[5] Complexity zoo. Online.

[6] D. Coppersmith and S. Winograd. Matrix multiplication via arithmeticprogressions. In STOC ’87: Proceedings of the nineteenth annual ACMconference on Theory of computing, pages 1–6, 1987.

[7] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introductionto Algorithms. The MIT Press, 2nd edition, 2001.

[8] R. Diestel. Graph theory. Springer, 3rd edition, 2005.

[9] D.-Z. Du and K.-I. Ko, editors. Advances in Algorithms, Languages, andComplexity - In Honor of Ronald V. Book. Kluwer, 1997.

[10] M. Furer. Faster integer multiplication. In STOC ’07: Proceedings ofthe thirty-ninth annual ACM symposium on Theory of computing, pages57–66, New York, NY, USA, 2007. ACM.

[11] Y. Gurevich and S. Shelah. Expected computation time for hamiltonianpath problem. SIAM J. on Computing, 16(3):486–502, 1987.

[12] J. Hartmanis and R. E. Stearns. On the computational complexity ofalgorithms. Transactions of the American Mathematical Society, 117:285–306, 1965.

[13] D. S. Hirschberg. A linear space algorithm for computing maximal com-mon subsequences. Comm. of the ACM, 18(6):341–343, 1975.

233

Page 236: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Bibliografia

[14] C. A. R. Hoare. Quicksort. Computer Journal, 5:10–15, 1962.

[15] E. Kaltofen and G. Villard. On the complexity of computing determi-nants. Computational complexity, 13:91–130, 2004.

[16] A. A. Karatsuba and Y. Ofman. Multiplication of many-digital numbersby automatic computers. Doklady Akad. Nauk SSSR, 145(2):293–294,1962. Translation in Soviet Physics-Doklady 7 (1963), pp. 595–596.

[17] J. Kleinberg and E. Tardos. Algorithm design. Addison-Wesley, 2005.

[18] D. E. Knuth. The art of computer programming, volume III, Sorting andsearching. Addison-Wesley, 2nd edition, 1998.

[19] R. Ladner. On the structure of polynomial time reducibility. Journal ofthe ACM, 1975.

[20] V. I. Levenshtein. Binary codes capable of correcting deletions, insertions,and reversals. Soviet Physics Doklady, pages 707–710, 1966.

[21] S. Lloyd. Computational capacity of the universe. Physical Review Let-ters, 88(23), 2002. http://focus.aps.org/story/v9/st27.

[22] M. Magazine, G.L.Nemhauser, and L.E.Trotter. When the greedy solu-tion solves a class of knapsack problems. Operations research, 23(2):207–217, 1975.

[23] A. R. Meyer and L. J. Stockmeyer. The equivalence problem for regularexpression with squaring requires exponential time. In Proc. 12th IEEESymposium on Switching and Automata Theory, pages 125–129, 1972.

[24] A. Schonhage and V. Strasse. Schnelle multiplikation grosser zahlen.Computing, 7:281–292, 1971.

[25] M. Sipser. The history and status of the P versus NP question. In Proce-edings of the 24th Annual ACM Symposium on the Theory of Computing,pages 603–619, 1992.

[26] M. Sipser. Introduction to the theory of computation. Thomson, 2006.

[27] L. V. Toscani and P. A. S. Veloso. Complexidade de Algoritmos. EditoraSagra Luzzatto, 2a edition, 2005.

[28] A. M. Turing. On computable numbers with an application to the ents-cheidungsproblem. Proc. London MathSoc., 2(42):230–265, 1936.

234

Page 237: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Bibliografia

[29] P. M. B. Vitanyi and L. Meertens. Big omega versus the wild functions.SIGACT News, 16(4), 1985.

[30] J. Vitter and P. Flajolet. Handbook of theoretical computer science, vo-lume A: Algorithms and complexity, chapter Average-case analysis ofalgorithms and data structures. MIT Press, 1990.

[31] J. Wang. Advances in Algorithms, Languages, and Complexity - In Ho-nor of Ronald V. Book, chapter Average-Case Intractable NP Problems.Kluwer, 1997.

235

Page 238: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes
Page 239: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Indice

DSPACE, 180DTIME, 180NP, 186NSPACE, 180NTIME, 180Ω (Notacao), 21PSPACE, 180Πn, 202P, 180, 186Σn, 202Θ (Notacao), 21 (relacao de crescimento), 25FP, 186PF, 186ω (Notacao), 21≺ (relacao de crescimento), 25 (relacao de crescimento), 25 (relacao de crescimento), 25 (relacao de crescimento), 25arvore

binaria, 109de busca, 109espalhada mınima, 77

APX, 155NPO, 154PO, 154BHALT, 188

ABB-OTIMA (algoritmo), 112absorcao (de uma funcao), 25adjacencia

de vertices, 217AEM-Kruskal (algoritmo), 80

AEM-Prim (algoritmo), 80, 81alfabeto, 171algoritmo

de aproximacao, 149de Karatsuba, 228guloso, 73PrefixTree, 90

algoritmo ε-aproximativo, 154algoritmo r-aproximativo, 155all pairs shortest paths, 82aproximacao

absoluta, 154relativa, 154

aresta, 217atribuicao, 36, 39aval (funcao de complexidade), 32

bottom-up, 95Bubblesort (algoritmo), 41, 52Busca binaria (algoritmo), 46Busca em Largura (algoritmo), 47Busca sequencial (algoritmo), 44,

50Busca1 (algoritmo), 34, 50

cache, 95caminho, 217Caminho Hamiltoniano, 49caminho mais curto

entre todas pares, 82entre um no e todos outros, 82

certificado, 186ciclo, 217

237

Page 240: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Indice

euleriano, 18hamiltoniano, 18

classe de complexidade, 180cobertura por vertices, 149coloracao mınima, 87complexidade

media, 33, 49otimista, 35pessimista, 33

componenteconjuntiva, 36, 37disjuntiva, 36, 40

composicionalidade, 36condicional, 36, 40conjunto compatıvel de intervalos,

83conjunto independente, 85

maximo (problema), 85Cook, Stephen Arthur, 195CopiaMTI (algoritmo), 212corte, 78cota assintotica superior, 20Counting-Sort (algoritmo), 45custo (funcao de custos), 32

desemp (funcao de desempenho), 32Dijkstra, Edsger, 83distancia de Levenshtein, 100distribuicao, 216divisao e conquista, 56, 117

Eliminacao de Gauss (algoritmo),11

espaco amostral, 216espaco-construtıvel, 179Euler, Leonhard, 18evento, 216

elementar, 216exec (funcao de execucao), 32

formula de Stirling, 209

fatorial, 209Flajolet, Philippe, 50Floyd, Robert W, 113Floyd-Warshall (algoritmo), 113funcao

de complexidade (aval), 32de custos (custo), 32de desempenho (desemp), 32de execucao (exec), 32

grafo, 47, 217k-partido, 142bipartido, 142conexo, 18, 77de intervalo, 86direcionado, 217nao-direcionado, 18perfeito, 142

Hamilton, Sir William Rowan, 18hierarquia polinomial, 202Hoare, Charles Anthony Richard,

55

independent set, 85inducao natural, 214inversao, 53

tabela de, 55iteracao

definida, 36, 39indefinida, 36, 39

Karatsuba, Anatolii Alekseevitch,228

Kruskal, Joseph Bernard, 79

Levensthein, Vladimir Iosifovich, 100Levin, Leonid, 195linearidade do valor esperado, 217linguagem, 171logaritmo, 209Loteria Esportiva (algoritmo), 45

238

Page 241: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Indice

maquina de RAM, 31maquina de Turing, 173

determinıstica, 175nao-determinıstica, 175

Maximo (algoritmo), 43, 54metodo

da substituicao, 119, 120de arvore de recursao, 119, 125mestre, 119, 127

maximum independent set (problema),85

maximum Knapsack, 114memoizacao, 95Mergesort, 17

recorrencia, 119mochila maxima, 114Multiplicacao de matrizes, 17, 48,

105algoritmo de Coppersmith-Winograd,

48algoritmo de Strassen, 48, 133

multiplicacao de numeros (algoritmo),228

numero cromatico, 142numero de clique, 142numero Fibonacci, 93numeros harmonicos, 210notacao assintotica

Ω, 21Θ, 21ω, 21O, 19o, 21

O (notacao), 19o (Notacao), 21ordenacao

Bubblesort, 41por insercao direta (algoritmo),

42, 52

Quicksort, 55

palavra, 171Parada nao-determinıstico em k pas-

sos, 49particionamento

de intervalos, 86, 87de um vetor, 56

Partition (algoritmo), 56PD-matrizes, 104potenciacao, 128PrefixTree (algoritmo), 90Prim, Robert C., 79probabilidade, 216problema

completo, 187de avaliacao, 153de construcao, 153de decisao, 153difıcil, 187

problema de otimizacao, 153programacao dinamica, 93, 108

Quicksort (algoritmo), 55, 58

recorrenciasimplificar, 119

reducao, 187relacao

polinomialmente limitada, 154,186

relacao de crescimento, 25, 25≺, 25, 25, 25, 25

serie aritmetica, 212serie geometrica, 212Savitch, Walter J., 183

239

Page 242: Algoritmos e complexidade Notas de aula - UFRGSmrpritt/lib/exe/fetch.php?media=cmp155:ca-notas... · Algoritmos e complexidade Notas de aula Marcus Ritt Luciana Buriol Edson Prestes

Indice

sequencia, 36, 37sequenciamento

de intervalos (algoritmo), 84de intervalos (problema), 83

single-source shortest paths, 82somatorio, 211straight insertion sort (algoritmo),

42, 52Strassen, Volker, 133subestrutura otima, 75subgrafo, 217

induzido, 217subsequencia, 96subsequencia comum mais longa, 96

tabela de inversoes, 55tam (tamanho de entradas), 32tempo-construtıvel, 179teorema de Savitch, 183tese de Cobham-Edmonds, 8top-down, 95transposicao, 53troca mınima (algoritmo), 74Turing, Alan Mathison, 172

vertice, 217valor esperado, 217variavel aleatoria, 217vertex cover, 149Vinogradov, I. M., 25

notacao de, 25Vitter, Jeffrey Scott, 50vizinhanca, 217

Warshall, Stephen, 113

240