Динамічне програмування — розділ математики, який присвячено теорії та методам розв'язання багатокрокових задач оптимального управління.
У динамічному програмуванні, для керованого процесу серед множини усіх допустимих управлінь шукають оптимальне, у сенсі деякого критерію, тобто таке, яке призводить до екстремального (найбільшого або найменшого) значення цільової функції — деякої числової характеристики процесу. Під багатоступеневістю розуміють або багатоступеневу структуру процесу, або розподілення управління на ряд послідовних етапів (ступенів, кроків), що відповідають, як правило, різним моментам часу. Таким чином, в назві «Динамічне програмування» під «програмуванням» розуміють «ухвалення рішень», «планування», а слово «динамічне» вказує на суттєве значення часу та порядку виконання операцій в процесах і методах, що розглядаються.
Методи динамічного програмування є складовою частиною методів, які використовуються при дослідженні операцій, і використовуються як у задачах оптимального планування, так і при розв'язанні різних технічних проблем (наприклад, у задачах визначення оптимальних розмірів ступенів багатоступеневих ракет, у задачах оптимального проектування прокладення доріг та ін.)
Методи динамічного програмування використовуються не лише в дискретних, але і в неперервних керованих процесах, наприклад, в таких процесах, коли в кожен момент певного проміжку часу необхідно ухвалювати рішення. Динамічне програмування також дало новий підхід до задач варіаційного числення.
Хоча метод динамічного програмування суттєво спрощує вихідні задачі, та безпосереднє його використання, як правило, пов'язане з громіздкими обчисленнями. Для подолання цих труднощів розробляються наближені методи динамічного програмування.
Історія
Термін динамічне програмування був запроваджений в 40-х роках Річардом Беллманом для характеристики процесу розв'язування проблем, при якому потрібно знаходити найкращі рішення, одне за одним. Пізніше, в 1953 році, він уточнив його в сучасному розумінні, називаючи так задачі, безпосередньо пов'язані з розв'язуванням вкладених підзадач для пошуку розв'язку всієї задачі і ця сфера була пізніше визнана IEEE як підрозділ системного аналізу та інженерії. Відзначивши внесок Беллмана, його ім'ям назвали рівняння Беллмана — основну формулу динамічного програмування, яка інтерпретує задачу оптимізації в рекурсивній формі.
Слово динамічне було обране Беллманом, тому що звучало більш переконливо і краще підходило для передачі того факту, що проблема оптимального управління, яку він розв'язував цим методом, має аспект залежності від часу. Слово програмування в цьому словосполученні в дійсності до «традиційного» програмування (написання тексту програм) майже ніякого відношення не має. Це використання таке саме як і в словосполученнях лінійне програмування та математичне програмування, які фактично є синонімами для математичної оптимізації. Тут воно означає оптимальну послідовність дій, оптимальну програму для отримання розв'язку задачі. Наприклад, певний розклад подій на виставці чи в театрі теж називають програмою. Програма в даному випадку розуміється як запланована послідовність подій. Хоча, динамічне програмування, як алгоритм, часто використовується при програмуванні для розв'язку відповідних задач (див. нижче).
Огляд
Динамічне програмування є водночас і методом математичної оптимізації і методом комп'ютерного програмування. В обох контекстах воно використовує підхід спрощення пошуку розв'язку складної задачі, розбиттям її на простіші підзадачі, часто методом рекурсії. Хоча деякі задачі не можуть бути розв'язані таким чином, рішення, які охоплюють кілька точок у часі дійсно часто розбиваються рекурсивно на підзадачі. Белман називав це (принципом оптимальності). Подібно до цього, в комп'ютерних науках про проблему, яка може бути розбита на підзадачі рекурсивно, говорять що вона має оптимальну підструктуру.
Якщо підзадачі можуть бути вкладеними рекурсивно всередині більших задач, так що методи динамічного програмування можуть бути застосовні, то існує залежність між розв'язком загальної задачі, і розв'язком підзадач . В методах оптимізації це відношення виражається рівнянням Беллмана.
Динамічне програмування в методах оптимізації
З точки зору математичної оптимізації, динамічне програмування полягає в спрощенні знаходження загального оптимального розв'язку, шляхом пошуку розв'язків в підзадачах, отриманих розбиттям задачі на послідовні проміжки часу. Це виражається у визначенні послідовності значень функцій V1, V2, …, Vn, з аргументом y, котрий позначає стан системи в моменти часу i від 1 до n. Визначенням Vn(y) є значення, отримане в стані y в кінцевий момент часу n. Значення Vi в попередні моменти часу i = n −1, n − 2, …, 2, 1 можуть бути знайдені рухаючись назад, використовуючи рекурсивну залежність, названу рівняння Беллмана. Для i = 2, …, n, значення Vi−1 для будь-якого стану y визначається з Vi через максимізацію значення простої функції (зазвичай, суми) виграшу від рішення в момент часу i − 1 і функції Vi у новому стані системи, якби це рішення було втілено. Оскільки Vi вже було розраховано для потрібних станів, то вище наведена операція забезпечує необхідне оптимальне значення Vi−1 для цих станів. Нарешті, V1 як початковий стан системи є значенням оптимального рішення. Оптимальне значення змінних рішення може бути відновлене одне за одним виконанням обернених у часі обчислень.
Примітки
- (PDF). Архів оригіналу (PDF) за 10 січня 2005. Процитовано 25 січня 2012.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Eddy, S. R., What is dynamic programming?, Nature Biotechnology, 22, 909—910 (2004).
- Nocedal, J.; Wright, S. J.: Numerical Optimization, page 9, Springer, 2006.
- Cormen, T. H.; Leiserson, C. E.; Rivest, R. L.; Stein, C. (2001), Introduction to Algorithms (2nd ed.), MIT Press & McGraw-Hill, . pp. 327-8.
Посилання
- І. Клейнер. Відео-лекції з динамічного програмування[недоступне посилання] (рос.)
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Це незавершена стаття про алгоритми. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Dinamichne programuvannya rozdil matematiki yakij prisvyacheno teoriyi ta metodam rozv yazannya bagatokrokovih zadach optimalnogo upravlinnya U dinamichnomu programuvanni dlya kerovanogo procesu sered mnozhini usih dopustimih upravlin shukayut optimalne u sensi deyakogo kriteriyu tobto take yake prizvodit do ekstremalnogo najbilshogo abo najmenshogo znachennya cilovoyi funkciyi deyakoyi chislovoyi harakteristiki procesu Pid bagatostupenevistyu rozumiyut abo bagatostupenevu strukturu procesu abo rozpodilennya upravlinnya na ryad poslidovnih etapiv stupeniv krokiv sho vidpovidayut yak pravilo riznim momentam chasu Takim chinom v nazvi Dinamichne programuvannya pid programuvannyam rozumiyut uhvalennya rishen planuvannya a slovo dinamichne vkazuye na suttyeve znachennya chasu ta poryadku vikonannya operacij v procesah i metodah sho rozglyadayutsya Metodi dinamichnogo programuvannya ye skladovoyu chastinoyu metodiv yaki vikoristovuyutsya pri doslidzhenni operacij i vikoristovuyutsya yak u zadachah optimalnogo planuvannya tak i pri rozv yazanni riznih tehnichnih problem napriklad u zadachah viznachennya optimalnih rozmiriv stupeniv bagatostupenevih raket u zadachah optimalnogo proektuvannya prokladennya dorig ta in Metodi dinamichnogo programuvannya vikoristovuyutsya ne lishe v diskretnih ale i v neperervnih kerovanih procesah napriklad v takih procesah koli v kozhen moment pevnogo promizhku chasu neobhidno uhvalyuvati rishennya Dinamichne programuvannya takozh dalo novij pidhid do zadach variacijnogo chislennya Hocha metod dinamichnogo programuvannya suttyevo sproshuye vihidni zadachi ta bezposerednye jogo vikoristannya yak pravilo pov yazane z gromizdkimi obchislennyami Dlya podolannya cih trudnoshiv rozroblyayutsya nablizheni metodi dinamichnogo programuvannya IstoriyaTermin dinamichne programuvannya buv zaprovadzhenij v 40 h rokah Richardom Bellmanom dlya harakteristiki procesu rozv yazuvannya problem pri yakomu potribno znahoditi najkrashi rishennya odne za odnim Piznishe v 1953 roci vin utochniv jogo v suchasnomu rozuminni nazivayuchi tak zadachi bezposeredno pov yazani z rozv yazuvannyam vkladenih pidzadach dlya poshuku rozv yazku vsiyeyi zadachi i cya sfera bula piznishe viznana IEEE yak pidrozdil sistemnogo analizu ta inzheneriyi Vidznachivshi vnesok Bellmana jogo im yam nazvali rivnyannya Bellmana osnovnu formulu dinamichnogo programuvannya yaka interpretuye zadachu optimizaciyi v rekursivnij formi Slovo dinamichne bulo obrane Bellmanom tomu sho zvuchalo bilsh perekonlivo i krashe pidhodilo dlya peredachi togo faktu sho problema optimalnogo upravlinnya yaku vin rozv yazuvav cim metodom maye aspekt zalezhnosti vid chasu Slovo programuvannya v comu slovospoluchenni v dijsnosti do tradicijnogo programuvannya napisannya tekstu program majzhe niyakogo vidnoshennya ne maye Ce vikoristannya take same yak i v slovospoluchennyah linijne programuvannya ta matematichne programuvannya yaki faktichno ye sinonimami dlya matematichnoyi optimizaciyi Tut vono oznachaye optimalnu poslidovnist dij optimalnu programu dlya otrimannya rozv yazku zadachi Napriklad pevnij rozklad podij na vistavci chi v teatri tezh nazivayut programoyu Programa v danomu vipadku rozumiyetsya yak zaplanovana poslidovnist podij Hocha dinamichne programuvannya yak algoritm chasto vikoristovuyetsya pri programuvanni dlya rozv yazku vidpovidnih zadach div nizhche OglyadRis 1 Poshuk najkorotshogo shlyahu v grafi vikoristovuyuchi optimalnu pidstrukturu krugami poznacheno vershini grafu pryami liniyi poznachayut odinochni rebra hvilyasti liniyi poznachayut najkorotshij shlyah mizh dvoma vershinami inshi vershini na cih shlyahah ne pokazano zhirna liniya najkorotshij shlyah z pochatkovoyi v kincevu tochku Dinamichne programuvannya ye vodnochas i metodom matematichnoyi optimizaciyi i metodom komp yuternogo programuvannya V oboh kontekstah vono vikoristovuye pidhid sproshennya poshuku rozv yazku skladnoyi zadachi rozbittyam yiyi na prostishi pidzadachi chasto metodom rekursiyi Hocha deyaki zadachi ne mozhut buti rozv yazani takim chinom rishennya yaki ohoplyuyut kilka tochok u chasi dijsno chasto rozbivayutsya rekursivno na pidzadachi Belman nazivav ce principom optimalnosti Podibno do cogo v komp yuternih naukah pro problemu yaka mozhe buti rozbita na pidzadachi rekursivno govoryat sho vona maye optimalnu pidstrukturu Yaksho pidzadachi mozhut buti vkladenimi rekursivno vseredini bilshih zadach tak sho metodi dinamichnogo programuvannya mozhut buti zastosovni to isnuye zalezhnist mizh rozv yazkom zagalnoyi zadachi i rozv yazkom pidzadach V metodah optimizaciyi ce vidnoshennya virazhayetsya rivnyannyam Bellmana Dinamichne programuvannya v metodah optimizaciyi Z tochki zoru matematichnoyi optimizaciyi dinamichne programuvannya polyagaye v sproshenni znahodzhennya zagalnogo optimalnogo rozv yazku shlyahom poshuku rozv yazkiv v pidzadachah otrimanih rozbittyam zadachi na poslidovni promizhki chasu Ce virazhayetsya u viznachenni poslidovnosti znachen funkcij V1 V2 Vn z argumentom y kotrij poznachaye stan sistemi v momenti chasu i vid 1 do n Viznachennyam Vn y ye znachennya otrimane v stani y v kincevij moment chasu n Znachennya Vi v poperedni momenti chasu i n 1 n 2 2 1 mozhut buti znajdeni ruhayuchis nazad vikoristovuyuchi rekursivnu zalezhnist nazvanu rivnyannya Bellmana Dlya i 2 n znachennya Vi 1 dlya bud yakogo stanu y viznachayetsya z Vi cherez maksimizaciyu znachennya prostoyi funkciyi zazvichaj sumi vigrashu vid rishennya v moment chasu i 1 i funkciyi Vi u novomu stani sistemi yakbi ce rishennya bulo vtileno Oskilki Vi vzhe bulo rozrahovano dlya potribnih staniv to vishe navedena operaciya zabezpechuye neobhidne optimalne znachennya Vi 1 dlya cih staniv Nareshti V1 yak pochatkovij stan sistemi ye znachennyam optimalnogo rishennya Optimalne znachennya zminnih rishennya mozhe buti vidnovlene odne za odnim vikonannyam obernenih u chasi obchislen Primitki PDF Arhiv originalu PDF za 10 sichnya 2005 Procitovano 25 sichnya 2012 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Eddy S R What is dynamic programming Nature Biotechnology 22 909 910 2004 Nocedal J Wright S J Numerical Optimization page 9 Springer 2006 Cormen T H Leiserson C E Rivest R L Stein C 2001 Introduction to Algorithms 2nd ed MIT Press amp McGraw Hill ISBN 0 262 03293 7 pp 327 8 PosilannyaI Klejner Video lekciyi z dinamichnogo programuvannya nedostupne posilannya ros Ce nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Ce nezavershena stattya pro algoritmi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi