Gostaria de saber se o seguinte problema simples foi estudado antes e se alguma solução é conhecida.
Seja G uma grade finita (MxN), S um subconjunto das células de G (as "migalhas"). Diz-se que duas migalhas estão conectadas (localmente) se suas coordenadas diferirem em no máximo uma (isto é, se desenhadas como quadrados, elas compartilham pelo menos um ponto de canto).
Agora, pode-se tentar conectar as migalhas (seu conjunto como um todo) permutando as linhas e as colunas da grade. Em outras palavras, o objetivo é criar uma permutação das linhas e uma permutação das colunas para que quaisquer duas migalhas na grade resultante sejam conectadas por uma cadeia de migalhas conectadas (localmente).
Pergunta: sempre existe uma solução?
Não sei bem como atacá-lo. Por falta de uma idéia melhor, escrevi um programa bruto que procura soluções por força bruta (gera as permutações aleatoriamente e verifica se a grade resultante tem suas migalhas conectadas). Até o momento, o programa sempre encontrou soluções em grades pequenas (10x10 ou 7x14), e as grades maiores estão claramente fora do alcance de sua estratégia simplista (levaria muito tempo para encontrar aleatoriamente uma solução).
Aqui está um exemplo de uma grade resolvida pelo programa:
Grade inicial (migalhas são indicadas por X's, células vazias por pontos):
0 1 2 3 4 5 6 7 8 9
0 X . X X . X . X X .
1 X . . . . X . . . .
2 . . X . . . . X . X
3 . X . . X . X . . X
4 . . . X . . . . . .
5 X X . . . X X . X .
6 . . . X . . . . X .
7 X . X . . X . . . .
8 X . . . X . . X X .
Solução:
6 1 4 7 8 2 9 3 5 0
1 . . . . . . . . X X
4 . . . . . . . X . .
5 X X . . X . . . X X
8 . . X X X . . . . X
7 . . . . . X . . X X
0 . . . X X X . X X X
3 X X X . . . X . . .
6 . . . . X . . X . .
2 . . . X . X X . . .
Naturalmente, o problema pode ser facilmente generalizado para qualquer dimensão d> 2. Suponho que outras generalizações possam ser consideradas.
Desde já, obrigado,
Yann David