Trova i numeri minimi 1 in modo che la matrice sia composta da 1 regione connessa di 1


8

Sia una matrice . Diciamo che due voci sono vicine se sono adiacenti orizzontali o verticali, ed entrambe le voci sono . Si vuole trovare il numero minimo di da aggiungere, quindi ogni può raggiungerne un altro attraverso una sequenza di vicini.M(0,1)111

Esempio:

100
000
001

Qui abbiamo bisogno di 3 :1

100
100
111

Come possiamo trovare in modo efficiente il numero minimo di da aggiungere e dove?1


È spesso utile lanciare un problema come un problema di un altro tipo; ad esempio questa volta un problema di matrice come problema grafico. Questo ti dà tutti gli strumenti della teoria dei grafi con cui lavorare. A prima vista, il tuo problema mi è sembrato un problema di percorso più breve.
Juho,

Risposte:


5

Se si modella il problema con i grafici, il problema è simile al problema di Steiner Tree :

Vedi qui per la definizione più semplice possibile.

Dato un grafico ponderato in cui un sottoinsieme di vertici viene identificato come terminale, trovare un sottografo collegato a peso minimo che includa tutti i terminali.

Come puoi vedere è un NPC in generale, ma nel tuo caso il tuo grafico è un grafico a griglia, potresti essere in grado di trovare una buona soluzione per esso, ma per il tuo esempio attuale (quando i terminali sono al limite) puoi vedere l' albero di Steiner nella carta dei grafici a griglia .

In ogni caso ci sono euristiche eccellenti per il problema di Steiner Tree, puoi applicare un approccio simile al tuo problema.

PS: Puoi presumere che i vicini 1 siano nodi collegati, dopodiché puoi contrarre i loro bordi per creare un nuovo grafico, il tuo nuovo grafico creato è planare e se potessi risolvere l'albero di Steiner per esso puoi risolvere il tuo problema, ma potresti essere c'è una buona soluzione per il tuo problema che è indipendente da Steiner Tree.


2
Nel caso qualcuno si stia chiedendo, il problema rimane NP-completo anche se i bordi hanno un peso unitario.
Juho,

@mrm, Sì, in realtà il link di Wikipedia, dice della versione non ponderata (implicitamente) Vedi la sua generalizzazione . Ho pensato che potrebbe essere un collegamento wiki non chiaro a prima vista, quindi ho citato una definizione semplice.

Si noti inoltre che non tutti gli 1 devono essere al limite della matrice per essere al limite del grafico a griglia risultante
Joe

Sembra che tu stia riducendo il problema di OP a Stiener Tree, il che afferma che Stiener Tree è difficile almeno quanto il problema di OP. Non viceversa: la prima frase è fuorviante. Naturalmente, la pagina della wiki che hai collegato, parla anche del problema dell'albero del tenditore rettilineo, che sembra essere abbastanza rilevante.
Aryabhata,

@Aryabhata, No, non ho fatto alcuna riduzione, solo un certo formato del problema dei PO è esattamente lo stesso del problema di Stiener Tree, quindi è almeno difficile come Stiener Tree, ma come ho già detto, il problema dei PO funziona su griglie, e se Stiener Tree è risolvibile su griglie, può farlo per il suo problema, ma il caso rettilineo è più duro delle griglie, infatti le griglie sono un caso speciale di grafici rettilinei, quindi ho suggerito un documento per i grafici a griglia, che può risolvere un caso speciale nelle griglie in , In tutto non ho mai detto che il suo problema è NPC o qualcosa del genere, e se pensi di averlo detto per favore dimmi di cancellarlo. P
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.