Matemática Discreta
ESTiG\IPB
Cap3. Princípios Elementares de Contagem
pg 10
Algoritmos para Gerar Permutações e Combinações em Ordem
Lexicográfica
Algoritmo: conjunto de instruções cuja execução, numa ordem préestabelecida, conduz à realização de uma tarefa (um cálculo,
por exemplo).
Léxico: Conjunto de palavras de uma linguagem.
Ordem Lexicográfica. Consideremos as sequências construídas com
símbolos de um dado conjunto ordenado (por exemplo,
sequências de letras do alfabeto, com a ordenação normal que
lhes está associada, primeiro o a, depois b, c, d, etc). Ordenar as
sequências por ordem lexicográfica, corresponde a ordená-las
como as palavras de um dicionário.
Exemplos
Consideremos a ordenação a < b < c < d …, das letras do
alfabeto. Podemos escrever
beta < beto,
aa < aaa [acrescentam-se espaços à direita da
palavra mais curta, de modo que as duas
fiquem com igual comprimento; o espaço
é considerado o “menor” símbolo do
alfabeto],
ESTiG/IPB
Departamento de Matemática
Mário Abrantes
http://www.ipb.pt/~mar
Matemática Discreta
ESTiG\IPB
Cap3. Princípios Elementares de Contagem
pg 11
rita < rute
ana < anabela.
GERAR PERMUTAÇÕES POR ORDEM LEXICOGRÁFICA
Considere o seguinte problema: escrever em ordem lexicográfica
todas as permutações possíveis dos dígitos 1,2,3,4.
Representemos as permutações pelos números de quatro dígitos
que lhes correspondem: 1234, 1342, etc. Observemos o seguinte:
- o menor número que se pode escrever é 1234;
- o maior número que se pode escrever é 4321;
- percorrendo o maior número da direita para a esquerda
verificamos que cada dígito é maior que o que está à sua
direita;
- quando isto não acontece, ao percorrermos uma
permutação da direita para a esquerda, então essa
permutação não corresponde ao maior número possível.
Podemos resolver o problema do seguinte modo:
A. Escrevemos o menor número, 1234.
B. Percorremos o número da direita para a esquerda,
comparando pares sucessivos de dígitos. Se em alguma
dessas comparações o dígito da esquerda for menor que o
da direita, faz-se o seguinte, considerando apenas o
conjunto dos dígitos já comparados:
- seja p a posição do referido dígito da esquerda;
ESTiG/IPB
Departamento de Matemática
Mário Abrantes
http://www.ipb.pt/~mar
Matemática Discreta
ESTiG\IPB
Cap3. Princípios Elementares de Contagem
pg 12
- coloca-se na posição p do dígito da esquerda o
dígito que lhe for imediatamente superior, de
entre todos os já comparados;
- os restantes elementos do conjunto dos dígitos já
comparados escrevem-se então à direita da
posição p, por ordem crescente.
C. Repete-se este algoritmo desde o passo B, até se obter o
número 4321.
[ver exemplos em vídeo]
Complete a resposta anterior: 1234, 1243, 1324, ….
Generalizando: se quisermos escrever em ordem lexicográfica
todas as permutações de n objectos distintos, o1 , o 2 ,  , o n , nos
quais está definida uma ordenação o1  o 2    o n , procedemos
do seguinte modo (si é o símbolo na posição i):
A. Percorrer a sequência s1s 2  s n da direita para a
esquerda, comparando pares de símbolos consecutivos,
até se encontrar um par de símbolos s k s k 1 tal que
s k  s k 1 (se não existir um par de símbolos nestas
condições, então terminar), e fazer o seguinte:
- trocar a posição do símbolo s k com a do menor
símbolo à sua direita que seja maior que s k ;
- ordenar em seguida, por ordem crescente, todos os
símbolos à direita da posição k; a sequência obtida é
uma permutação.
ESTiG/IPB
Departamento de Matemática
Mário Abrantes
http://www.ipb.pt/~mar
Matemática Discreta
ESTiG\IPB
Cap3. Princípios Elementares de Contagem
pg 13
B. Repetir o passo A com a nova permutação obtida.
[ver exemplos em vídeo]
GERAR COMBINAÇÕES POR ORDEM LEXICOGRÁFICA
Considere o seguinte problema: escrever por ordem lexicográfica
todas as combinações de 3 dígitos que se podem obter com os
dígitos 1,2,3,4,5.
Representemos as combinações pelos números que se obtêm,
colocando os dígitos respectivos por ordem crescente (123, 234,
etc). Note que 123 é o menor número e 345 o maior número que é
possível obter com combinações de 3 dígitos.
Podemos resolver o problema do seguinte modo:
A. Começar com a combinação 123.
B. Depois,
- escrever todos os números que se obtêm fazendo o terceiro
símbolo (a contar da esquerda) tomar os valores de 4 até ao
máximo, que é 5:
124
125;
- uma vez obtida a combinação com o maior símbolo possível
na terceira posição, escrever na segunda posição o símbolo
imediatamente superior a 2, neste caso o 3; escrever na
terceira posição o símbolo imediatamente superior a 3,
neste caso o 4:
134,
e repetir os passo anteriores até o símbolo na segunda
posição ser 4 (não pode ser maior; porquê?):
ESTiG/IPB
Departamento de Matemática
Mário Abrantes
http://www.ipb.pt/~mar
Matemática Discreta
ESTiG\IPB
Cap3. Princípios Elementares de Contagem
pg 14
135
145.
- escrever agora na primeira posição o símbolo 2 (que é o
símbolo imediatamente superior a 1), escrever na segunda
posição o 3 (que é o símbolo imediatamente superior a 2), e
na terceira posição o símbolo imediatamente superior a 3 (
o 4):
234
C. Repetir este algoritmo desde B, até se obter a combinação 345.
235
245
345.
Obtiveram-se as 10 combinações possíveis.
Generalizando: se quisermos escrever em ordem lexicográfica
todas as combinações r a r, de n objectos distintos, o1 , o 2 ,  , o n ,
entre os quais está definida uma ordenação o1  o 2    o n ,
procedemos do seguinte modo:
A. Começar por escrever a combinação o1 , o 2 ,  , o r ;
B. Para encontrar a combinação seguinte:
- percorrer a sequência da direita para a esquerda, até
encontrar uma posição k com um símbolo Oi < On que possa
ser substituído pelo que lhe é imediatamente superior, Oi+1;
- nesta posição, k, substitui-se o símbolo Oi pelo símbolo Oi+1;
ESTiG/IPB
Departamento de Matemática
Mário Abrantes
http://www.ipb.pt/~mar
Matemática Discreta
ESTiG\IPB
Cap3. Princípios Elementares de Contagem
pg 15
- nas posições k+1, k+2, … , (a contar da esquerda), colocamse em crescendo os símbolos Oi+2, Oi+3, … , até formar uma
sequência de r símbolos;
C. Se a sequência já contiver os r maiores símbolos, então terminar.
Senão, determinar a próxima combinação executando o
algoritmo a partir do passo B com a sequência até aqui obtida.
ESTiG/IPB
Departamento de Matemática
Mário Abrantes
http://www.ipb.pt/~mar
Download

Parte3