Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Topicos em Algoritmos
Andre Guedes
31 de agosto de 2017
Sumario
1 Aulas 1
2 Introducao 2
3 Problemas Computacionais e Algoritmos 4
3.1 Definicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Correcao e eficiencia . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Classes de problemas . . . . . . . . . . . . . . . . . . . . . . . 5
3.4 Classes de algoritmos . . . . . . . . . . . . . . . . . . . . . . . 6
4 Espaco de Busca e Enumeracao 7
5 Backtracking 8
6 Algoritmos gulosos 9
7 Programacao dinamica 10
7.1 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.2 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8 Branch-and-bound 11
9 Processamento de textos 12
10 Trabalhos 13
A Problemas 14
A.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
i
A.2 Espaco de Busca e Enumeracao . . . . . . . . . . . . . . . . . 17
A.3 Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
A.4 Algoritmos Gulosos . . . . . . . . . . . . . . . . . . . . . . . . 21
A.5 Programacao Dinamica . . . . . . . . . . . . . . . . . . . . . . 22
A.5.1 Outros problemas . . . . . . . . . . . . . . . . . . . . . 22
ii
Capıtulo 1
Aulas
1. 03/08/2017 - introducao (problemas, algoritmos etc) e subsequenciamaxima (e variacoes)
1
Capıtulo 2
Introducao
Objetivo:
Tratar de assuntos referentes a algoritmos avancados com analises, im-plementacoes e testes para que os alunos tenham mais pratica no de-senvolviento e analise de algoritmos.
Avaliacao:
Trabalhos praticos de analise e implementacao. Serao 5 ou 6 trabalhos.
Programa:
• Problemas Computacionais e Algoritmos
– Definicoes,
– Complexidade Computacional
– Classes de Problemas,
– Classes de Algoritmos;
– Correcao e Eficiencia,
• Espaco de Busca e Enumeracao
• Tecnicas de Algoritmos
– Backtracking;
– Algoritmos gulosos;
– Programacao dinamica;
– Branch-and-bound;
2
– Dividir e Conquistar;
• Exemplos de problemas e solucoes.
Metodologia:
• Aulas teoricas sobre algoritmos e analise.
• Leitura de trechos de livros e artigos.
• Trabalhos praticos.
Ver problemas 1, 2 e 3.
3
Capıtulo 3
Problemas Computacionais eAlgoritmos
3.1 Definicoes
Um problema computacional e um problema que pode ser formuladocomo uma relacao entre um conjunto de entradas e um conjunto de saıdas.Nesta relacao cada entrada (instancia) do problema tem um conjunto depossıveis saıdas (respostas) associadas. Por exemplo, o problema de encon-trar o mınimo elemento de um vetor. Para cada vetor dado como entrada,as saıdas validas sao os elementos que sao mınimos.
Um problema computacional, portanto, e um problema estabelecido poruma descricao de suas possıveis “entradas” e suas respectivas “saıdas”.
Cada possıvel “entrada” de um problema computacional e chamada deuma instancia do problema. Uma saıda correspondente a uma instancia doproblema e chamada de resposta daquela instancia.
Para ajudar, considere a seguinte definicao.
Definicao 1. Dados a, b ∈ Z, o intervalo inteiro de a a b e o conjunto [a..b]dos inteiros entre a e b, isto e,
[a..b] = {z ∈ Z | a ≤ z ≤ b}.
Exemplo 1.
Mınimo de Vetor (minv)
Instancia: (v, a, b), onde v e um vetor indexado por [a..b], com a ≤ b.Resposta: um ındice m ∈ [a..b] tal que v[m] ≤ v[i] para todo i ∈ [a..b].
4
Se v e dado por
i 1 2 3 4 5 6 7v[i] 16 23 4 42 15 8 4,
entao
• (v, 1, 7) e uma instancia do problema Mınimo de Vetor. 3 e 7 sao res-postas para a instancia (v, 1, 7) do problema Mınimo de Vetor.
• (v, 4, 6) e uma instancia do problema Mınimo de Vetor e 6 e uma res-posta para a instancia (v, 4, 6) do problema Mınimo de Vetor.
Uma solucao de um problema computacional e um algoritmo que recebeuma instancia em devolve uma resposta valida. Cada problema computaci-onal pode ter diversas solucoes.
Os problemas computacionais modelam problemas reais e as implementacoesdos algoritmos, que sao solucoes destes problemas, sao as aplicacoes computa-cionais dos problemas reais. Portanto, estudar os problemas computacionaise suas solucoes e uma atividade importante para quem quer ajudar a resolverproblemas reais com o auxılio de computadores.
3.2 Correcao e eficiencia
Para que uma aplicacao computacional tenha sucesso e preciso que oalgoritmo que ela implementa seja de fato uma solucao do problema emquestao e que seja eficiente. Alem disso e esperado que o algoritmo estejacorretamente implementado.
Esta ultima questao nao e assunto para este texto e esta mais relacionadacom outras areas da computacao. Entretanto nao pode ser ignorada.
As duas primeiras questoes, que chamaremos simplesmente de corretudee eficiencia, sao parte do nosso estudo de problemas computacionais e algo-ritmos.
3.3 Classes de problemas
Existem diversos tipos de problemas computacionais e eles sao classifica-dos por diversos criterios. Os criterios que nos interessam por ora sao: tipo(e tamanho) do conjunto de solucoes (contra-domınio da relacao binaria);
5
3.4 Classes de algoritmos
6
Capıtulo 4
Espaco de Busca e Enumeracao
Ver problemas 4 e 5.
intervalos proprios - http://www2.kobe-u.ac.jp/~saitoh/pub/2009-02-walcom.pdf
bipartite permutation graphs - http://www2.kobe-u.ac.jp/~saitoh/
pub/2009-12-isaac.pdf
permutacoes - https://en.wikipedia.org/wiki/Heap’s_algorithm -http://www4.uwsp.edu/math/nwodarz/Math209Files/209-0809F-L10-Section06_
03-AlgorithmsForGeneratingPermutationsAndCombinations-Notes.pdf
- https://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations
7
Capıtulo 5
Backtracking
8
Capıtulo 6
Algoritmos gulosos
escrever as descricoes dos problemas.
mochila (caso particular), moedas (caso particular), intervalos sem inter-seccao, ainda moedas (porque e quando funciona), bin packing, Codigo deHuffmann.
9
Capıtulo 7
Programacao dinamica
escrever as descricoes dos problemas.
(*) There is an ordering on the subproblems, and a relation thatshows how to solve a subproblem given the answers to “smaller”subproblems, that is, subproblems that appear earlier in the or-dering. ([p. 171] Dasgupta, Papadimitriou, and Vazirani. 2006.Algorithms (1 ed.). McGraw-Hill, Inc., New York, NY, USA.)
7.1 Problemas
Multiplicacao de matrizes.
Moedas com quaisquer valores.
Distancia de edicao.
Mochila - O(nW )
7.2 Links
1. https://www.topcoder.com/community/data-science/data-science-tutorials/
dynamic-programming-from-novice-to-advanced/
2. https://www.cs.berkeley.edu/~vazirani/algorithms/chap6.pdf
Ver problemas 24 e 25
10
Capıtulo 8
Branch-and-bound
11
Capıtulo 9
Processamento de textos
12
Capıtulo 10
Trabalhos
1. Submatriz maxima de zeros (Problema 3).
2. Backtracking: Set Cover (Problema 14).
3. Revisao bibliografica: dar um problema e os alunos buscam solucoes(de um determinado tipo) na rede. Problema ainda nao definido.
4. Enumeracao: permutacoes bipartidas conexas, subconjuntos de tama-nho k de um conjunto X e arranjos de tamanho k de um conjuntoX.
5. Apresentacoes sobre dois problemas: Sequenciamento de texto e Or-denacao de conjuntos consecutivos (Problemas 31 e 30).
13
Apendice A
Problemas
Aqui segue uma lista com alguns problemas computacionais para seremtrabalhados pelos alunos da disciplina de Topicos em Algoritmos (CI811) doPrograma de Pos-Graduacao em Informatica da UFPR.
Esta lista ainda nao esta completa e pode ser alterada.
Alguns problemas sao simples e tem o objetivo de apresentar diferentestecnicas, outros sao mais difıceis.
(...)
A.1 Introducao
1. [default,pr:subseqmax0]Subsequencia Maxima de ’0’s
Dada uma sequencia de n ’0’s e ’1’s, Sn = (d1, d2, . . . , dn), queremosencontrar uma subsequencia (consecutiva) maxima composta somentede ’0’s, ou seja, encontrar m e k tais que di = 0, para m ≤ i ≤ m+k−1e k seja maximo.
Subsequencia Maxima de ’0’s (subseqmax)
Instancia: Sequencia de ’0’s e ’1’s de tamanho n, Sn = (d1, d2, . . . , dn).Resposta: m e k tais que di = 0, para m ≤ i ≤ m+ k − 1 e k seja
maximo.
Um problema mais simples e o problema de, dados uma sequencia e
14
um k, encontrar uma subsequencia com exatos k ’0’s consecutivos.
Subsequencia de tamanho k de ’0’s (subseqk)
Instancia: Sequencia de ’0’s e ’1’s de tamanho n, Sn = (d1, d2, . . . , dn) einteiro k.
Resposta: m tal que di = 0, para m ≤ i ≤ m+ k − 1 ou “nao”, casonao exista tal m.
Resposta: Seja M : N → N, representando o tamanho da maiorsubsequencia de ’0’s comecando em di, definida por:
M(i) =
{0, se i 6∈ [1..n] ou di 6= 0,
M(i+ 1) + 1, se i ∈ [1..n] e di = 0.
E seja R : N→ N, representando o tamanho da maior subsequencia de’0’s da sequencia que comeca em di, definida por:
R(i) =
{0, se i 6∈ [1..n],
max{M(i), R(i+ 1)}, se i ∈ [1..n].
2. [default,pr:subsqmaxcrescente]Subsequencia Maxima Crescente
Dada uma sequencia de n numeros inteiros, Sn = (d1, d2, . . . , dn), que-remos encontrar uma subsequencia (consecutiva) maxima crescente, ouseja, encontrar m e k tais que di < di+1, para m ≤ i ≤ m + k − 2 e kseja maximo.
Subsequencia Maxima Crescente (subseqmaxcresc)
Instancia: Sequencia de ’0’s e ’1’s de tamanho n, Sn = (d1, d2, . . . , dn).Resposta: m e k tais que di < di+1, para m ≤ i ≤ m+ k − 2 e k seja
maximo.
Resposta:
3. [default,pr:submatmax0]Submatriz Maxima de ’0’s
Dada uma matriz n×m de ’0’s e ’1’s,
A =
a1,1 a1,2 · · · a1,ma2,1 a2,2 · · · a2,m· · · · · · · · · · · ·an,1 an,2 · · · an,m
15
queremos encontrar uma submatriz (consecutiva) maxima compostasomente de ’0’s, ou seja, encontrar p, q, r e s tais que ai,j = 0, parap ≤ i ≤ p+ r − 1, q ≤ j ≤ q + s− 1 e r × s seja maximo.
Submatriz Maxima de ’0’s (submatmax)
Instancia: Matriz n×m de ’0’s e ’1’s, [ai,j].Resposta: p, q, r e s tais que ai,j = 0, para p ≤ i ≤ p+ r − 1,
q ≤ j ≤ q + s− 1 e k × l seja maximo.
Resposta:
16
A.2 Espaco de Busca e Enumeracao
4. [default,pr:passeiocavalo]Passeio do cavalo
Dado um tabuleiro n×n, sera possıvel que um cavalo de xadrez (usandoseus movimentos validos) poderia sair da casa na linha 1, coluna 1passar por todas as outras casas, sem repetir nenhuma e voltar aoinıcio?
Passeio do cavalo de xadrez (cavalo)
Instancia: Um inteiro n.Resposta: Se e possıvel um passeio do cavalo, usando apenas seus
movimentos de xadrez, em um tabuleiro n× n, que passepor todas as casas sem repetir e volte para a primeira.
Resposta:
5. [default,pr:mochila]Problema da Mochila
Problema da Mochila (knapsack)
Instancia: Um numero natural n, um numero real D e duas funcoes,w : {1, 2, . . . , n} → R e v : {1, 2, . . . , n} → R.
Resposta: Um conjunto X ⊆ {1, 2, . . . , n} tal que∑
i∈X w(i) ≤ D e∑i∈X v(i) seja maximo.
Resposta:
6. [default,pr:enum-subconj]Enumeracao de subconjuntos
Dado um conjunto X, como enumerar todos os seus subconjuntos?
Resposta:
opcao 1: Cada no representa um subconjunto de X.
Comece com o conjunto vazio (∅) como no raiz. Gere cada “fi-lho” de um no incluindo um unico elemento. Se os elementossao ordenados e so sao incluıdos elementos que estao a direitado ultimo incluıdo, entao nao acontecem repeticoes e temos umaarvore. Cada nıvel tem conjuntos de um tamanho.
opcao 2: Cada no representa um conjunto de subconjuntos de X.
17
Cada no i tem dois conjuntos Pi e Qi, ambos subconjuntos deX. Os subconjuntos de X representados pelo no i sao dados peloconjunto abaixo
{R = S ∪Qi | S ⊆ Pi}.
Cada no tem no maximo dois filhos (ei e di). Um elemento de Pi
e escolhido como pivo, xi. Os filhos sao gerados como se segue:
Pei = Pdi = Pi − {xi},Qei = Qi,
Qdi = Qi ∪ {xi}.
7. [default,pr:enum-perm]Enumeracao de permutacoes
Enumere todas as permutacoes de (1, 2, 3, . . . , n).
Resposta:
8. [default,pr:enum-interv]Enumeracao de intervalos proprios
Enumere todas as permutacoes de ((· · · () · · · )) - n abre parentesese n fecha parenteses - de tal forma que em qualquer prefixo tenhaum numero de abre parenteses maior ou igual que o numero de fechaparenteses.
Resposta:
9. [default,pr:enum-perm-bip-conexo]Enumeracao de permutacoes bi-partidas conexas
Uma permutacao π de um conjuntoX e uma sequencia (π(1), . . . , π(|X|)).Dizemos que uma permutacao π de {1, . . . , n} e conexa se a sequencia(π(1), π(2), . . . , π(n)) nao pode ser descrita como uma concatenacao deuma permutacao de {1, . . . , k} com uma permutacao de {(k+1), . . . , n},para algun 1 ≤ k < n.
A permutacao (3, 2, 4, 1, 6, 5) e desconexa, pois e uma concatenacao de(3, 2, 4, 1) e (6, 5) que sao, respectivamente, permutacoes de {1, 2, 3, 4}e {5, 6} (portanto k = 4).
Ja a permutacao (3, 1, 5, 2, 6, 4) e conexa. Perceba que nenhum prefixode tamanho k < 6 contem todos os numeros de 1 a k.
18
Dizemos que uma permutacao π de {1, . . . , n} e bipartida se existe umabiparticao (X, Y ) de {1, . . . , n} de forma que os elementos de cada parte(X e Y ) aparecem na ordem natural, ou seja, se (i, j ∈ X ou i, j ∈ Y )e i < j entao π−1(i) < π−1(j).
A permutacao (2, 4, 1, 3, 5, 6) e bipartida, pois X = {1, 3, 6} e Y ={2, 4, 5} formam uma biparticao de {1, . . . , 6} como descrito acima.
Enumere todas as permutacoes de (1, 2, 3, . . . , n) que sao bipartidasconexas.
Resposta:
10. [default,pr:enum-subconj-tam-k]Enumeracao de subconjuntos detamanho fixo
Dado um conjunto X e um inteiro k, enumere todos os subconjuntosde X de tamanho k. Ou seja,(
X
k
)= {S ⊆ X | |S| = k}.
Resposta:
11. [default,pr:arranjos-X-k]Enumeracao de arranjos
Dado um conjunto X e um inteiro k, um arranjo de tamanho k de Xe uma sequencia de tamanho k com elementos de X sem repeticao.
Dado um conjunto X e um inteiro k, enumere todos os arranjos detamanho k de X.
Resposta:
19
A.3 Backtracking
12. Clique;
13. Coloracao;
14. [default,pr:setcover]Cobertura por conjuntos
Cobertura por conjuntos (setcover)
Instancia: Um conjunto de n subconjuntos do conjuntoU = {1, 2, . . . ,m}, A1, A2, . . . , An.
Resposta: Um conjunto X ⊆ {1, 2, . . . , n} tal que ∪i∈XA(i) = U e |X|seja mınimo.
Resposta:
20
A.4 Algoritmos Gulosos
15. mochila (caso particular);
16. moedas (caso particular) - ainda moedas: porque e quando funciona;
17. intervalos sem interseccao;
18. bin packing;
19. Codigo de Huffmann;
21
A.5 Programacao Dinamica
20. Multiplicacao de matrizes;
21. Moedas com quaisquer valores;
22. Distancia de edicao;
23. Mochila - O(nW );
24. [default,pr:linearpartition]Linear Partition Problem (Skiena - pp294–299)
Integer Partition without Rearrangement (partition)
Instancia: An arrangement S of nonnegative numbers {s1, . . . , sn} andan integer k.
Resposta: Partition S into k or fewer ranges, to minimize themaximum sum over all the ranges, without reordering any ofthe numbers.
Resposta:
25. [default,pr:somadiscreta]Melhor sequencia de decisoes
d1, d2, . . . , dn sao decisoes, ou seja, di ∈ {p1, p2, . . . , pk}, para todo i ∈{1, 2, . . . , n}.O objetivo final e M .
Queremos que∑n
i=1 di seja o mais proximo de M possıvel, ou seja, que|M −
∑ni=1 di| seja mınimo.
Resposta:
A.5.1 Outros problemas
26. Rolos de papel (bin packing unidiensional);
22
27. 8 Rainhas (e variacoes);
28. [default,pr:emparelhamento-minmax]Emparelhamento de mınimomaior peso
Emparelhamento de mınimo maior peso (emp-minmax)
Instancia: Dois conjuntos A e B, um conjunto de pares com umelemento de cada conjunto, R, e uma funcao w : R→ N.
Resposta: Subconjunto M ⊂ R tal que max{w(e) | e ∈M} sejamınimo.
Resposta:
29. [default,pr:casamento-estavel]Casamento Estavel
Casamento Estavel (casamento)
Instancia:Resposta: Dois conjuntos, A e B, tal que |A| = |B| = n, para cada
elemento a ∈ A, uma funcao pa : {1, . . . , n} → B e, paracada elemento b ∈ B, uma funcao pb : {1, . . . , n} → A.
Conjunto M ⊆ A×B tal que nao ...
Resposta:
30. [default,pr:conjuntos-consecutivos]Ordenacao de conjuntos conse-cutivos
Dados n subconjuntos de um conjunto U , N1, N2, . . . , Nn, encontre umaordem (u1, u2, . . . , um) para os elementos de U de forma que, para 1 ≤i ≤ n, os elementos de Ni sejam consecutivos, caso seja possıvel.
Resposta:
31. [default,pr:sequenciamento]Sequenciamento de texto
Seja T uma sequencia de dıgitos decimais desconhecida. E sejam n sub-sequencias de T , P1, P2, . . . , Pn. Assumindo que as subsequencias co-brem toda a sequencia T e que existem interseccoes entre subsequencias“consecutivas”, reconstrua T , caso seja possıvel.
Exemplo:P1 = “4458790001237′′
23
P2 = “12312444587′′
P3 = “12379871234′′
Como P1 →4 P3 (o final de P1 e o inıcio de P3 coincidem em 4 dıgitos),P2 →5 P1 e P3 →1 P1, temos
T = “12312444587900012379871234′′
pela concatenacao P2 → P1 → P3, ja que a relacao P3 →1 P1 e fraca epode ser descartada.
Resposta:
32. [default,pr:reducaotransitiva]Reducao Transitiva
Reducao transitiva (redtran)
Instancia: Uma ordem parcial (X,�).
Resposta: Uma relacao binaria (X,� ) tal que o seu fecho transitivoseja igual a (X,�) e nao exista outra relacao binaria menorcom a mesma propriedade.
Resposta:
33. [default,pr:poset-to-sets]Modelo de conjuntos para ordem parcial
Modelo de conjuntos (modelconj)
Instancia: Uma ordem parcial (X,�).Resposta: Um conjunto C de conjuntos tal que a ordem parcial (C,⊆)
(ordem de inclusao de subconjuntos) seja isomorfa a ordem(X,�).
Resposta:
24