Müasir cəmiyyətdə informasiyanın həcmi planetin 20 IL əvvəl mövcud olan bütün informasiya həcmini üstələyir. Bütün daxil olan məlumatların emalı çox vaxt aparır
Dinamik proqramlaşdırma hər bir qərarın nəticələrinin hesablanması və sonrakı qərarlar üçün optimal strategiyanın işlənib hazırlanması əsasında optimal həllərin tapılmasına imkan verən texnika və metodlar toplusunu öyrənən riyazi proqramlaşdırmanın bir sahəsidir. Dinamik proqramlaşdırma məsələləri çoxmərhələlidir, ona görə də “dinamik proqramlaşdırma” termini təkcə məsələlərin xüsusi növünü müəyyən etmir, həm də riyazi proqramlaşdırma məsələlərinin ayrı-ayrı siniflərinin həlli yollarının tapılması üsullarını xarakterizə edir.
«Dinamik proqramlaşdırma» ifadəsi ilk dəfə 1940-cı illərdə Riçard Bellman tərəfindən problemin həlli prosesini təsvir etmək üçün istifadə edilmişdir, burada bir problemin cavabı yalnız ondan «əvvəlki» problem həll edildikdən sonra əldə edilə bilər.
Müasir cəmiyyətdə informasiyanın həcmi planetin 20 il əvvəl mövcud olan bütün informasiya həcmini üstələyir. Bütün daxil olan məlumatların emalı çox vaxt aparır. Riyaziyyat, proqramlaşdırma baxımından inkişaf edir, getdikcə mürəkkəbləşirlər. Sürətli və keyfiyyətli informasiyanın emalı prosesi çətin məsələdir. Mürəkkəb tapşırıqları bir çox sadə tapşırıqlara bölməklə, maksimum nəticə əldə etmək üçün hesablamalara və lazımi proseslərin işlənməsinə sərf olunan vaxtı azaldırıq. Əgər bir mərhələli proseslər üçün qəbul edilən qərarlar, bir qayda olaraq, nisbətən sadədirsə, çoxmərhələli proseslərdə qərarın strukturu müqayisə olunmayacaq dərəcədə mürəkkəbdir. Bu problemləri həll etmək təkcə yeni başlayanlar üçün deyil, həm də təcrübəli proqramçı üçün çox çətindir. 1940-cı ildə Riçard Bellman ilk dəfə mürəkkəb müasir problemlərin həlli üçün ən mühüm əsas olan metodu işləyib hazırladı. "Bellman Metodu" və ya "Dinamik Proqramlaşdırma Metodu" mürəkkəb məsələləri daha sadə kəsişən alt problemlərə bölmək yolu ilə həll etmək üçün məşhur riyazi üsuldur. 1953-cü ildə R. Bellman dinamik proqramlaşdırma metodunu optimallıq prinsipindən istifadə etməklə həll edilən bir sıra konkret praktiki məsələlərə tətbiq etdi. Metodun əhatə dairəsi statik, xətti və riyazi proqramlaşdırmadan fərqli olaraq zamanla inkişaf edən çoxmərhələli proseslər idi.
Dinamik proqramlaşdırmanın əsas ideyası mühüm problemi nəzərdən keçirmək və onu daha kiçik, fərdiləşdirilmiş komponentlərə bölməkdir. Həyata keçirilməsinə gəldikdə, optimal üsullar alqoritmin səmərəliliyini artırmaq üçün məlumatların saxlanmasına və təkrar istifadəyə əsaslanır. Gördüyümüz kimi, proqram təminatının hazırlanmasında bir çox suallar dinamik proqramlaşdırmanın müxtəlif formalarından istifadə etməklə həll olunur. Bu üsul, optimal həllərin sadə bir dəyişəndən istifadə etməklə hazırlana biləcəyini və ya mürəkkəb məlumat strukturu və ya alqoritm tələb etdiyini tanımaqdır.
Bizim dövrümüzdə elm təşkilat və idarəetmə məsələlərinə getdikcə daha çox diqqət yetirir ki, bu da mürəkkəb məqsədyönlü proseslərin strukturu və təşkili baxımından təhlil edilməsi zərurətinə səbəb olur. Təcrübə ehtiyacları «əməliyyat tədqiqatı» adı altında rahat şəkildə qruplaşdırılan xüsusi üsulları həyata keçirdi. Bu termin məqsədyönlü insan fəaliyyətinin bütün sahələrində qərarların əsaslandırılması üçün riyazi, kəmiyyət üsullarından istifadəni nəzərdə tutur.
Əməliyyat tədqiqatının məqsədi müəyyən bir problemi həll etmək üçün ən yaxşı hərəkət kursunu müəyyən etməkdir. Əsas rol riyazi modelləşdirməyə verilir. Riyazi modeli qurmaq üçün tədqiq olunan sistemin işləmə məqsədini ciddi şəkildə başa düşmək və məqbul dəyərlərin diapazonunu müəyyən edən məhdudiyyətlər haqqında məlumata malik olmaq lazımdır. Məqsəd və məhdudiyyətlər funksiyalar kimi göstərilməlidir.
Əməliyyat tədqiqatı modellərində məhdudiyyətlərin və məqsəd funksiyasının asılı olduğu dəyişənlər diskret (əksər hallarda tam ədəd) və davamlı (davamlı) ola bilər. Öz növbəsində məhdudiyyətlər və məqsəd funksiyası xətti və qeyri-xətti bölünür. Bu modellərin həlli üçün müxtəlif üsullar mövcuddur, onlardan ən məşhuru və effektivi məqsəd funksiyası və bütün məhdudiyyətlər xətti olduqda xətti proqramlaşdırma metodlarıdır. Digər növ riyazi modellərin həlli üçün dinamik proqramlaşdırma üsulları, tam proqramlaşdırma, qeyri-xətti proqramlaşdırma, çoxməqsədli optimallaşdırma və şəbəkə modellərinin üsulları nəzərdə tutulmuşdur.
Əməliyyat tədqiqatının demək olar ki, bütün üsulları iterativ xarakter daşıyan hesablama alqoritmləri yaradır. Bu o deməkdir ki, hər bir addımda (iterasiya) biz tədricən optimal həllə yaxınlaşan həll əldə etdikdə problem ardıcıllıqla (iterativ) həll olunur.
Alqoritmlərin iterativ təbiəti adətən eyni tipli böyük hesablamalara gətirib çıxarır. Bu alqoritmlərin əsasən kompüter tətbiqi üçün hazırlanmasının səbəbi budur.
Əməliyyatların tədqiqi üsullarının əksəriyyəti ilk növbədə dəqiq müəyyən edilmiş məzmunlu tapşırıqlarla əlaqələndirilir. Klassik riyaziyyat aparatının çoxlu sayda dəyişənləri və/yaxud bərabərsizliklər şəklində məhdudiyyətləri ehtiva edən bir çox optimallaşdırma məsələlərini həll etmək üçün az faydası olduğu ortaya çıxdı. Şübhəsiz ki, yüksək ölçülü bir problemi yalnız bir neçə dəyişən daxil olmaqla daha kiçik ölçülü alt problemlərə bölmək və sonra ümumi problemi hissələrlə həll etmək ideyasının cəlbediciliyi. Dinamik proqramlaşdırma metodu məhz bu fikrə əsaslanır.
Dinamik proqramlaşdırma (DP) riyazi metoddur, onun yaradılması və inkişafı ilk növbədə Bellmana məxsusdur. Metod resursların bölüşdürülməsi, dəyişdirilməsi və inventarların idarə edilməsi, yükləmə problemləri də daxil olmaqla çox geniş problemləri həll etmək üçün istifadə edilə bilər. Dinamik proqramlaşdırmanın xarakterik xüsusiyyəti, hər biri bir idarə olunan dəyişənlə əlaqəli olan bir problemin mərhələlərlə həllinə yanaşmadır. Müxtəlif mərhələləri birləşdirən təkrarlanan hesablama prosedurları toplusu son mərhələyə çatdıqda bütövlükdə problemin mümkün optimal həllini təmin edir.
Dinamik proqramlaşdırma adının mənşəyi çox güman ki, sabit vaxt intervallarında qərar qəbulu problemlərində (məsələn, inventarların idarə edilməsi məsələlərində) dinamik proqramlaşdırma metodlarından istifadə ilə bağlıdır. Bununla belə, zaman amilinin nəzərə alınmadığı problemləri həll etmək üçün DP metodlarından da uğurla istifadə olunur. Bu səbəbdən problemin həlli prosesinin mərhələli xarakterini əks etdirən çoxmərhələli proqramlaşdırma termini daha uyğun görünür.
Dinamik proqramlaşdırma nəzəriyyəsinin əsasını təşkil edən əsas prinsip optimallıq prinsipidir. Mahiyyət etibarı ilə o, təkrarlanan hesablama prosedurlarından istifadə etməklə, parçalanmaya (bu, ilkin tərtibdə məsələnin birbaşa həllindən daha məqbul yoldur) imkan verən məsələnin mərhələli həlli qaydasını müəyyən edir.
Dinamik proqramlaşdırma idarə olunan proseslərin optimal planlaşdırılmasına imkan verir. “İdarə olunan” dedikdə bu və ya digər dərəcədə təsir edə biləcəyimiz prosesləri nəzərdə tuturuq.