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.)
il vostro obiettivo è molto ambiguo. c'è un ordine di priorità o una funzione di utilità? –
Il requisito n. 3 potrebbe essere difficile perché richiede di dimostrare che non esiste alcun algoritmo più veloce di quello trovato. – Kaz
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