Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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:
Resposta:
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
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.
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
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
5 6 7 8
9 10 11 12
6 7 8
10 11 12
4 2016/17
M2007 – Algoritmos em Matemática Discreta Folha de Problemas N.o 3
10 11 12
10 11
(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:
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.
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:
(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