534 Shares 1726 views

Programowanie dynamiczne, podstawowe zasady

Aby wybrać optymalne rozwiązanie przy wykonywaniu zadań programistycznych są czasem wymagane do sortowania dużych ilości kombinacji danych, które ładuje pamięć komputera osobistego. Takie sposoby obejmują, na przykład, metoda programowania „dziel i zasadą”. W tym przypadku, algorytm zapewnia problemu rozdzielania w oddzielnych małych podzadań. Metoda ta ma zastosowanie jedynie w tych przypadkach, gdzie małe podzadania są wzajemnie niezależne. Aby uniknąć niepotrzebnego wykonywania pracy, jeśli współzależnych podzadań, wykorzystuje metody programowania dynamicznego proponowaną amerykański R.Bellmanom w latach 50-tych.

Sposób

Programowanie dynamiczne jest określenie optymalnego rozwiązania problemu n-wymiarowej, dzieląc ją n oddzielnych etapów. Każdy z nich jest pod-zadania w odniesieniu do jednej zmiennej.

Główną zaletą tego podejścia można uznać, że twórcy zaangażowani w jednowymiarowej problemu optymalizacji podzadań zamiast problemu n-wymiarowej, a naszym głównym celem będzie „bottom-up”.

Wskazane jest, aby zastosować dynamiczne programowanie w tych przypadkach, w których sub-zadania są ze sobą powiązane, tj wspólne moduły. Algorytm zapewnia decyzję każdego z podzadań raz, a reakcje oszczędzania odbywa się w specjalnej tabeli. Dzięki temu możliwe jest nie do obliczenia odpowiedź, kiedy spotkali się ponownie z tym samym podzadania.

Dynamiczne programowanie zadanie rozwiązuje problem optymalizacji. Autor tej metody została sformułowana przez R. Bellmana zasady optymalności: cokolwiek jest początkowy stan każdego z etapów i rozwiązania określonej w niniejszym punkcie, wszystkie z poniższych czynności, aby wybrać optymalne w stosunku do państwa, które otrzymuje system na koniec etapu.

Sposób zwiększa wydajność zadania rozwiązane za pomocą wariantów lub rekursji.

Algorytm zadanie budynek

algorytm programowania dynamicznego obejmuje budowę takich zadań, że zadanie to jest podzielone na dwie lub więcej podzadań do jego rozwiązania składa się z optymalnego rozwiązania dla wszystkich podzadań, zawiera. Ponadto konieczne jest, aby napisać relację nawrotów i obliczenia optymalnych wartości parametrów dla zadania jako całości.

Czasami, na 3. etapie jest, aby zapamiętać pewne dodatkowe informacje na temat postępów każdego zadania. To się nazywa skok powrotny.

metoda aplikacji

Programowanie dynamiczne jest stosowane, gdy istnieją dwie charakterystyczne cechy:

  • optymalna dla podzadań;
  • Obecność w problemu nakładania podproblemów.

Rozwiązanie problemu optymalizacji przez programowania dynamicznego, należy najpierw opisać strukturę roztworu. Zadanie musi być optymalna, jeśli roztwór składa się z najlepszych decyzji jego podzadań. W tym przypadku wskazane jest, aby korzystać z programowania dynamicznego.

Drugą właściwością tego problemu, niezbędne w tej metodzie, – mała liczba podzadań. Rekursywne rozwiązanie zadania przy użyciu tych samych nakładających podrzędne problemów których liczba zależy od wielkości pierwotnej informacji. Odpowiedź jest przechowywany w specjalnej tabeli, program pozwala zaoszczędzić czas przy użyciu tych danych.

Szczególnie skuteczne jest stosowanie programowania dynamicznego, gdy zadanie jest w istocie potrzebne do podejmowania decyzji w etapach. Na przykład, rozważmy prosty przykład problemu wymiany i naprawy sprzętu. Powiedzmy na maszynie odlewniczej fabryki do produkcji opon w tym samym czasie uczynić oponę w dwóch różnych formach. W przypadku, gdy jedna z form zawodzi, trzeba demontować urządzenia. Zrozumiałe jest, że czasami bardziej opłaca się wymienić i drugi formularz w celu demontażu urządzenia w przypadku, i ta forma będzie niewykonalna w następnym etapie. Zwłaszcza, że łatwiej jest wymienić zarówno kształt roboczy, zanim zaczną się niepowodzeniem. Dynamiczna metoda programowania określa najlepszą strategię w sprawie zastąpienia tych form, biorąc pod uwagę wszystkie czynniki: korzyści z kontynuowanej formami wykorzystywania, utrata przestoju maszyny, koszty zużytych opon i więcej.