2012-03-20 20 views
8

Ho una griglia di una certa larghezza e altezza, in cui ogni cella può essere di tre possibili valori (presentato come bianco, verde e rosso in questa figura):griglia algoritmo di puzzle

illustration http://corexii.com/grid-algorithm-problem-2.png

È possibile selezionare qualsiasi numero di cellule verdi (contrassegnato blu nell'illustrazione di seguito), che copre tutti i globuli rossi (contrassegnati giallo) in un predeterminato raggioquadrato (qui) intorno alle celle selezionate:

illustration http://corexii.com/grid-algorithm-problem-3.png

L'obiettivo è quello di:

  • coprire il maggior numero di globuli rossi come possibile
  • con il minor numero cellule blu possibile
  • farlo il più velocemente possibile

Qualcuno ha qualche idee per un algoritmo?

Sto guardando molta teoria, ma quello che mi interessa di più è un'approssimazione per fare questo rapidamente piuttosto che con precisione. Un risultato veloce e ragionevole è preferibile al calcolo di quello ottimale per tutto il giorno.

(Le illustrazioni sopra possono presentare la più normale distribuzione di queste cellule, ma non devono essere considerati come assomigliare tutte le possibili distribuzioni.)

+0

il vostro obiettivo è molto ambiguo. c'è un ordine di priorità o una funzione di utilità? –

+0

Il requisito n. 3 potrebbe essere difficile perché richiede di dimostrare che non esiste alcun algoritmo più veloce di quello trovato. – Kaz

+1

Lavorerei con il concetto del rettangolo di delimitazione: la più piccola regione rettangolare che racchiude tutti i globuli rossi. Sospetto che la soluzione abbia la proprietà che i quadrati di copertura si attacchino all'interno di questo rettangolo di delimitazione (ammesso che 'n' sia tale da adattarsi a quel rettangolo). Allontanarsi dal rettangolo non raggiunge nulla perché non ci sono celle rosse da coprire; stai solo diminuendo la copertura potenziale di quella piazza. – Kaz

risposta

10

Questo problema è un caso speciale dell'importante NP-hard set cover problem . (L'universo è costituito da celle rosse e ogni insieme è costituito da celle rosse nel raggio di una delle celle verdi). Il greedy algorithm entra in un registro n fattore del risultato ottimale.


templatetypedef is right to point out che il fatto che questo problema è un caso speciale di un problema NP-hard non dimostra che in realtà è NP-hard troppo. Ecco perché sono stato attento nel mio fraseggio sopra a non implicare il secondo. Ma essere un caso speciale di un problema NP-duro è un segnale che non dovrebbe essere ignorato: molti casi speciali si rivelano ulteriori indagini per essere NP-hard stessi.

Quindi ecco uno schizzo approssimativo che questo problema è in realtà NP-hard, da una riduzione da VERTEX COPERTURA PER GRAFICI PLANARI DI GRADO A PIÙ DI QUATTRO.

Supponiamo di avere un grafo planare del grado massimo di quattro, per esempio:

Four vertices connected a-b-c-d-a and a-d

rappresentare ogni vertice da un quadrato verde, e ciascun bordo da una catena alternata di quadrati rossi e verdi tali che ci sono un numero pari di quadrati verdi, un numero dispari di quadrati rossi, e ogni quadrato verde coprirà solo i due quadrati rossi su entrambi i lati, se scelto.Con un raggio di 2, questa è una possibile rappresentazione del grafico:

representation of original graph in terms of the covering problem

Per coprire tutti i quadrati rossi, dobbiamo scegliere almeno la metà dei quadrati verdi su ogni catena corrispondente ad un bordo il grafico originale. Se scegliamo esattamente la metà dei quadrati verdi su ciascuna catena, questo lascia un quadrato rosso scoperto a un'estremità di ciascun bordo (e possiamo scegliere quale fine). Quindi otteniamo il set minimo di quadrati verdi se riusciamo a trovare il set minimo di vertici in modo tale che ogni spigolo sia incidente a un vertice in quel set.

Nell'esempio, possiamo coprire i quadrati rossi utilizzando otto quadrati verdi se prendiamo vertici un e d:

minimum cover with eight green squares selected and coloured blue

E questo corrisponde alla copertura minima vertice nel originale grafico:

minimum vertex cover

+1

soddisfa il 1 ° e il 3 ° criterio, fallisce il 2 ° –

+2

Il fatto che questo sia un caso speciale di copertura del set non significa che sia necessariamente computazionalmente difficile da risolvere. Ad esempio, 2SAT è un caso speciale di SAT, ma ha una soluzione di tempo lineare. – templatetypedef

+0

sì, se il raggio può essere infinito, è sufficiente aggiungere un quadrato blu. Se il raggio è piccolo, è anche facile da calcolare. –