[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sokoban



Oi Niski,
Tudo Legal ?

Tambem "infelizmente", estou muito ocupado e sem tempo pra pensar e me 
concentrar continuamente, como gosto e como a questao merece. Entretanto, 
ontem a noite, quando cheguei em casa, pensei um pouco no problema. Vou te 
contar agora o que vi.

1)As caixas e o motor andam em um assoalho quadriculado, que pode ter uma 
forma qualquer, ao sabor do inventor do jogo e dos diversos niveis.
Podemos escolher um plano cartesiano conveniente de forma que a cada casinha 
estara associado um par ordenado (Xi,Yi) formado por numeros inteiro e 
positivos. Isto implica, claramente, que o pavimento (assoalho) por onde 
trafegam o motor e as caixas e um conjunto de pares ordenados, todos com 
coordenadas inteiras e positivas.

Seja "A" (de "A"ssoalho) este conjunto. Assim, A={conjunto dos pares 
ordenados que caracterizam univocamente as casas acessiveis do jogo de 
sokoban }

Para que possamos distinguir as casas vazias das que estao ocupadas por 
caixas e pelo motor, facamos o seguinte :

Seja C0:A -> {-1,0,1,2,3,...} uma funcao tal que :

REGRAS :

C0(x,y) = -1 se a casa (x,y) estiver vazia
C0(x,y) = 0 se a casa (x,y) contiver o motor
C0(x,y) = N se a caixa N estiver na casa (x,y)

Apos o primeiro movimento a funcao C0 muda para a funcao C1, apos o segundo 
movimento a funcao C1 muda para a funcao C2 e assim sucessivamente, sempre 
obedecendo as regras estipuladas acima. Podemos, pois, dizer, que um jogo e 
uma sequencia de funcoes C0,C1,C2,C3,...

As funcoes Cn nos permitem descrever matematicamente um jogo. Todavia, nao e 
isto que queremos. Queremos encontrar o caminho Otimo que caracteriza-se 
pela quantidade minima de passos. Para ver como e possivel isso, sejam

(X0,Y0) e (X1,Y1) dois pontos no plano cartesiano. Qual a quantidade minima 
de passos inteiros que devemos dar para, partindo de (X0,Y0) chegar a 
(X1,Y1) ? Verifique que e o numero:

Min = modulo(X0 - X1) + modulo(Y0 - Y1)

O motor, em geral, vai de uma caixa para outra de forma a compor uma 
estrtegia vitoriosa, de forma que o numero acima vai ser importante em algum 
ponto de nossa investigacao. Devemos considerar tambem que pode haver 
obstaculos entre um ponto e outro. Neste caso, qual o numero minimo de 
passos ? Nao e dificil encontrar e e uma combinacao linear das duas parcelas 
acima. Mais tarde eu vejo isso.

DIAGRAMA DE UMA ESTRATEGIA

Uma estrategia pode ser descrita assim ( vou imaginar duas caixas e um motor 
)

1)O motor se associa a primeira caixa, da alguns passos com ela
2)O motor vai de um ponto vizinho a primeira caixa para um ponto vizinho a 
uma segunda caixa
3)O motor se associa a segunda caixa, da alguns passos com ela
4)O motor vai de um ponto vizinho da segunda caixa para um ponto vizinho a 
pr1meira caixa
5) volte ao passo 1)

O algoritmo prossegue ate que as caixas em duas caixas que chamaremos de 
destino e representaremos por D. Assim, D e o conjunto das coordenadas das 
casas de destino.

Resolver o problema significa transcrever o algoritmo descrito acima atraves 
da sequencia de funcoes Cn definidas tambem acima de forma que os passos 
dados sejam minimos.

Evidentemente que o problema ainda esta longe de ser resolvido, mas ja temos 
alguns instrumentos matematicos que podem descreve-los. Nao sei se sao os 
melhores, mas e um comeco. E entao, eu dei o passe : voce agora faz o gol ?

Um abraco
Paulo Santa Rita
4,1239,18072001











>From: fabio niski <fabio@niski.com>
>Reply-To: obm-l@mat.puc-rio.br
>To: obm-l@mat.puc-rio.br
>Subject: Re: sokoban
>Date: Tue, 17 Jul 2001 20:52:40 -0300
>
>Infelizmente não Paulo. E voce?!
>
>Paulo Santa Rita wrote:
> >
> > Ola Niski,
> > Bem-Vindo a Lista OBM !
> >
> > Voce estreiou propondo uma questao muito interessante ... Voce ja 
>conseguiu
> > algum progresso no processo de formalizacao do jogo ?
> >
> > Um abraco
> > Paulo Santa Rita
> > 3,1749,17072001
> >
> > >From: niski <fabio@niski.com>
> > >Reply-To: obm-l@mat.puc-rio.br
> > >To: obm-l@mat.puc-rio.br
> > >Subject: sokoban
> > >Date: Fri, 13 Jul 2001 21:09:47 -0300
> > >
> > >Amigos, está é a minha primeira mensagem no grupo!
> > >
> > >Bem, creio que muitos de vocês, amantes da logica, já ouviram falar
> > >sobre um famoso joguinho japones chamado sokoban.
> > >(p/ windows) http://www.sokomind.de/
> > >(p/ linux, vem no pacote games com o kde)
> > >
> > >Gostaria de saber, se alguem conseguiria matematizar o objetivo do jogo
> > >(levar as pedras ao lugares definidos, com o menor numero de passos
> > >possiveis), criando assim um algoritmo que mostre o caminho ideal a ser
> > >seguido!
> > >
> > >Essa foi a minha sugestão!
> > >
> > >Abraços..
> > >
> > >Niski
> >
> > 
>_________________________________________________________________________
> > Get Your Private, Free E-mail from MSN Hotmail at 
>http://www.hotmail.com.

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.