[Algoritmi] Subset sum

Messaggioda ZfreS » 24/06/2021, 19:26

Buonasera. Da un po di giorni studio il problema della subset sum. Ho prima visto la versione col backtracking che è stata abbastanza intuitiva da capire, poi sono passato alla versione che sfrutta la programmazione dinamica. Questa non riesco proprio a capirla. Ho che bisogna identificare dei sottoproblemi tra loro correlati, ma mentre in un problema come quello dei numeri di Fibonacci è chiaro dall'albero di ricorsione quali siano i sottoproblemi ripetuti, in questo caso non mi sembra evidente. Poi non capisco cosa faccia questa equazione di ricorrenza:
$DP[i][j]=DP[i-1][j] || DP[i-1][j-A[i-1]]$.
Sapreste spiegarmi a cosa serva e in cosa consistono i sottoproblemi di cui è composto questo problema?
[URL=https://datesnow.life]Authentic Ladies[/URL]
ZfreS
Cannot live without
Cannot live without
 
Messaggio: 2209 di 4590
Iscritto il: 22/10/2016, 17:52
Località: Usa

Re: [Algoritmi] Subset sum

Messaggioda apatriarca » 26/06/2021, 10:44

In linea generale quando l'input è formato da un array/lista/sequenza si considerano i sottoinsiemi formati dai primi \(i\) elementi per ogni \(i\). Qui hai due indici perché è l'input è formato da un array di array.. Ma l'idea è la stessa.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5569 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Algoritmi] Subset sum

Messaggioda ZfreS » 26/06/2021, 11:23

Penso di aver capito come funziona questo algoritmo, ma mi è sorto un dubbio su un altro problema che è il seguente: data ua tabella $3xn$ trovare tutti i modi di riempirla usando tessere $2x1$. L'equazione ricorsiva è questa: $F(N)= F(n-2)+2G(n-1)$ $G(N)=F(n-1)+g(n-2$ dove $F(n)$ indica il numero di modi di piazzare le tessere in una tabella completa, mentre $G(n)$ è il numero di modi di piazzare le tessere in una tabella in cui manca o un angolo destro altro o destro basso. Ora capisco il perchè la $F(n)$ sia definita in quel modo, ma non capisco il perchè di definire $G(n)$ così.
[URL=https://datesnow.life]Authentic Ladies[/URL]
ZfreS
Cannot live without
Cannot live without
 
Messaggio: 2210 di 4590
Iscritto il: 22/10/2016, 17:52
Località: Usa

Re: [Algoritmi] Subset sum

Messaggioda apatriarca » 29/06/2021, 15:07

Non sono sicuro di aver compreso la tua situazione. Le tessere possono essere ruotate (e quindi usi tessere \(2 \times 1\) e \(1 \times 2\)? Se così non fosse ogni colonna sarebbe indipendente dalle altre e non potresti riempire la tabella perché ad ogni colonna mancherebbe una cella. A questo punto però che cosa intendi con manca un angolo destro alto o basso? Una singola cella in alto o in basso?

Sinceramente in questi casi ti conviene fare dei disegni e cercare di visualizzare quelle formule caso per caso.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5572 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite