Stavo leggendo sulla programmazione dinamica quando mi sono imbattuto nella seguente citazione
Un algoritmo di programmazione dinamica esaminerà tutti i modi possibili per risolvere il problema e sceglierà la soluzione migliore. Pertanto, possiamo approssimativamente pensare alla programmazione dinamica come a un metodo intelligente e a forza bruta che ci consente di esaminare tutte le possibili soluzioni per scegliere quella migliore . Se la portata del problema è tale da consentire a tutte le possibili soluzioni di essere possibili e abbastanza velocemente, la programmazione dinamica garantisce di trovare la soluzione ottimale
È stato fornito il seguente esempio
Ad esempio, supponiamo che devi passare dal punto A al punto B il più velocemente possibile, in una determinata città, nelle ore di punta. Un algoritmo di programmazione dinamica esaminerà l'intero rapporto sul traffico, esaminando tutte le possibili combinazioni di strade che potresti prendere e ti dirà solo in che modo è il più veloce. Ovviamente, potresti dover aspettare un po 'fino a quando l'algoritmo non termina e solo allora puoi iniziare a guidare. Il percorso che seguirai sarà il più veloce (supponendo che nulla sia cambiato nell'ambiente esterno)
Brute Force sta provando tutte le possibili soluzioni prima di decidere la soluzione migliore.
In che modo la programmazione dinamica è diversa dalla forza bruta se passa anche attraverso tutte le possibili soluzioni prima di scegliere quella migliore , l'unica differenza che vedo è che la programmazione dinamica tiene conto dei fattori aggiuntivi (condizioni del traffico in questo caso).
Ho ragione a dire che la programmazione dinamica è un sottoinsieme del metodo della forza bruta ??
intelligent, brute force
, ma poi dimentica di descrivere la parte "intelligente"