Considere um labirinto como o do desenho abaixo:
Um labirinto desses pode ser representado por uma matriz retangular
,
cujo elemento
vale 0 ou
conforme a casa correspondente do
labirinto seja uma passagem livre ou uma parede, respectivamente.
Suponha agora que em alguma posição desse labirinto haja um minotauro perdido, e também uma porta (de entrada/saída). Como bons samaritanos, queremos ajudar o minotauro a encontrar a porta.
Um método geral para resolver esse problema consiste em marcar com
o número
(
) as casas livres que estejam a
exatamente
passos de distância da porta, pelo caminho mais
curto possível. Suponha que, a cada passo, o minotauro possa se
deslocar de apenas uma casa na vertical ou na horizontal. Então,
rotula-se inicialmente a posição da porta com 1 e para cada
examinam-se todas as casas livres do labirinto,
marcando-se com
aquelas ainda não marcadas e que sejam
vizinhas a alguma casa marcada com
.
A marcação continua até ser atingido um valor de
(28 no
exemplo abaixo) tal que nenhuma casa esteja em condições de ser
marcada. Supondo que a
,2 e que a porta esteja na posição
,3 ao final da marcação teremos a seguinte
matriz:
Tendo feito esta marcação, um caminho mais curto do minotauro até a porta (se existir) pode ser determinado partindo-se da posição do minotauro e passando a cada etapa para uma casa vizinha cuja numeração seja menor do que a atual.
Por exemplo, se o minotauro estiver na posição
, este
precisará percorrer pelo menos 25 casas para chegar à porta:
,
,
,
,
,
,
,
,
,
,
.