PROBLEMA BACKTRACKING

di il
6 risposte

PROBLEMA BACKTRACKING

Salve a tutti, all'università ci hanno dato questo compito che dovremo risolvere, a quanto ho capito
potrei risolverlo con il backtracking. ho cercato un po di informazione su internet per vedere il funzionamento pero non so come applicarlo al problema che ci hanno dato, quindi vi chiedo un consiglio per cominciare, ho fatto la lettura da input della matrice e gli altri dati ma non so come applicare backtracking.

il compito lo dovrei svolgere in java

grazie

Sia M una matrice di dimensione n*m con n, m > 0 rappresentante il territorio da controllare.? Ogni cella di M può contenere uno dei caratteri dell’insieme { *, - }: il carattere * indica una zona d’interesse che deve essere controllata, mentre il carattere - indica uno spazio vuoto.?
È possibile costruire una torre di sorveglianza nelle zone d’interesse.
?
Se si costruisce una torre in una zona d’interesse (i, j) allora:
- la zona d’interesse (i, j) è controllata, e
- una zona d’interesse tra (i, j+1), (i, j-1), (i+1, j) e (i-1, j) è controllata a sua volta, secondo l’orientamento della torre.
Non c’è un limite sul numero di torri da costruire ma l’Imperatore ha espressamente chiesto di costruirne il minore numero possibile.
Implementare un programma che restituisca il numero minimo di torri da costruire sul territorio in modo da controllare tutte le zone d’interesse.
Input
La lettura dovrà avvenire da standard input.
L’input consiste in un numero i (i = 1) di test, rappresentanti i territori da controllare; per ogni territorio, il formato è il seguente:
- la prima riga contiene la parola chiave territory e un numero j (separati da spazio),
rappresentate l’inizio del j-esimo territorio;
- la seconda riga contiene i numeri n m, dove n è il numero di righe della matrice e m il
numero di colonne della matrice;
- le successive n righe sono nel formato c1 c2 ... cm, ovvero un numero m di caratteri separati
da uno spazio; ogni riga con questo formato rappresenta una riga della matrice.
Questo formato vale per tutti i test. L’input termina con la stringa -1.
Si assumi che l’input sia corretto e che non ci siano caratteri diversi da * o - nella matrice.
Output
L’output del programma deve avvenire su standard output; per ogni test, l’output deve essere nel seguente formato:
- la prima riga contiene la parola chiave result e un numero k (separati da uno spazio),
rappresentanti il k-esimo test;
- la seconda riga contiene un numero a rappresentante il numero minimo di torri da costruire
?per controllare tutte le zone d’interesse.
Esempio input
territory 1
3 2
* *
- *
* -
territory 2 4 4
**** *--- **-* -*-* territory 3 37 *-*---* **-**-- *--**-* -1
Esempio output
result 1
3
result 2
5
result 3 8

6 Risposte

  • Re: PROBLEMA BACKTRACKING

    E' una variante del problema delle N regine su scacchiera NxN.
    Altra variante, la torre di Hanoi di livello N.


    il backtracking e' abbastanza stupido: devi avere MOLTO chiaro, ovviamente, il concetto di ricorsione.

    A parte questo, l'implementazione e' banale:

    1) hai posizionato la torre i-1
    2) posiziona la torre i
    3) controlla che la torre i sia ben posizionata, se non lo e' ritenta con un'altra posizione
    4) se lo e', tenta di posizionare la torre i+1
    5) se e' la torre i+1 e' posizionata (e quindi lo sono anche le torri i+2,i+3,...) avresti finito, a parte il fatto che ci potrebbero essere altre soluzioni
    6) se non e' stato possibile posizionare la torre i+1, trova un'altra posizione per la torre i
    7) se non e' stato possibile trovare una posizione corretta per la torre i, avverti la torre i-1 del fallimento

    Banale!
  • Re: PROBLEMA BACKTRACKING

    Ciao e grazie per la tempestiva risposta, ma le torri non le devo posizionare io, sono posizionate quindi devo trovare il numero minimo di torri per controllare tutte le zone d interesse e quindi minimizzare col backtracking.
  • Re: PROBLEMA BACKTRACKING

    Ragiona, se non le posizioni, come fai a sapere quali zone sono controllate?
    E come fai a controllare se l'UNIONE di torre le zone controllate e' uguale alla zona di interesse?

    Boh!
  • Re: PROBLEMA BACKTRACKING

    Scusami sono un po' confuso rileggendo la. Traccia hai ragione le torri le devo posizionare io per controllare tutte le zone. Di interesse.
    Ti chiedo una cortesia non è che mi potresti scrivere un pseudo codice per capire meglio la situazione. Ad esempio non capisco perché cominci al primo passo con i-1
  • Re: PROBLEMA BACKTRACKING

    socram ha scritto:


    Scusami sono un po' confuso rileggendo la. Traccia hai ragione le torri le devo posizionare io per controllare tutte le zone. Di interesse.
    Ti chiedo una cortesia non è che mi potresti scrivere un pseudo codice per capire meglio la situazione. Ad esempio non capisco perché cominci al primo passo con i-1
    Te l'ho gia' scritto il pseudocodice
    Ragiona!
  • Re: PROBLEMA BACKTRACKING

    Ok ci ragione sopra ma se la matrice è fatta ccosì.
    * *
    _ *
    * -
    Perché cominci con i-1? Usciresti dalla matrice
Devi accedere o registrarti per scrivere nel forum
6 risposte