Collegamento di celle per permutazioni di linea e colonna in una griglia finita


10

Mi piacerebbe sapere se il seguente semplice problema è stato studiato prima e se è nota una soluzione.

Sia G una griglia finita (MxN), S un sottoinsieme di celle di G (le "briciole"). Si dice che due briciole siano collegate (localmente) se le loro coordinate differiscono al massimo di uno (cioè, se disegnate come quadrati, condividono almeno un punto d'angolo).

Ora, si può provare a connettere le briciole (il loro insieme nel suo insieme) permutando le linee e le colonne della griglia. In altre parole, l'obiettivo è quello di elaborare una permutazione delle linee e una permutazione delle colonne in modo che due briciole nella griglia risultante siano collegate da una catena di briciole (localmente) connesse.

Domanda: c'è sempre una soluzione?

Non so proprio come attaccarlo. Per mancanza di un'idea migliore, ho scritto un programma grezzo che cerca soluzioni con la forza bruta (genera casualmente le permutazioni e verifica se la griglia risultante ha le sue briciole collegate). Finora il programma ha sempre trovato soluzioni su griglie più piccole (10x10 o 7x14) e le griglie più grandi sono chiaramente fuori portata dalla sua strategia semplicistica (impiegherebbe troppo tempo a inciampare a caso in una soluzione).

Ecco un esempio di una griglia risolta dal programma:

Griglia iniziale (le briciole sono indicate da X, le celle vuote da punti):

   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 .

Soluzione:

   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, il problema può essere prontamente generalizzato a qualsiasi dimensione d> 2. Suppongo che potrebbero essere prese in considerazione altre generalizzazioni.

Grazie in anticipo,

Yann David


2
problema interessante. c'è qualche applicazione?
Suresh Venkat,

@Tsuyoshi: hai ragione la figura che ho pubblicato ha una soluzione (quella che hai fornito). L'ho cancellato.
Marzio De Biasi,

2
Il crosspost simultaneo è scoraggiato. math.stackexchange.com/questions/83231/…
Tsuyoshi Ito

Risposte:


7

Proviamo un argomento di conteggio simile a quello nella versione precedente della mia risposta, più attentamente.

Data una matrice di input 0-1 con q nonzeros, definire una "soluzione" per essere una permutazione delle righe, una permutazione delle colonne e la matrice 0-1 connessa che si ottiene come output dopo aver eseguito le permutazioni. L'osservazione importante qui è che ci sono al massimo diverse matrici di output possibili: una volta che facciamo una delle scelte per la posizione di uno dei nonzer, possiamo codificare il resto della matrice di output in bit eseguendo una traslazione preordinata di un albero spanning dei nonzeros e registrando per ciascun bordo dell'albero se va a una foglia, se è l'ultimo bordo del suo genitore e quale sia la sua direzione. Quindi il numero di soluzioni è al massimo . n 2 5 q n 2 2 5 q ( n ! ) 2n225qn25qn225q(n!)2

Ora ogni soluzione funziona solo per un singolo input, perché possiamo invertire le permutazioni per recuperare l'input dalla matrice di output. Il numero di input che hanno esattamente nonzeros per riga è , e per costante questo può essere riscritto . Ma per il numero di soluzioni è . Per , gli input sono più numerosi delle soluzioni, quindi c'è un input irrisolvibile.c(nc)ncexp(cnlognO(n))q=cnexp(2nlogn+O(cn))c>2


Impostando e trascurando termini, ho inseguito la tua disuguaglianza per trovare il punto di "pareggio", ottenendo . Quest'ultimo valore è notevolmente vicino a 26608.c=3o(n)n>6215/e2
Hardmath

È una curiosa coincidenza numerica. L'ho chiesto a mathoverflow.net/questions/81368/…
David Eppstein,

1
Questa è davvero una prova elegante e convincente. (Mi ci è voluto un po 'di tempo per dettagliare le approssimazioni a mio vantaggio.) Resta da vedere se qualcuno riuscirà a trovare un contro-esempio concreto. Il commento di @ hardmath sopra suggerisce che potrebbe essere difficile (la CE sarebbe una brutta bestia); ora non è necessario avere lo stesso numero di briciole in tutte le file di un CE.
Yann David,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.