Você está na página 1de 8

M2007 – Algoritmos em Matemática Discreta Regente: Samuel Lopes

Folha de Problemas N.o 3∗ 2016/17

 Recorde que rank designa a função que a cada elemento de uma lista associa o número
de elementos que o antecedem e a cada folha de uma árvore de decisão associa o número
de folhas à sua esquerda na representação da árvore.

1. Para a árvore de decisão abaixo (construída nas aulas teóricas), liste todos os seus
vértices, exceto a raíz “−”, segundo as ordens PREV, POSV e BFV.

Resposta: PREV: C, CC, CCV, CCVC, CCVCC, CCVCV, CV, CVC, CVCC, CVCCV,
CVCV, CVCVC, V, VC, VCC, VCCV, VCCVC, VCV, VCVC, VCVCC, VCVCV.
POSV: CCVCC, CCVCV, CCVC, CCV, CC, CVCCV, CVCC, CVCVC, CVCV, CVC,
CV, C, VCCVC, VCCV, VCC, VCVCC, VCVCV, VCVC, VCV, VC, V.
BFV: C, V, CC, CV, VC, CCV, CVC, VCC, VCV, CCVC, CVCC, CVCV, VCCV,
VCVC, CCVCC, CCVCV, CVCCV, CVCVC, VCCVC, VCVCC, VCVCV.
2. Seja rankL a função rank relativamente à ordem lexicográfica e rankI a função rank
relativamente à ordem de inserção para permutações de Sn . Responda às seguintes
questões, justificando:
(a) Determine as permutações σ ∈ Sn com rankL (σ) = rankI (σ), nos casos n = 3
e n = 4. Resposta: Para n = 3 as permutações nas condições pedidas são
σ = 123, 132 e 321; para n = 4 são as permutações σ = 1234, 1243 e 4321.
(b) Determine rankL (2314) e rankL (45321). Resposta: rankL (2314) = 8 e rankL (45321) =
95. Por exemplo o valor de rankL (45321) pode ser obtido pela seguinte soma:
4! × 3 + 3! × 3 + 2! × 2 + 1! × 1 = 95.
(c) Determine rankI (2314) e rankI (45321). Resposta: rankI (2314) = 16 e rankI (45321) =
118. Por exemplo o valor de rankI (45321) pode ser obtido calculando primeiro
rankI (4321) = 4! − 1 e observando que rankI (45321) = rankI (4321) × 5 + 3 = 118.

Exercícios baseados na tradução dos exercícios do livro Mathematics for Algorithm and Systems Analysis,
de E.A. Bender e S.G. Williamson, Dover.
Folha de Problemas N.o 3 M2007 – Algoritmos em Matemática Discreta

(d) Determine a permutação σ ∈ S4 tal que rankL (σ) = 15.


Resposta: rankL (3241) = 15.
(e) Determine a permutação σ ∈ S4 tal que rankI (σ) = 15.
Resposta: rankI (4213) = 15.
(f) Determine a permutação σ ∈ S5 tal que rankL (σ) = 15.
Resposta: rankL (14352) = 15.

3. Construa uma árvore de decisão que liste todas as palavras de comprimento 6 formadas
com as letras A e B, satisfazendo as seguintes condições:

• Não há A’s adjacentes.


• Não há três B’s adjacentes.
• As folhas da árvore ocorrem pela ordem lexicográfica.

Resposta:

A lista das palavras em ordem lexicográfica é: ABABAB, ABABBA, ABBABA, AB-


BABB, BABABA, BABABB, BABBAB, BBABAB, BBABBA.

4. Construa uma árvore de decisão que liste todas as funções (estritamente) decrescentes
em [6][4] de forma a que as suas folhas ocorram por ordem lexicográfica, quando enu-

2 2016/17
M2007 – Algoritmos em Matemática Discreta Folha de Problemas N.o 3

meradas da esquerda para a direita.


Resposta:

As funções são identificadas com as folhas da árvore, obtendo-se lendo as etiquetas dos
vértices da raíz até à folha correspondente.

(a) Determine rank(5431) e rank(6531).


Resposta: rank(5431) = 3 e rank(6531) = 10.
(b) Qual é a função f com rank(f ) = 0? E a função g com rank(g) = 7?
Resposta: f = 4321 e g = 6431.
(c) A árvore de decisão construída deve conter a árvore de decisão para as funções
decrescentes em [5][4] . Indique-a e use-a para enumerar essas funções por ordem
lexicográfica. Resposta: Essa sub-árvore é a que corresponde às primeiras 5 folhas
da árvore inicial.
(d) Indique de que forma é que todas as partes deste exercício podem ser interpretadas
em termos de subconjuntos de um conjunto. Resposta: A correspondência que a
cada função estritamente decrescente em [6][4] associa a sua imagem, estabelece
uma bijeção entre o conjunto dessas funções e o conjunto dos subconjuntos de [6]
com [4] elementos.

5. Modifique o algoritmo estudado para a listagem das folhas de uma árvore de decisão
pela ordem depth-first, de forma a obter um algoritmo que liste todos os vértices da
árvore pela ordem PREV. Repita o exercício para a ordem POSV.
Resposta: Para listar pela ordem PREV e POSV, omitir o Passo 2. No caso PREV,
iniciar o Passo 3 com a instrução “Se não foi usada nenhuma aresta que descende do
vértice em que estamos, listamos o vértice.” No caso POSV, modificar o Passo 3 da
seguinte forma: “Se não há arestas não usadas que saem do vértice onde estamos para
os seus descendentes, listamos o vértice e prosseguimos para o Passo 4; caso contrário
prosseguimos para o Passo 5.”

2016/17 3
Folha de Problemas N.o 3 M2007 – Algoritmos em Matemática Discreta

6. Neste exercício vamos estudar coberturas de um tabuleiro de dimensões m × n com


peças de dominó 1 × 2, em que cada dominó pode ser disposto de forma horizontal
(h = 1 × 2) ou vertical (v = 2 × 1), cobrindo exatamente duas posições do tabuleiro. O
objetivo é cobrir todas as peças do tabuleiro m × n de forma a que cada posição fique
coberta por um e um só dominó (e portanto sem haver peças de dominó sobrepostas).
Exemplo: No caso m = 3 e n = 4 temos as seguintes hipóteses:

Uma cobertura por dominós de um tabuleiro pode ser completamente descrita por uma
sequência de h’s e v’s (no caso de um tabuleiro 3 × 4 são necessários 6 símbolos porque
3 × 4 = 12 e cada dominó ocupa 2 posições). Se convencionarmos que as entradas
do tabuleiro são ordenadas de cima para baixo e depois da esquerda para a direita,
então por exemplo a sequência hhvhvh associada a um tabuleiro 3 × 4 corresponde à
disposição com um dominó horizontal a começar na primeira entrada livre do tabuleiro:

3 4

5 6 7 8

9 10 11 12

depois uma peça horizontal na nova primeira entrada livre do tabuleiro:

5 6 7 8

9 10 11 12

depois uma peça vertical na nova primeira entrada livre:

6 7 8

10 11 12

depois uma peça horizontal na nova primeira entrada livre:

4 2016/17
M2007 – Algoritmos em Matemática Discreta Folha de Problemas N.o 3

10 11 12

depois uma peça vertical na nova primeira entrada livre:

10 11

e finalmente uma peça horizontal, obtendo-se a seguinte cobertura:

Observe-se que nem todas as sequências de 6 h’s e v’s correspondem a coberturas de


um tabuleiro 3 × 4. Por exemplo, a sequência hhhhhv não corresponde a nenhuma
cobertura.

(a) Construa uma árvore de decisão que permita obter todas as coberturas com dom-
inós de um tabuleiro 3 × 4, confirmando que há de facto exatamente 11 possibili-
dades.
Resposta:

(b) Dizemos que duas coberturas de um tabuleiro são isomorfas se uma se puder
obter da outra por rotação ou reflexão. Determine o conjunto das coberturas de
um tabuleiro 4 × 4 com dominós que são isomorfas à cobertura vvhvvhhh.

2016/17 5
Folha de Problemas N.o 3 M2007 – Algoritmos em Matemática Discreta

Resposta:

(c) Determine um conjunto de coberturas com dominós de um tabuleiro 4 × 4, duas-


a-duas não isomorfas, tal que qualquer cobertura de um tabuleiro 4 × 4 é isomorfa
a uma (e uma só) dessas coberturas.
Resposta: Por exemplo:

7. Considere em S8 a ordem lexicográfica, relativamente à notação de uma linha das


permutações.

(a) Calcule rank(87612345).


Resposta: rank(87612345) = 7 × 7! + 6 × 6! + 5 × 5! + 0 + 0 + 0 + 0 + 0 = 40 200.
(b) Determine σ ∈ S8 tal que rank(σ) = 20 160.
Resposta: 20 160 = 4 × 7! + 0, logo σ = 51234678.

8. Considere o jogo das Torres de Hanói denotado por H(8, A, B, C), em que os discos
de 1 a 8 estão numerados do menor para o maior, como é usual. Suponha que a haste
A tem os discos 6, 5, 2, 1; que a haste B não tem nenhum disco; que a haste C tem os
discos 8, 7, 4, 3. Neste exercício, designamos esta configuração por configuração básica.

(a) Qual é o caminho na árvore de decisão para H(8, A, B, C) que corresponde à


configuração básica? Resposta: É o caminho dado pela sequência de vértices
H(8, A, B, C), H(7, B, A, C), H(6, A, B, C), H(5, A, C, B), H(4, A, B, C), H(3, B, A, C),
3
B → C.
(b) Qual foi a jogada que originou a configuração básica, e qual era a configuração do
3
jogo antes dessa jogada? Resposta: A última jogada foi B → C e a configuração
anterior era A : 6, 5, 2, 1; B : 3; C : 8, 7, 4.
(c) Qual foi a jogada anterior à que originou a configuração básica e qual era a
1
configuração do jogo antes dessa jogada? Resposta: A jogada anterior foi C → A
e a configuração antes dessa jogada era A : 6, 5, 2; B : 3; C : 8, 7, 4, 1.
(d) Qual será a próxima jogada depois da que originou a configuração básica?
3 1
Resposta: A seguir à jogada B → C faz-se a jogada A → B.
(e) Qual é o rank, na lista de todas as jogadas em H(8, A, B, C), da jogada que
originou a configuração básica? Resposta: O rank da folha correspondente a essa
jogada é 27 + 26 + 23 + (22 − 1) = 203.

6 2016/17
M2007 – Algoritmos em Matemática Discreta Folha de Problemas N.o 3

−−−−→
9. Considere-se a lista GRAY(9).
(a) Qual é o elemento que precede 110010000? e o que sucede 110010000?
−−−−→
Resposta: Analisando a árvore de decisão para GRAY(9), observamos que a úl-
tima aresta correspondente à sequência 110010000, com a etiqueta 0, descende
para a direita (porque é precedida de um número ímpar de 1’s). Logo a sequência
anterior é a que se obtém prosseguindo para a esquerda, com a etiqueta 1, na úl-
tima aresta, o que corresponde à sequência 110010001. Para obter a sequência que
sucede 110010000, observamos que a última aresta que descende para a esquerda
no caminho associado a esta sequência é a correspondente ao 0 que antecede o
último 1, logo a sequência que sucede 110010000 é da forma 1101 · · · . Uma vez
que se trata de um código de Gray, as duas sequências não podem diferir em mais
nenhuma posição e assim concluímos que o sucessor é 110110000.
−−−−→
(b) Qual é o primeiro elemento da segunda metade da lista GRAY(9)?
−−−−→
Resposta: O primeiro elemento da segunda metade da lista GRAY(9) corresponde
ao caminho na respetiva árvore de decisão cuja primeira aresta descende para a
direita e cujas arestas seguintes descendem para a esquerda. Logo esse elemento
é 110000000.
(c) Calcule rank(111111111).
Resposta: A sequência 111111111 corresponde ao caminho na árvore de decisão
−−−−→
para GRAY(9) que alterna descendo para a direita e a esquerda, iniciando com
uma aresta descendente para a direita. Se a k-ésima aresta descende para a direita,
tal corresponde a deixar 2n−k folhas para a sua esquerda. Logo rank(111111111) =
10 −1
28 + 26 + 24 + 22 + 20 = 222 −1 = 341.
−−−−→
(d) Determine o elemento S de GRAY(9) tal que rank(S) = 372.
−−−−→
Resposta: Uma possibilidade é observar que se X é um elemento de GRAY(n−1),
então rank(0X) = rank(X) e rank(1X) = 2n −1−rank(X). Assim, observando que
−−−−→
372 ≥ 28 , concluímos que S = 1X, para X em GRAY(8). Logo, rank(X) = 139.
Prosseguindo desta forma podemos concluir que S = 111001110.
10. [Este problema tem partes um pouco mais desafiantes e pode ser considerado opcional.]
Considere o jogo das Torres de Hanói com quatro hastes A, C, B, X e n discos numer-
ados de 1 a n, com raios crescentes. As regras são idênticas às do jogo usual, mas há
duas hastes auxiliares B e X. O problema consiste em transferir os n discos de A para
C usando as hastes auxiliares B e X. Seja h0n o número mínimo de jogadas necessárias
para resolver o jogo usual das Torres de Hanói com 3 hastes e n discos. Seja fn o
número mínimo de jogadas necessárias para resolver o novo jogo das Torres de Hanói
com 4 hastes e n discos.
(a) Recorde que hn = 2n −1 é o número de jogadas necessárias para resolver o jogo das
Torres de Hanói usando o algoritmo recursivo H(n, A, B, C). Mostre por indução
que h0n = hn .
(b) Calcule fn para n = 1, 2, 3, aproveitando o processo para também descrever,
sequências otimais de jogadas.

2016/17 7
Folha de Problemas N.o 3 M2007 – Algoritmos em Matemática Discreta

Vamos descrever uma estratégia recursiva para resolver o jogo das Torres de Hanói
com 4 hastes e n discos. Escolhem-se inteiros p ≥ 0 e q > 0 tais que p + q = n. Va-
mos agora descrever a estratégia G(p, q, A, B, X, C). Para executar G(p, q, A, B, X, C),
procedemos da seguinte forma:

(i) Se p = 0, então q = n. Nesse caso usamos o algoritmo H(n, A, B, C) para deslocar


os discos 1, . . . , n de A para C.
(ii) Se p > 0, escolhem-se inteiros i ≥ 0 e j > 0 tais que i + j = p. Usamos
o procedimento G(i, j, A, B, C, X) para deslocar os discos 1, 2, . . . , p para X. De
seguida, usamos H(q, A, B, C) para deslocar os discos p+1, . . . , n para C. Por fim,
usamos G(i, j, X, A, B, C) para deslocar os discos 1, 2, . . . , p para C, terminando
a transferência de discos. De todas as escolhas possíveis para i e j, escolhemos a
que minimiza o número de jogadas.

Finalmente, para deslocar os n discos, escolhemos a estratégia da forma G(p, q, A, B, X, C),


com n = p + q, que minimiza o número de jogadas. Designamos este número por sn .

(c) Quais são os casos mais simples neste algoritmo recursivo? Como é que determi-
namos os inteiros i e j que minimizam o número de jogadas? Use o método que
indicou para resolver o problema para n ≤ 6.
(d) Estabeleça uma relação de recorrência para a sucessão sn .
(e) Prove que fn ≤ minq>0 {2fn−q + hq }, com f0 = 0. Use a recursividade.

8 2016/17

Você também pode gostar