Programowanie dynamiczne: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
YurikBot (dyskusja | edycje)
literówka
Linia 1:
'''Programowanie dynamiczne''' jest techniką, lub strategią, projektowania [[algorytm|algorytmów]] stosowaną przeważnie do rozwiązywania zagadnień [[optymalizacja|optymalizacyjnych]], dla których nie istnieją [[algorytm zachłanny|algorytmy zachłanne]]. Wynalazcą techniki jest amerykański matematyk [[Richard Bellman]], uhonorowany za to odkrycie medalem [[IEEE]] (ang. ''medal of honour'') w 1979 roku.
 
Programowanie dynamiczne opiera się na na podziale rozwiązywanego problemu na podproblemy względem kilku parametrów. W odróżnieniu od techniki [[dziel i rządź (informatyka)|dziel i rządź]] podproblemy w programowaniu dynamicznym nie są na ogół rozłączne, ale musi je cechować własność [[optymalna podstruktura|optymalnej podstruktury]]. Zagadnienia odpowiednie dla programowanieprogramowania dynamicznego cechuje również to, że zastosowanie do nich [[brute force|metody czołgowej]] (and. ''brute force'') prowadzi do ponadwielomianowej liczby rozwiązywań podproblemów, podczas gdy sama liczba różnych podproblemów jest wielomianowa.
 
Zazwyczaj jednym z parametrów definiujących podproblemy jest ilość elementów znajdujących się w rozpatrywanym problemie, drugim jest pewna wartość liczbowa, zmieniająca się w zakresie od 0 do największej stałej występującej w problemie. Możliwe są jednak bardziej skomplikowane dobory parametrów, a także większa ich liczba. Ponieważ jednak uzyskiwany algorytm zazwyczaj wymaga pamięci (i czasu) proporcjonalnego do iloczynu maksymalnych wartości wszystkich parametrów, stosowanie większej ilości parametrów niż 3-4 rzadko bywa praktyczne.