Você está na página 1de 3

Trabalho Prtico

UFMG/ICEx/DCC DCC111 Matemtica Discreta


Cincias Exatas & Engenharias 1
o
Semestre de 2014
Observaes:
1. Comece a fazer este trabalho imediatamente. Voc nunca ter tanto tempo para resolv-lo quanto agora!
2. Este um trabalho individual.
3. Data de Entrega: at 28 de abril de 2014, s 23:59 horas, ou antes. Aps essa data haver penalizao
por atraso: 2
d
, onde d o nmero de dias atrasados.
4. Linguagem de programao do trabalho: linguagem C padro.
5. O seu trabalho deve compilar e executar em alguma mquina do ambiente computacional do Departamento
de Cincia da Computao da UFMG, onde o monitor ir avali-lo. Basicamente, um ambiente utilizando
Linux ou Windows. Procure saber quais so esses ambientes.
6. Envie este trabalho para o endereo eletrnico esub.para.loureiro@gmail.com tendo como assunto
[MD 2014/1 TP: "seu nome completo"] e como anexo um arquivo zip, descrito abaixo, com o nome
TP_"SeuNomeCompleto".zip onde o string "SeuNomeCompleto" o seu nome completo sem espaos em
branco e sem acentos.
Exemplo para o aluno Zoroastro Felizardo e Sortudo:
Assunto: [MD 2014/1 TP: Zoroastro Felizardo e Sortudo]
Arquivo zip: TP_ ZoroastroFelizardoESortudo.zip
O arquivo zip deve conter trs arquivos:
(a) passeio.c: arquivo fonte a ser compilado e executado pelo monitor;
(b) leiame.txt: deve dizer qual o ambiente computacional para executar o seu TP bem como todas as
instrues necessrias;
(c) passeio.saida: arquivo de sada com os resultados solicitados neste trabalho, conforme descrito
abaixo.
Voc receber uma mensagem de conrmao da submisso. sua responsabilidade fazer sua submisso
dentro do prazo.
7. No envie arquivo executvel na sua mensagem eletrnica.
Backtracking e Contagem
Uma rea muito interessante de projeto de algoritmos quando se quer achar solues para problemas que no se
conhece uma regra xa de computao, ou seja, no se conhece um algoritmo que a partir de uma congurao
inicial determine o prximo passo a ser dado que leve soluo nal. Nesse caso, uma possvel alternativa a
tcnica de tentativa e erro, ou seja, tenta-se uma alternativa e, caso no seja vivel, deve-se desfazer os passos
executados e tenta-se um outro caminho. A partir das disciplinas de Algoritmos e Estruturas de Dados II e III,
esse paradigma computacional e outros (por exemplo, diviso-e-conquista, programao dinmica, tcnica gulosa
e branch-and-bound) sero estudados.
Algoritmos que usam a tcnica de tentativa e erro no seguem uma regra xa de computao. Em geral, os
passos em direo soluo nal so tentados e registrados numa estrutura de dados. Caso esses passos tomados
no levem soluo nal do problema, eles podem ser retirados e apagados do registro.
MD
o
2014/1 Trabalho Prtico 1
Na tcnica de tentativa e erro, a abordagem mais comum decompor o processo em um nmero nito de tarefas
parciais. Geralmente as tarefas so expressas naturalmente em termos recursivos e devem ser exploradas de forma
exaustiva (a partir daquele caminho, no existe nenhuma possibilidade que deixou de ser avaliada). A construo
de uma soluo obtida atravs de tentativas (ou pesquisas) que podem ser representadas por uma rvore de
sub-tarefas. Muitas vezes as tentativas crescem exponencialmente e, nesses casos, deve-se usar uma heurstica
para evitar a pesquisa exaustiva, no caso de estarmos interessados em uma soluo, no necessariamente a melhor
delas. Uma heurstica no garante a soluo tima mas tende a ser rpida. O objetivo aqui mostrar como
essa tcnica recursiva funciona e no heursticas, que, em geral, so dependentes do tipo de problema que se est
estudando.
A tcnica de tentativa e erro pode ser melhor explicada atravs de um exemplo: O Passeio do Cavalo (Knights
Tour). Esse um problema muito interessante que sido estudado teoricamente e existem vrios resultados publi-
cados na literatura.
Seja um tabuleiro n n com n
2
posies e um cavalo que move seguindo as regras do xadrez. O cavalo
colocado numa posio inicial (x
0
, y
0
). O objetivo do problema encontrar, se existir, um passeio do cavalo com
n
2
1 movimentos tal que todas as posies do tabuleiro so visitadas uma nica vez.
Neste problema, os oito movimentos possveis de um cavalo (identicado pelas letras A, B, C, D, E, F, G e H),
considerando um tabuleiro 55 e o cavalo posicionado inicialmente no centro desse tabuleiro, esto representados
a seguir:
Cada letra representa um movimento vlido do cavalo. Assim, o movimento G, por exemplo, signica avanar
uma coluna para a direita e descer duas linhas.
Uma possvel soluo para um tabuleiro 5 5 seria:
23 10 15 4 25
16 5 24 9 14
11 22 1 18 3
6 17 20 13 8
21 12 7 2 19
Para o exemplo acima, o cavalo, ao comear na posio indicada por 1, pode fazer qualquer um dos oito
movimentos acima. O movimento G executado e o nmero dois colocado nessa posio. A partir da segunda
casa visitada, os movimentos A, E, F, G e H levariam o cavalo uma posio inexistente e o movimento C levaria
o cavalo posio inicial, que j foi visitada. Assim, somente os movimentos B e D podem ser executados e um
deles deve ser escolhido. Esse processo deve continuar at possivelmente se chegar a uma soluo.
Objetivo: Este trabalho tem como objetivo a implementao do Passeio do Cavalo e sua avaliao. Como dado
de entrada deve ser fornecido o tamanho n do tabuleiro (4 n 6).
Como resultado, pede-se a impresso (sada) de:
1. A gerao dos Passeios do Cavalo, cada um comeando em uma das n
2
casas do tabuleiro. As casas so
numeradas sequencialmente comeando na posio (1, 1) (canto superior esquerdo do tabuleiro). Para um
tabuleiro de tamanho 5, a numerao das casas a seguinte:
MD
o
2014/1 Trabalho Prtico 2
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
2. A profundidade com que se consegue alcanar na rvore de possibilidades at a primeira vez que se chega
a uma posio que no possvel caminhar mais e deve ser feito um retrocesso. Tambm deseja-se saber o
nmero de possibilidades at esse momento. Por exemplo, para um tabuleiro 4 4, comeando na posio
(1, 1) e sempre tentando as posies na ordem de A a H, temos o seguinte passeio:
Legenda: Casa visitada no n-simo passo {Identicao dos movimentos vlidos}, sendo que o primeiro
movimento que aparece o que foi escolhido.
1 {GH} 4 {FG} 9 {E} 12 {E}
10 {H} 13 {FG} 6 {FG} 3 {DF}
5 {AH} 2 {ABH} 11 {BE} 8 {CD}
14 {} 7 {AC}
Neste caso, a primeira casa visitada (que tem o nmero 1) est no canto superior esquerdo. A partir dessa
casa, s possvel executar dois movimentos: G e H. Como o primeiro movimento escolhido, a segunda
casa visitada recebe o nmero 2 e foi alcanada executando o movimento G. Ao se chegar 14
a
casa visitada,
no possvel prosseguir. At esse momento, um limite superior para a quantidade de possibilidades, de
acordo com a regra acima, :
2 3 2 2 2 2 2 2 1 1 2 1 2 = 2
8
3 = 768.
Ao no ser possvel continuar, teramos que retornar at 13
a
casa, escolher o movimento G e tentar
prosseguir. Se ainda assim no for possvel prosseguir, teramos que retornar at 11
a
casa, escolher o
movimento E e tentar continuar. Veja que nesse exemplo s existe uma alternativa na 12
a
casa, fazendo
com seja necessrio retornar at a primeira casa onde haja mais de uma possibilidade de movimento, que
nesse momento a 11
a
casa.
MD
o
2014/1 Trabalho Prtico 3

Você também pode gostar