ഡൈനാമിക് പ്രോഗ്രാമിംഗിലേക്കുള്ള ആമുഖം. ഡൈനാമിക് പ്രോഗ്രാമിംഗ് എന്ന ആശയം

വിശകലനം ചെയ്ത സാഹചര്യത്തിൽ അനിശ്ചിതത്വ ഘടകങ്ങൾ അടങ്ങിയിട്ടില്ലാത്ത സാഹചര്യത്തിൽ ഒപ്റ്റിമൽ പരിഹാരം വേഗത്തിൽ കണ്ടെത്താൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു ഗണിതശാസ്ത്ര ഉപകരണമാണ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്. ഒരു വലിയ സംഖ്യവ്യത്യസ്ത ഫലങ്ങൾ നൽകുന്ന പെരുമാറ്റ ഓപ്ഷനുകൾ, അവയിൽ ഏറ്റവും മികച്ചത് തിരഞ്ഞെടുക്കേണ്ടത് ആവശ്യമാണ്. ഡൈനാമിക് പ്രോഗ്രാമിംഗ് സമീപനങ്ങൾ ഒരു പ്രത്യേക ക്ലാസ് പ്രശ്നങ്ങളെ ചെറുതും സങ്കീർണ്ണമല്ലാത്തതുമായ പ്രശ്നങ്ങളായി വിഭജിച്ച് പരിഹരിക്കുന്നു. തത്വത്തിൽ, ഇത്തരത്തിലുള്ള പ്രശ്നങ്ങൾ എല്ലാം ലളിതമായി എണ്ണുന്നതിലൂടെ പരിഹരിക്കാനാകും സാധ്യമായ ഓപ്ഷനുകൾഅവയിൽ ഏറ്റവും മികച്ചത് തിരഞ്ഞെടുക്കുന്നു, പക്ഷേ പലപ്പോഴും അത്തരമൊരു തിരയൽ വളരെ ബുദ്ധിമുട്ടാണ്. അത്തരം സന്ദർഭങ്ങളിൽ, ഒപ്റ്റിമൽ തീരുമാനമെടുക്കുന്ന പ്രക്രിയയെ ഘട്ടങ്ങളായി (ഘട്ടങ്ങൾ) വിഭജിക്കുകയും ഡൈനാമിക് പ്രോഗ്രാമിംഗ് രീതി ഉപയോഗിച്ച് പഠിക്കുകയും ചെയ്യാം.

R.E. Bellman ആവിഷ്‌കരിച്ച ഒപ്റ്റിമലിറ്റി തത്വത്തിൻ്റെ അടിസ്ഥാനത്തിലാണ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ് രീതികളിലൂടെയുള്ള പ്രശ്‌നങ്ങളുടെ പരിഹാരം നടപ്പിലാക്കുന്നത്: ഒപ്റ്റിമൽ സ്വഭാവത്തിന് സിസ്റ്റത്തിൻ്റെ പ്രാരംഭ സ്വഭാവവും പ്രാരംഭ പരിഹാരവും എന്തുതന്നെയായാലും, തുടർന്നുള്ള പരിഹാരം ഒപ്റ്റിമൽ സ്വഭാവം നിർണ്ണയിക്കണം. പ്രാരംഭ പരിഹാരത്തിൻ്റെ ഫലമായി ലഭിച്ച സംസ്ഥാനവുമായി ബന്ധപ്പെട്ട്.

അതിനാൽ, മുഴുവൻ പ്രക്രിയയും പൂർത്തിയാകുമ്പോൾ ലഭിക്കുന്ന മൊത്തത്തിലുള്ള നേട്ടം കണക്കിലെടുത്ത് ഓരോ ഘട്ടത്തിൻ്റെയും ആസൂത്രണം നടത്തണം, ഇത് തിരഞ്ഞെടുത്ത മാനദണ്ഡമനുസരിച്ച് അന്തിമഫലം ഒപ്റ്റിമൈസ് ചെയ്യാൻ അനുവദിക്കുന്നു.

എന്നിരുന്നാലും, ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഒരു സാർവത്രിക പരിഹാര രീതിയല്ല. ഈ രീതിയിലൂടെ പരിഹരിച്ച മിക്കവാറും എല്ലാ പ്രശ്നങ്ങളും അതിൻ്റേതായ സ്വഭാവസവിശേഷതകളാൽ സവിശേഷമാണ്, അത് പരിഹരിക്കുന്നതിന് ഏറ്റവും അനുയോജ്യമായ രീതികൾക്കായി ഒരു തിരയൽ ആവശ്യമാണ്. കൂടാതെ, പല സംസ്ഥാനങ്ങളുമായും മൾട്ടി-സ്റ്റെപ്പ് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള വലിയ വോള്യങ്ങളും സങ്കീർണ്ണതയും കുറഞ്ഞ അളവിലുള്ള പ്രശ്നങ്ങൾ തിരഞ്ഞെടുക്കുന്നതിനോ അല്ലെങ്കിൽ കംപ്രസ് ചെയ്ത വിവരങ്ങൾ ഉപയോഗിക്കേണ്ടതിൻ്റെയോ ആവശ്യകതയിലേക്ക് നയിക്കുന്നു.

ഇത്തരം പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിക്കുന്നു: അവയുടെ ഉപയോഗത്തിൻ്റെ പുതിയ മേഖലകൾക്കിടയിൽ അപൂർവ മൂലധന നിക്ഷേപങ്ങളുടെ വിതരണം; ഡിമാൻഡ് അല്ലെങ്കിൽ ഇൻവെൻ്ററി കൈകാര്യം ചെയ്യുന്നതിനുള്ള നിയമങ്ങളുടെ വികസനം; ഉൽപ്പന്നങ്ങളുടെ ഡിമാൻഡിലെ ഏറ്റക്കുറച്ചിലുകളുടെ സാഹചര്യങ്ങളിൽ ഉൽപാദനം ഷെഡ്യൂൾ ചെയ്യുന്നതിനും തൊഴിൽ തുല്യമാക്കുന്നതിനുമുള്ള തത്വങ്ങളുടെ വികസനം, നിലവിലുള്ളതും നിലവിലുള്ളതുമായ കലണ്ടർ പ്ലാനുകൾ തയ്യാറാക്കൽ പ്രധാന അറ്റകുറ്റപ്പണികൾഉപകരണങ്ങളും അതിൻ്റെ മാറ്റിസ്ഥാപിക്കലും; ഗതാഗത ശൃംഖലയിലെ ഏറ്റവും ചെറിയ ദൂരങ്ങൾക്കായി തിരയുക; ഒരു വാണിജ്യ പ്രവർത്തനത്തിൻ്റെ വികസനത്തിൻ്റെ ക്രമം രൂപപ്പെടുത്തൽ മുതലായവ.

ഒപ്റ്റിമൈസേഷൻ പ്രക്രിയ വിഭജിക്കട്ടെ എൻപടികൾ. ഓരോ ഘട്ടത്തിലും, രണ്ട് തരം വേരിയബിളുകൾ നിർവചിക്കേണ്ടതുണ്ട് - ഒരു സംസ്ഥാന വേരിയബിൾ എസ്കൺട്രോൾ വേരിയബിളും എക്സ്. ഒരു നിശ്ചിത സമയത്ത് സിസ്റ്റം സ്വയം കണ്ടെത്തുന്ന അവസ്ഥകൾ വേരിയബിൾ നിർണ്ണയിക്കുന്നു. കെ-ആം ഘട്ടം. ഈ ഘട്ടത്തെ ആശ്രയിച്ച്, നിങ്ങൾക്ക് വേരിയബിളിൻ്റെ സവിശേഷതയുള്ള ചില നിയന്ത്രണങ്ങൾ പ്രയോഗിക്കാൻ കഴിയും. നിയന്ത്രണം പ്രയോഗിക്കുന്നു കെ-step കുറച്ച് ഫലം നൽകുകയും സിസ്റ്റത്തെ പുതിയ അവസ്ഥയിലേക്ക് മാറ്റുകയും ചെയ്യുന്നു. സാധ്യമായ എല്ലാ സംസ്ഥാനങ്ങൾക്കും കെ-step, സാധ്യമായ എല്ലാ നിയന്ത്രണങ്ങളിലും ഒപ്റ്റിമൽ നിയന്ത്രണം തിരഞ്ഞെടുത്തു ഘട്ടങ്ങളിൽ നേടിയെടുക്കുന്ന ഫലം കെ th എൻ-th ഒപ്റ്റിമൽ ആയി മാറി. ഈ ഫലത്തിൻ്റെ സംഖ്യാ സ്വഭാവത്തെ ബെൽമാൻ ഫംഗ്ഷൻ എന്ന് വിളിക്കുന്നു, ഇത് സ്റ്റെപ്പ് നമ്പറിനെ ആശ്രയിച്ചിരിക്കുന്നു കെസിസ്റ്റം അവസ്ഥയും.

പ്രശ്നത്തിനുള്ള മുഴുവൻ പരിഹാരവും രണ്ട് ഘട്ടങ്ങളായി തിരിച്ചിരിക്കുന്നു. വിളിക്കപ്പെടുന്ന ആദ്യ ഘട്ടത്തിൽ സോപാധിക ഒപ്റ്റിമൈസേഷൻ ,ബെൽമാൻ ഫംഗ്‌ഷനും എല്ലാവർക്കും അനുയോജ്യമായ നിയന്ത്രണങ്ങളും കണ്ടെത്തി സാധ്യമായ സംസ്ഥാനങ്ങൾഅവസാന ഘട്ടത്തിൽ തുടങ്ങി ഓരോ ഘട്ടത്തിലും.

ബെൽമാൻ ഫംഗ്‌ഷനും അനുബന്ധമായ ഒപ്റ്റിമൽ നിയന്ത്രണങ്ങളും എല്ലാ ഘട്ടങ്ങളിലും കണ്ടെത്തും എൻഒന്നാമത്തേത് വഴി, പ്രശ്നം പരിഹരിക്കുന്നതിനുള്ള രണ്ടാം ഘട്ടം നടപ്പിലാക്കുന്നു, അതിനെ വിളിക്കുന്നു നിരുപാധികമായ ഒപ്റ്റിമൈസേഷൻ .

പൊതുവായ സാഹചര്യത്തിൽ, ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നം ഇനിപ്പറയുന്ന രീതിയിൽ രൂപപ്പെടുത്തിയിരിക്കുന്നു: അത്തരമൊരു നിയന്ത്രണം നിർണ്ണയിക്കാൻ അത് ആവശ്യമാണ് , പ്രാരംഭ അവസ്ഥയിൽ നിന്ന് സിസ്റ്റം കൈമാറ്റം ചെയ്യുന്നു അന്തിമ അവസ്ഥയിലേക്ക് , ഇതിൽ ടാർഗെറ്റ് ഫംഗ്‌ഷൻ
ഏറ്റവും വലിയ (ചെറിയ) മൂല്യം എടുക്കുന്നു.

ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ ഗണിതശാസ്ത്ര മോഡലിൻ്റെ സവിശേഷതകൾ ഇനിപ്പറയുന്നവയാണ്:

    ഒപ്റ്റിമൈസേഷൻ പ്രശ്നം ഒരു പരിമിതമായ മൾട്ടി-സ്റ്റെപ്പ് നിയന്ത്രണ പ്രക്രിയയായി രൂപപ്പെടുത്തിയിരിക്കുന്നു;

    ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻ (പണമടയ്ക്കൽ) സങ്കലനവും ഓരോ ഘട്ടത്തിൻ്റെയും ഒബ്ജക്റ്റീവ് ഫംഗ്ഷനുകളുടെ ആകെത്തുകയ്ക്ക് തുല്യവുമാണ്:

സോപാധിക ഒപ്റ്റിമൈസേഷൻ. മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, ഈ ഘട്ടത്തിൽ ബെൽമാൻ ഫംഗ്ഷനും ഒപ്റ്റിമൽ നിയന്ത്രണവും ഓരോ ഘട്ടത്തിലും സാധ്യമായ എല്ലാ സ്റ്റേറ്റുകൾക്കും കണ്ടെത്തി, ബാക്ക്വേർഡ് സ്വീപ്പ് അൽഗോരിതം അനുസരിച്ച് അവസാനത്തേതിൽ നിന്ന് ആരംഭിക്കുന്നു. അവസാനം എൻഒപ്റ്റിമൽ നിയന്ത്രണം കണ്ടെത്തുക ബെൽമാൻ ഫംഗ്‌ഷൻ്റെ മൂല്യം സങ്കീർണ്ണമല്ല, കാരണം , സാധ്യമായ എല്ലാ മൂല്യങ്ങളും പരമാവധി എടുക്കുന്നിടത്ത് .

ഓരോ ഘട്ടത്തിലും ബെൽമാൻ ഫംഗ്‌ഷനെ ഒരേ ഫംഗ്‌ഷനുമായി ബന്ധിപ്പിക്കുന്ന ആവർത്തന ബന്ധം അനുസരിച്ച് കൂടുതൽ കണക്കുകൂട്ടൽ നടത്തപ്പെടുന്നു, എന്നാൽ മുമ്പത്തെ ഘട്ടത്തിൽ കണക്കാക്കുന്നു:

ഈ പരമാവധി (അല്ലെങ്കിൽ ഏറ്റവും കുറഞ്ഞത്) സാധ്യമായ എല്ലാവരാലും നിർണ്ണയിക്കപ്പെടുന്നു കെഒപ്പം എസ്വേരിയബിൾ മൂല്യങ്ങൾ നിയന്ത്രിക്കുക എക്സ്.

ഉപാധികളില്ലാത്ത ഒപ്റ്റിമൈസേഷൻ. ബെൽമാൻ ഫംഗ്‌ഷനും അനുബന്ധമായ ഒപ്റ്റിമൽ നിയന്ത്രണങ്ങളും എല്ലാ ഘട്ടങ്ങളിലും കണ്ടെത്തും എൻ th മുതൽ ആദ്യം വരെ (ആദ്യ ഘട്ടത്തിൽ കെ =1 സിസ്റ്റത്തിൻ്റെ അവസ്ഥ അതിൻ്റെ പ്രാരംഭ നിലയ്ക്ക് തുല്യമാണ് ), പ്രശ്നം പരിഹരിക്കുന്നതിനുള്ള രണ്ടാം ഘട്ടം നടപ്പിലാക്കുന്നു. ഒപ്റ്റിമൽ നിയന്ത്രണം ആദ്യ ഘട്ടത്തിൽ കണ്ടെത്തുന്നു , ഇതിൻ്റെ ആപ്ലിക്കേഷൻ സിസ്റ്റത്തെ സംസ്ഥാനത്തേക്ക് മാറ്റും
, സോപാധികമായ ഒപ്റ്റിമൈസേഷൻ്റെ ഫലങ്ങൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഏതൊക്കെയാണെന്ന് അറിഞ്ഞുകൊണ്ട്, രണ്ടാം ഘട്ടത്തിൽ ഒപ്റ്റിമൽ നിയന്ത്രണം കണ്ടെത്തുക, അങ്ങനെ അവസാനം വരെ എൻ-ആം ഘട്ടം.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിച്ച് മൂന്ന് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള ഉദാഹരണങ്ങൾ നമുക്ക് പരിഗണിക്കാം, ഇതിൻ്റെ ഉള്ളടക്കത്തിന് സംസ്ഥാനത്തിൻ്റെയും നിയന്ത്രണ വേരിയബിളുകളുടെയും തിരഞ്ഞെടുപ്പ് ആവശ്യമാണ്.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ്, മൾട്ടി-സ്റ്റെപ്പ് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള സിദ്ധാന്തത്തിനും രീതികൾക്കും വേണ്ടി നീക്കിവച്ചിരിക്കുന്ന ഒപ്റ്റിമൽ നിയന്ത്രണത്തിൻ്റെ ഒരു വിഭാഗം. ഒപ്റ്റിമൽ കൺട്രോൾ പ്രശ്‌നങ്ങളിൽ, സാധ്യമായ നിയന്ത്രണങ്ങളിൽ, ഒബ്ജക്റ്റീവ് ഫംഗ്‌ഷൻ എന്ന് വിളിക്കപ്പെടുന്നതിൻ്റെ അങ്ങേയറ്റം (ചെറിയതോ വലുതോ ആയ) മൂല്യം കൈവരിക്കുന്ന ഒന്നിനെയാണ് അന്വേഷിക്കുന്നത് - പ്രക്രിയയുടെ ചില സംഖ്യാ സ്വഭാവം. ഡൈനാമിക് പ്രോഗ്രാമിംഗിൽ, മൾട്ടി-സ്റ്റെപ്പിംഗ് ഒന്നുകിൽ ഒരു മൾട്ടി-സ്റ്റേജ് പ്രോസസ്സ് ഘടനയായി മനസ്സിലാക്കുന്നു, അല്ലെങ്കിൽ നിയന്ത്രണം തുടർച്ചയായി നിരവധി ഘട്ടങ്ങളായി (ഘട്ടങ്ങൾ) വിഭജിച്ചിരിക്കുന്നു, ഒരു ചട്ടം പോലെ, സമയത്തിൻ്റെ വ്യത്യസ്ത പോയിൻ്റുകളിലേക്ക്. ചിലപ്പോൾ മൾട്ടി-സ്റ്റെപ്പ് സ്വഭാവം പ്രക്രിയയുടെ സത്തയിൽ നിന്നാണ് ഉണ്ടാകുന്നത്, പക്ഷേ ചലനാത്മക പ്രോഗ്രാമിംഗ് രീതികൾ ഉപയോഗിക്കുന്നതിനുള്ള സാധ്യത ഉറപ്പാക്കാൻ ഇത് കൃത്രിമമായി അവതരിപ്പിക്കാനും കഴിയും. ഡൈനാമിക് പ്രോഗ്രാമിംഗിലെ പ്രോഗ്രാമിംഗ് എന്നത് തീരുമാനമെടുക്കൽ (ആസൂത്രണം) സൂചിപ്പിക്കുന്നു, കൂടാതെ "ഡൈനാമിക്" എന്ന വാക്ക് സമയത്തിൻ്റെയും പ്രവർത്തനങ്ങളുടെ ക്രമത്തിൻ്റെയും പ്രധാന പങ്ക് സൂചിപ്പിക്കുന്നു. ഡൈനാമിക് പ്രോഗ്രാമിംഗ് രീതികളാണ് അവിഭാജ്യപ്രവർത്തന ഗവേഷണത്തിൽ ഉപയോഗിക്കുന്ന രീതികളും ഒപ്റ്റിമൽ ആസൂത്രണ പ്രശ്നങ്ങളിൽ ഉപയോഗിക്കുന്നു (ഉദാഹരണത്തിന്, പ്രശ്നങ്ങളിൽ ഒപ്റ്റിമൽ ഡിസ്ട്രിബ്യൂഷൻവിഭവങ്ങൾ, ഇൻവെൻ്ററി മാനേജ്മെൻ്റ് സിദ്ധാന്തത്തിൽ, ഉപകരണങ്ങൾ മാറ്റിസ്ഥാപിക്കുന്നതിനുള്ള പ്രശ്നങ്ങൾ) കൂടാതെ പലതും പരിഹരിക്കുന്നതിൽ സാങ്കേതിക പ്രശ്നങ്ങൾ(ഉദാഹരണത്തിന്, ക്രമാനുഗതമായ രാസപ്രക്രിയകൾ നിയന്ത്രിക്കുന്നതിലെ പ്രശ്നങ്ങളിൽ, ഒപ്റ്റിമൽ റോഡ് മുട്ടയിടുന്നതിലെ പ്രശ്നങ്ങളിൽ).

ചില സിസ്റ്റം X കൈകാര്യം ചെയ്യുന്ന പ്രക്രിയയിൽ m ഘട്ടങ്ങൾ (ഘട്ടങ്ങൾ) അടങ്ങിയിരിക്കട്ടെ; ഓൺ i-ാം ഘട്ടംകൺട്രോൾ y i സിസ്റ്റത്തെ x i-1 എന്ന അവസ്ഥയിൽ നിന്ന് അത് (i - 1) ആം ഘട്ടത്തിന് ശേഷമുള്ള ഒരു പുതിയ അവസ്ഥയിലേക്ക് മാറ്റുന്നു x i. ഈ സാഹചര്യത്തിൽ, f i (x, y) എന്ന ഫംഗ്ഷൻ നൽകിയിരിക്കുന്നു, കൂടാതെ ഈ ഫംഗ്ഷനിൽ നിന്ന് x i-1, y i മൂല്യങ്ങളാൽ പുതിയ അവസ്ഥ നിർണ്ണയിക്കപ്പെടുന്നു, അങ്ങനെ x i = f i (x i-1, y i), i = 1, 2,..., എം. അങ്ങനെ, നിയന്ത്രണങ്ങൾ y 1, y 2, ..., y m പ്രാരംഭ അവസ്ഥയിൽ നിന്ന് സിസ്റ്റത്തെ x 0 ∈ X 0 അവസാന അവസ്ഥയിലേക്ക് മാറ്റുന്നു x m ∈ X m, ഇവിടെ X 0, X m എന്നിവ അനുവദനീയമായ പ്രാരംഭവും അവസാനവുമായ അവസ്ഥകളുടെ ഗണങ്ങളാണ്. സിസ്റ്റം എക്സ്.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നങ്ങളുടെ സാധ്യമായ ഫോർമുലേഷനുകളിലൊന്ന് ഇനിപ്പറയുന്നതാണ്. പ്രാരംഭ അവസ്ഥ x 0 നൽകുമ്പോൾ, സിസ്റ്റം X അനുവദനീയമായ അന്തിമ അവസ്ഥയിലേക്കും അതേ സമയം തന്നിരിക്കുന്ന ഒബ്ജക്റ്റീവ് ഫംഗ്‌ഷൻ F(x) വിധത്തിൽ y 1, y 2, ..., y m നിയന്ത്രണങ്ങൾ തിരഞ്ഞെടുക്കേണ്ടത് ആവശ്യമാണ്. 0, y 1, x 1, .., y m, x m) എത്തി പരമാവധി മൂല്യംഎഫ്*, അതായത്.

എല്ലാ നിയന്ത്രണങ്ങളും y 1, ..., y m, ഇതിനായി x m ∈ X m.

ഡൈനാമിക് പ്രോഗ്രാമിംഗിൽ, ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻ അഡിറ്റീവ് ആണെന്ന് സാധാരണയായി അനുമാനിക്കപ്പെടുന്നു. പരിഗണിച്ച ഉദാഹരണത്തിൽ, ഇത് അർത്ഥമാക്കുന്നത്

കൂടാതെ, ഡൈനാമിക് പ്രോഗ്രാമിംഗിൽ, പ്രശ്നത്തിൽ അനന്തരഫലങ്ങളൊന്നുമില്ലെന്ന് അനുമാനിക്കപ്പെടുന്നു: ഘട്ടത്തിൽ എടുക്കുന്ന തീരുമാനങ്ങൾ (നിയന്ത്രണങ്ങൾ) i ആ സമയത്ത് സിസ്റ്റത്തിൻ്റെ x i അവസ്ഥയെ മാത്രമേ ബാധിക്കുകയുള്ളൂ. മുകളിൽ സൂചിപ്പിച്ച രണ്ട് നിയന്ത്രണ വ്യവസ്ഥകളും ദുർബലമാകാം, പക്ഷേ രീതിയെ ഗണ്യമായി സങ്കീർണ്ണമാക്കുന്നതിൻ്റെ ചെലവിൽ മാത്രം.

ആർ. ബെൽമാൻ രൂപപ്പെടുത്തിയ ഒപ്റ്റിമലിറ്റി തത്വത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്. ചില നിയന്ത്രണങ്ങൾ y 1, y 2, ..., y k തിരഞ്ഞെടുക്കപ്പെടട്ടെ, അങ്ങനെ ഒരു ട്രാക്ടറി x 0, x 1, ..., x k സ്റ്റേറ്റുകൾ, പ്രക്രിയ പൂർത്തിയാക്കാൻ അത് ആവശ്യമാണ്, അതായത്, y k+1, തിരഞ്ഞെടുക്കുക. .., y m (അതിനാൽ x k+1 , ..., x m).

പ്രക്രിയയുടെ അവസാന ഭാഗം പരമാവധി പ്രവർത്തനം കൈവരിക്കുന്നതിന് അനുയോജ്യമല്ലെങ്കിൽ

അപ്പോൾ മുഴുവൻ പ്രക്രിയയും ഒപ്റ്റിമൽ ആയിരിക്കില്ല. ബെൽമാൻ്റെ ഒപ്റ്റിമലിറ്റി തത്വം ഉപയോഗിച്ച്, നമുക്ക് അടിസ്ഥാനം നേടാനാകും പ്രവർത്തനപരമായ ബന്ധംഡൈനാമിക് പ്രോഗ്രാമിംഗ്, അത് ഇനിപ്പറയുന്നതാണ്. ω m (x) = 0,

k = 1, 2, ..., m, ഇവിടെ k ഘട്ടത്തിൽ അനുവദനീയമായ എല്ലാ നിയന്ത്രണങ്ങളും പരമാവധി ഏറ്റെടുക്കുന്നു. ω k-യിലെ ω k-1 ൻ്റെ ആശ്രിതത്വം നിർണ്ണയിക്കുന്ന ബന്ധത്തെ ബെൽമാൻ സമവാക്യം എന്ന് വിളിക്കുന്നു. ഈ ഫംഗ്‌ഷനുകളുടെ അർത്ഥം വളരെ വ്യക്തമാണ്: ഘട്ടം k-1-ലെ സിസ്റ്റം x അവസ്ഥയിലാണെങ്കിൽ, ω k-1 (x) എന്നത് ഫംഗ്‌ഷൻ്റെ പരമാവധി സാധ്യമായ മൂല്യമാണ്. ω k-1 (x) ഫംഗ്‌ഷനുകളുടെ നിർമ്മാണത്തോടൊപ്പം, ഓരോ ഘട്ടത്തിലും സോപാധികമായ ഒപ്റ്റിമൽ നിയന്ത്രണങ്ങൾ y k (x) കണ്ടെത്തുന്നു, അതായത്, സിസ്റ്റത്തിൻ്റെ അവസ്ഥ x-നെക്കുറിച്ചുള്ള സാധ്യമായ എല്ലാ അനുമാനങ്ങൾക്കും കീഴിലുള്ള ഒപ്റ്റിമൽ നിയന്ത്രണത്തിൻ്റെ മൂല്യങ്ങൾ ഘട്ടം k-1. അവസാന ഒപ്റ്റിമൽ നിയന്ത്രണങ്ങൾ കണ്ടെത്തി തുടർച്ചയായ കണക്കുകൂട്ടൽഅളവുകൾ ω 0 (x 0) = F*, y 1, x 1, y 2, ..., y m, x m.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഒന്നിലധികം പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നു നിർദ്ദിഷ്ട ചുമതലഒരു നിശ്ചിത x 0 ന്, ഏത് പ്രാരംഭ അവസ്ഥയ്ക്കും ഒരേ തരത്തിലുള്ള എല്ലാ സമാന പ്രശ്നങ്ങളും. ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ സംഖ്യാപരമായ നടപ്പാക്കൽ വളരെ സങ്കീർണ്ണമാണ്, കാരണം ഇതിന് ധാരാളം വിവരങ്ങൾ മനഃപാഠമാക്കേണ്ടതുണ്ട്, അതിനാൽ ആവർത്തിച്ച് പരിഹരിക്കേണ്ട സന്ദർഭങ്ങളിൽ ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിക്കുന്നത് നല്ലതാണ്. സാധാരണ ജോലികൾ(ഉദാഹരണത്തിന്, മാറിക്കൊണ്ടിരിക്കുന്ന ഒരു വിമാനത്തിൻ്റെ ഒപ്റ്റിമൽ ഫ്ലൈറ്റ് മോഡ് നിർണ്ണയിക്കുന്നു കാലാവസ്ഥ). സാധാരണഗതിയിൽ, ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നം വ്യതിരിക്തമായ പ്രക്രിയകൾക്കായി രൂപപ്പെടുത്തിയതാണ്, എന്നാൽ ചില സന്ദർഭങ്ങളിൽ തുടർച്ചയായ പാരാമീറ്ററുകൾ ഉപയോഗിച്ച് ചലനാത്മക പ്രശ്നങ്ങൾ പരിഹരിക്കാനും ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിക്കുന്നു.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ്കൊടുത്തു പുതിയ സമീപനംവ്യതിയാനങ്ങളുടെ കണക്കുകൂട്ടലിലെ പല പ്രശ്നങ്ങളിലേക്കും. ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ ഒരു പ്രധാന വിഭാഗം ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ സ്ഥായിയായ പ്രശ്‌നങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതായത് സിസ്റ്റത്തിൻ്റെയും അവസ്ഥയുടെയും പ്രശ്‌നങ്ങൾ. ലക്ഷ്യം പ്രവർത്തനംക്രമരഹിതമായ ഘടകങ്ങളാൽ സ്വാധീനിക്കപ്പെടുന്നു.

നിയന്ത്രിത പ്രക്രിയകളുടെ ഗണിതശാസ്ത്ര സിദ്ധാന്തത്തെക്കുറിച്ചുള്ള എൽ.എസ്. പോൺട്രിയാഗിൻ്റെയും അദ്ദേഹത്തിൻ്റെ വിദ്യാർത്ഥികളുടെയും ഫലങ്ങളിൽ നിന്ന് ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ കർശനമായ ന്യായീകരണം പിന്തുടരുന്നു.

ലിറ്റ്.: ബെൽമാൻ ആർ. ഡൈനാമിക് പ്രോഗ്രാമിംഗ്. എം., 1960; ഒപ്റ്റിമൽ പ്രക്രിയകളുടെ ഗണിതശാസ്ത്ര സിദ്ധാന്തം. എം., 1961; ഹോവാർഡ് ആർ.എ. ഡൈനാമിക് പ്രോഗ്രാമിംഗും മാർക്കോവ് പ്രക്രിയകളും. എം., 1964; ഹെഡ്‌ലി ജെ. നോൺലീനിയർ ആൻഡ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്. എം., 1967; ഹെഡ്‌ലി ജെ., വൈറ്റിൻ ടി. ഇൻവെൻ്ററി മാനേജ്‌മെൻ്റ് സിസ്റ്റങ്ങളുടെ വിശകലനം. എം., 1969.

പാഠം ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ ആശയവും അതിൻ്റെ രൂപത്തിൻ്റെ ചരിത്രപരമായ വശവും പരിശോധിക്കും. ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നങ്ങളും അവയുടെ പരിഹാരങ്ങളുടെ ചില ഉദാഹരണങ്ങളും പരിഗണിക്കുന്നു.


"ഡൈനാമിക് പ്രോഗ്രാമിംഗ്" എന്ന ആശയം ആദ്യമായി ഉപയോഗിച്ചത് 1940-കളിൽ റിച്ചാർഡ് ബെൽമാൻ ആണ്, ഒരു പ്രശ്നത്തിന് "മുമ്പുള്ള" മറ്റൊരു പ്രശ്നം പരിഹരിച്ചതിന് ശേഷം മാത്രമേ അതിനുള്ള ഉത്തരം ലഭിക്കുകയുള്ളൂ.
അങ്ങനെ, അമേരിക്കൻ ഗണിതശാസ്ത്രജ്ഞനും ഗണിതശാസ്ത്ര മേഖലയിലെ പ്രമുഖ വിദഗ്ധരിൽ ഒരാളും കമ്പ്യൂട്ടർ സാങ്കേതികവിദ്യറിച്ചാർഡ് ഏണസ്റ്റ് ബെൽമാൻ- ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ പിതാവായി.

പിന്നീട്, ആശയത്തിൻ്റെ രൂപീകരണം പരിഷ്കരിക്കുകയും മെച്ചപ്പെടുത്തുകയും ചെയ്തു ആധുനിക രൂപംബെൽമാൻ തന്നെ.

"പ്രോഗ്രാമിംഗ്" എന്ന വാക്ക്"ഡൈനാമിക് പ്രോഗ്രാമിംഗ്" എന്നതിൻ്റെ പശ്ചാത്തലത്തിൽ യഥാർത്ഥത്തിൽ പ്രോഗ്രാമിംഗിനെക്കുറിച്ചുള്ള ക്ലാസിക്കൽ ധാരണയെ സൂചിപ്പിക്കുന്നു (ഒരു പ്രോഗ്രാമിംഗ് ഭാഷയിൽ കോഡ് എഴുതുന്നത്) ഫലത്തിൽ അതുമായി യാതൊരു ബന്ധവുമില്ല. "പ്രോഗ്രാമിംഗ്" എന്ന വാക്കിന് "ഗണിത പ്രോഗ്രാമിംഗ്" എന്ന വാക്യത്തിലെ അതേ അർത്ഥമുണ്ട്, അത് "ഒപ്റ്റിമൈസേഷൻ" എന്ന വാക്കിൻ്റെ പര്യായമാണ്.

അതുകൊണ്ടാണ് പ്രോഗ്രാമുകൾപ്രശ്നത്തിന് ഒരു പരിഹാരം നേടുന്നതിനുള്ള പ്രവർത്തനങ്ങളുടെ ഒപ്റ്റിമൽ സീക്വൻസായി ഉപയോഗിക്കും.

പൊതുവേ, ആരംഭിക്കാൻ, ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ അനൗപചാരിക നിർവചനംഇതുപോലെ തോന്നാം:

ഡൈനാമിക് പ്രോഗ്രാമിംഗ്കോമ്പിനേറ്ററിക്സ്, ഒപ്റ്റിമൈസേഷൻ, ഒരു നിശ്ചിത പ്രോപ്പർട്ടി ഉള്ള മറ്റ് പ്രശ്നങ്ങൾ (ഉപ ടാസ്ക്കുകൾക്കുള്ള കോ-ഓപ്റ്റിമാലിറ്റിയുടെ സ്വത്ത്) എന്നിവയുടെ ചില പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു സാങ്കേതികതയോ രീതിയോ ആണ്.

ഒപ്റ്റിമൈസേഷൻ പ്രശ്നങ്ങൾ, ഒരു ചട്ടം പോലെ, ഒന്നോ അതിലധികമോ വസ്തുനിഷ്ഠമായ ഫംഗ്ഷൻ പരമാവധിയാക്കുകയോ കുറയ്ക്കുകയോ ചെയ്യുന്ന ചുമതലയുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു (ഉദാഹരണത്തിന്, സിസ്റ്റം തകരാതിരിക്കാനുള്ള സാധ്യത വർദ്ധിപ്പിക്കുക, പ്രതീക്ഷിക്കുന്ന ലാഭം വർദ്ധിപ്പിക്കുക മുതലായവ).

കോമ്പിനേറ്ററിക്സ് പ്രശ്നങ്ങൾ, ഒരു ചട്ടം പോലെ, ചില പ്രത്യേക ഗുണങ്ങളുള്ള എത്ര വസ്തുക്കൾ ഉണ്ട്, അല്ലെങ്കിൽ എത്ര സംയോജിത വസ്തുക്കൾ ഉണ്ട് എന്ന ചോദ്യത്തിന് ഉത്തരം നൽകുക.

അതായത്, ഡിപി എല്ലാ പ്രശ്നങ്ങളും പരിഹരിക്കുന്നില്ല, ചിലത് മാത്രം, ഒരു നിശ്ചിത ക്ലാസ് സബ് ടാസ്‌ക്കുകൾ. പ്രോഗ്രാമിംഗ്, ഗണിതം, ഭാഷാശാസ്ത്രം, സ്ഥിതിവിവരക്കണക്കുകൾ, ഗെയിം സിദ്ധാന്തം, സാമ്പത്തിക ശാസ്ത്രം മുതലായവ: എന്നാൽ ഈ ക്ലാസ് ഉപടാസ്ക് വിജ്ഞാനത്തിൻ്റെ പല മേഖലകളിലും ഉപയോഗിക്കുന്നു. കമ്പ്യൂട്ടർ സയൻസ്ഇത്യാദി.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിച്ച് പരിഹരിക്കുന്ന പ്രശ്നങ്ങൾ ഉണ്ടായിരിക്കണം കോ-ഒപ്റ്റിമലിറ്റിയുടെ സ്വത്ത്, അത് തുടർന്നുള്ള പാഠങ്ങളിൽ ചർച്ച ചെയ്യും.

ഉപപ്രശ്നങ്ങളുടെ ഒപ്റ്റിമലിറ്റി പ്രോപ്പർട്ടിയുടെ അനൗപചാരിക വിശദീകരണം ഒരു ഡയഗ്രം ഉപയോഗിച്ച് പ്രകടമാക്കാം:
ഡിപി ഉപയോഗിച്ച് ഞങ്ങൾ പരിഹരിക്കാൻ ആഗ്രഹിക്കുന്ന ഒരു പ്രശ്നമുണ്ട്, അതായത്. അത് പരിഹരിക്കാൻ എന്തെങ്കിലും പ്ലാൻ കണ്ടെത്തുക. ഈ പ്രശ്നം സങ്കീർണ്ണമാണെന്നും നമുക്ക് അത് ഉടനടി പരിഹരിക്കാൻ കഴിയില്ലെന്നും പറയാം. ഞങ്ങൾ ഒരു ചെറിയ ഉപപ്രശ്നം എടുത്ത് ആദ്യം അത് പരിഹരിക്കുന്നു (x1 ന്). തുടർന്ന് ഈ ചെറിയ പരിഹാരം x1 ഉപയോഗിച്ച്, ഈ പരിഹാരത്തിൻ്റെ ഘടന മാറ്റാതെ, ഞങ്ങൾ x1, x2 എന്നിവ ഉപയോഗിച്ച് അടുത്ത പ്രശ്നം പരിഹരിക്കുന്നു. തുടങ്ങിയവ.

അരി. 1.1 ഉപപ്രശ്നങ്ങളുടെ ഒപ്റ്റിമലിറ്റി പ്രോപ്പർട്ടിയുടെ അനൗപചാരിക വിശദീകരണം

അനൗപചാരിക വിശദീകരണം കൂടുതൽ വിശദമായി ചർച്ചചെയ്യുന്നു.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിച്ച് പരിഹരിക്കപ്പെട്ട പ്രശ്നങ്ങളുടെ ഉദാഹരണങ്ങൾ

ആദ്യം, ഒപ്റ്റിമൈസേഷൻ പ്രശ്നങ്ങൾ പരിഗണിക്കുക (ടാസ്ക്കുകൾ 1-5):

  1. ഒപ്റ്റിമൽ ദൈർഘ്യമുള്ള റൂട്ട്
  2. ഉദാഹരണം:ഒരു ഗ്രാഫിൻ്റെ രൂപത്തിൽ അവതരിപ്പിച്ചിരിക്കുന്ന ചില റോഡ് മാപ്പ് ഉണ്ട്. ഞങ്ങളുടെ ലക്ഷ്യം: പോയിൻ്റിൽ നിന്ന് നേടുക ചൂണ്ടി കാണിക്കുവാന് വേണ്ടി ബി. ദൂരം കുറയ്ക്കാനോ ഇന്ധനം പാഴാക്കാനോ കഴിയുന്ന വിധത്തിൽ ഇത് ചെയ്യണം.

    ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻഇവിടെ നിന്നുള്ള ദൂരം മുമ്പ് ബി. ആ. ദൂരം കുറയ്ക്കുക എന്നതാണ് ഞങ്ങളുടെ ലക്ഷ്യം.

    പിന്നെ എന്താണ് തിരഞ്ഞെടുക്കൽ വേരിയബിൾ ? ഏറ്റവും ചെറിയ പാത കണ്ടെത്തുന്നതിന്, ഓരോ തവണയും നിങ്ങൾ തീരുമാനങ്ങൾ എടുക്കേണ്ടതുണ്ട്. ആ. ഓരോ പോയിൻ്റിലും അല്ലെങ്കിൽ ഓരോ കവലയിലും, തീരുമാനങ്ങൾ എടുക്കണം: എവിടെ തിരിയണം അല്ലെങ്കിൽ നേരെ പോകണം.

    പ്രധാനപ്പെട്ടത്:ഈ പ്രശ്നത്തിൽ നിന്ന് നിങ്ങൾക്ക് ഇതിനകം കാണാൻ കഴിയും പൊതു ഘടനഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിച്ച് പ്രശ്നങ്ങൾ പരിഹരിച്ചു: ഓരോ പ്രശ്നത്തിനും ഒരു വസ്തുനിഷ്ഠമായ പ്രവർത്തനവും ഒരു ചോയ്സ് വേരിയബിളും ഉണ്ട്.

  3. ഒരു യന്ത്രം മാറ്റിസ്ഥാപിക്കൽ (ചെലവ് കുറയ്ക്കൽ)
  4. ഉദാഹരണം:ഓരോ വർഷവും ഞങ്ങൾ പഴയ കാർ ഓടിച്ച് ഒരു വർഷത്തേക്ക് പഴയ കാർ പരിപാലിക്കുന്നതിനും പരിപാലിക്കുന്നതിനുമുള്ള ചെലവ് വഹിക്കണോ, അതോ കാർ വിറ്റ് പുതിയത് വാങ്ങണോ (വാങ്ങാനുള്ള ചെലവ് വഹിക്കണോ) എന്ന് ഞങ്ങൾ തീരുമാനിക്കുന്നു.

    ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻ:ചെലവ് കുറയ്ക്കുക (ഒന്നുകിൽ പഴയ കാർ പരിപാലിക്കുന്നതിനോ പുതിയത് വാങ്ങുന്നതിനോ ഉള്ള ചിലവുകൾ).

    തിരഞ്ഞെടുക്കൽ വേരിയബിൾ:കാർ വിൽക്കുന്നതിനോ സൂക്ഷിക്കുന്നതിനോ എല്ലാ വർഷവും തീരുമാനമെടുക്കുക.

  5. എക്സ്ചേഞ്ച് പോർട്ട്ഫോളിയോ
  6. ഉദാഹരണം:സ്റ്റോക്ക് എക്സ്ചേഞ്ചിൽ കളിക്കുന്നു, ഏതെങ്കിലും കമ്പനികളുടെ ഓഹരികൾ വാങ്ങുന്നു


    ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻ:പരമാവധിയാക്കൽ ശരാശരിവരുമാനം, കാരണം സ്റ്റോക്ക് എക്സ്ചേഞ്ചിൽ, വരുമാനം സാധ്യതാപരമായി ലഭിക്കും, അതായത്. ഇത് ഒരു സ്റ്റാറ്റിസ്റ്റിക്കൽ പ്രക്രിയയാണ്, പ്രോബബിലിസ്റ്റിക് ആണ്.

    തിരഞ്ഞെടുക്കൽ വേരിയബിൾ:ഏത് തരത്തിലുള്ള നിക്ഷേപ പോർട്ട്‌ഫോളിയോ ഉണ്ടാകും: എത്ര ഷെയറുകൾ, ഏത് കമ്പനിയാണ് നമ്മൾ വാങ്ങേണ്ടത്.

  7. ഒപ്റ്റിമൽ പ്രൊഡക്ഷൻ (ലോജിസ്റ്റിക്സ്) എന്നതിനായുള്ള ഒരു പദ്ധതി തയ്യാറാക്കുന്നു
  8. ഉദാഹരണം:ഫർണിച്ചറുകൾ നിർമ്മിക്കുന്ന ഒരു ഫാക്ടറിയുണ്ട്. നിശ്ചിത ഫർണിച്ചറുകൾ (കസേരകൾ, മേശകൾ, കാബിനറ്റുകൾ മുതലായവ) ഉൽപ്പാദിപ്പിക്കാൻ കഴിയുന്ന ഒരു നിശ്ചിത എണ്ണം തൊഴിലാളികളെ ഫാക്ടറിയിൽ നിയമിക്കുന്നു.


    ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻ: ലാഭം പരമാവധിയാക്കൽ.

    തിരഞ്ഞെടുക്കൽ വേരിയബിൾ:ആവശ്യത്തിന് അദ്ധ്വാനം ലഭിക്കുന്നതിന് എത്ര കസേരകളോ മേശകളോ നിർമ്മിക്കണമെന്ന് തിരഞ്ഞെടുക്കുന്നു.

  9. ഗെയിമുകൾ (പ്രോബബിലിസ്റ്റിക് അല്ലെങ്കിൽ നോൺ പ്രോബബിലിസ്റ്റിക്)
  10. ഉദാഹരണം:വിവിധ ഗെയിമുകളിൽ പങ്കാളിത്തം


    ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻ:വിജയിക്കാനുള്ള സാധ്യത വർദ്ധിപ്പിക്കുക അല്ലെങ്കിൽ ശരാശരി വിജയം വർദ്ധിപ്പിക്കുക തുടങ്ങിയവ.

    ഇവിടെ തിരഞ്ഞെടുക്കൽ വേരിയബിൾ നിർദ്ദിഷ്ട ഗെയിമിനെ ആശ്രയിച്ചിരിക്കുന്നു.

    1 - 5 പ്രശ്നങ്ങൾ ഒപ്റ്റിമൈസേഷൻ പ്രശ്നങ്ങളുടെ ഉദാഹരണങ്ങളാണ്.

    കോമ്പിനേറ്ററിക്സ്:

  11. ഗ്രാഫുകളും മരങ്ങളും
  12. ഉദാഹരണം:എത്ര മരങ്ങൾ ഉണ്ടെന്ന് തീരുമാനിക്കുന്നതാണ് പ്രശ്നം നിശ്ചിത സംഖ്യഇലകൾ; അല്ലെങ്കിൽ അത്തരം ഒരു ടാസ്ക് പരിഹരിക്കാൻ എത്ര ഗ്രാഫുകൾ നിലവിലുണ്ട്, മുതലായവ.

  13. നാണയ വിനിമയ പ്രശ്നം അല്ലെങ്കിൽ മാറ്റം തിരികെ നൽകാനുള്ള വഴികളുടെ എണ്ണം
  14. ഉദാഹരണം:നാണയങ്ങൾ ഉണ്ട് വിവിധ വിഭാഗങ്ങളുടെ, ഏതൊക്കെ വിധങ്ങളിൽ നിങ്ങൾക്ക് മാറ്റം തിരികെ നൽകാം.

ഹൃസ്വ വിവരണംഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ പ്രശ്നങ്ങൾ, അത് പിന്നീട് വിശദമായി ചർച്ച ചെയ്യും.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് എന്ന ആശയം

ഡിപി ഉപപ്രശ്നങ്ങളുടെ ഒപ്റ്റിമലിറ്റിയുടെ അനൗപചാരിക വിശദീകരണം.

നമുക്ക് പരിഗണിക്കാം അനൗപചാരികമായഡിപി ആശയം.

അതിനാൽ, ഒരു ഫർണിച്ചർ നിർമ്മാണ പ്ലാൻ്റിൻ്റെ ഉദാഹരണം എടുക്കാം.

വേണ്ടി ലാഭം വർദ്ധിപ്പിക്കുക എന്ന ലക്ഷ്യം നേടുന്നതിന്, നിരവധി ഉപടാസ്കുകൾ പരിഹരിക്കേണ്ടത് ആവശ്യമാണ്:

  • എത്ര കസേരകൾ നിർമ്മിക്കണം - വേരിയബിൾ X1,
  • എത്ര പട്ടികകൾ നിർമ്മിക്കണം - വേരിയബിൾ X2,
  • എത്ര തൊഴിലാളികളെ നിയമിക്കണം - വേരിയബിൾ X3,
  • ... Xn.

ധാരാളം ഉപപ്രശ്നങ്ങൾ ഉള്ളതിനാൽ, അത്തരമൊരു പ്രശ്നം എങ്ങനെ പരിഹരിക്കാമെന്ന് മനസിലാക്കാൻ പ്രയാസമാണ്. സാധാരണയായി, ഒരു ചെറിയ പ്രശ്നം പരിഹരിക്കുന്നത് പരിഹരിക്കുന്നതിനേക്കാൾ എളുപ്പമാണ് വലിയ ദൗത്യം ചെറിയവ അടങ്ങുന്ന.

അതിനാൽ, ഡിപി ഇനിപ്പറയുന്നവ നിർദ്ദേശിക്കുന്നു:

  • X1 എന്ന വേരിയബിൾ ഉപയോഗിച്ച് ഞങ്ങൾ ഒരു സബ് ടാസ്‌ക് എടുക്കുകയും ശേഷിക്കുന്ന സബ്‌ടാസ്‌ക്കുകളെക്കുറിച്ച് ഇപ്പോൾ മറക്കുകയും ചെയ്യുന്നു.
  • ഉദാഹരണത്തിന്, ഒരു ഫാക്ടറി ഉൽപ്പാദിപ്പിക്കുന്നത് കസേരകൾ മാത്രമാണ്. നേടുക എന്ന ദൗത്യം സംവിധായകനുണ്ട് പരമാവധി ലാഭംകസേര വിൽപ്പനയിൽ നിന്ന്.

  • ആദ്യത്തെ സബ്‌ടാസ്‌ക്കിനുള്ള ഒപ്റ്റിമൽ സൊല്യൂഷൻ കണ്ടെത്തിയ ശേഷം, X1, X2 എന്നീ രണ്ട് വേരിയബിളുകൾക്കായി ഞങ്ങൾ സബ്‌ടാസ്‌ക് എടുത്ത് അത് പരിഹരിക്കും. ആദ്യ ഉപ ടാസ്‌ക്കിനായി ഇതിനകം കണ്ടെത്തിയ പരിഹാരം ഉപയോഗിക്കുന്നു.
  • X1, X2 എന്നീ വേരിയബിളുകൾ ദൃശ്യമാകുന്ന ഒരു വലിയ ഉപടാസ്‌ക്കിനുള്ള പരിഹാരം ഞങ്ങൾ നേടുന്നു. തുടർന്ന്, ലഭിച്ച പരിഹാരം ഉപയോഗിച്ച്, ഞങ്ങൾ X1, X2, X3 എന്നിവ ഉൾക്കൊള്ളുന്ന ഉപടാസ്കുകൾ എടുക്കുന്നു.
  • അതിനാൽ മുഴുവൻ പൊതുവായ പ്രശ്നത്തിനും ഒരു പരിഹാരം ലഭിക്കുന്നതുവരെ ഞങ്ങൾ തുടരുന്നു.

ഡിപിയുടെ ഔപചാരിക ആശയം

പലപ്പോഴും, ഒരു പ്രശ്നം ഉന്നയിക്കുമ്പോൾ, ഒപ്റ്റിമൽ എന്ന് തോന്നുന്ന പരിഹാരമാണ് സാധ്യമായ എല്ലാ ഓപ്ഷനുകളും ശ്രമിക്കുന്നു. എന്നിരുന്നാലും, അത്തരം ഓപ്ഷനുകളുടെ വളരെ വലിയ എണ്ണം കാരണം, കമ്പ്യൂട്ടറിൻ്റെ മെമ്മറി ഓവർലോഡ് ചെയ്യുന്നതിനാൽ, ഈ രീതി എല്ലായ്പ്പോഴും സ്വീകാര്യമല്ല.

കൂടാതെ, ഇനിപ്പറയുന്ന ചോദ്യം ഉയർന്നുവരാം: ഉദാഹരണത്തിന്, ഏറ്റവും കുറഞ്ഞതോ പരമാവധിയോ കണ്ടെത്തുന്നതിന്, എന്തുകൊണ്ടാണ് നമുക്ക് ഡെറിവേറ്റീവ് കണ്ടെത്താത്തത്? അല്ലെങ്കിൽ La Grange സെറ്റുകളോ ഉപകരണത്തിൻ്റെ മറ്റ് രീതികളോ ഉപയോഗിക്കരുത് ഗണിത വിശകലനം? നിങ്ങൾക്ക് ഒരു വലിയ ആയുധശേഖരമുണ്ടെങ്കിൽ ഡിപി ആവശ്യമായി വരുന്നത് എന്തുകൊണ്ട്?

വസ്തുത ഇതാണ്:

തന്നിരിക്കുന്ന ഒരു പ്രശ്നം പ്രത്യേക ഭാഗങ്ങളായി (ഉപടാസ്കുകൾ, ഘട്ടങ്ങൾ) വിഭജിച്ച് ഈ ഉപടാസ്കുകൾ പരിഹരിച്ച് ഈ പരിഹാരങ്ങൾ ഒന്നായി സംയോജിപ്പിച്ച് പരിഹരിക്കുക എന്ന ആശയത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്. പൊതു തീരുമാനം. മിക്കപ്പോഴും ഉപ ടാസ്‌ക്കുകളിൽ ഭൂരിഭാഗവും സമാനമാണ്.

കൂടുതൽ സങ്കീർണ്ണമായ ഒരു പ്രശ്നം പരിഹരിക്കുമ്പോൾ, ഞങ്ങൾ ഒരു ചെറിയ ഉപപ്രശ്നം വീണ്ടും പരിഹരിക്കില്ല, എന്നാൽ ഈ ഉപപ്രശ്നത്തിന് ഇതിനകം പരിഹരിച്ച ഉത്തരം ഉപയോഗിക്കുക എന്നത് പ്രധാനമാണ്.
ഒരു ഗ്രാഫിൽ ഇത് ഇതുപോലെ കാണപ്പെടാം:


പ്രധാനപ്പെട്ടത്:ഇക്കാരണത്താൽ, ഒരു ടാസ്‌ക്കിനെ ഉപ ടാസ്‌ക്കുകളായി വിഭജിക്കുന്നു ഈ ഉപപ്രശ്നങ്ങൾ ഒരിക്കൽ മാത്രം പരിഹരിക്കുന്നു (!), അതുവഴി മൊത്തത്തിലുള്ള കണക്കുകൂട്ടലുകളുടെ എണ്ണം കുറയ്ക്കുന്നു - കൂടുതൽ ഏറ്റവും മികച്ച മാർഗ്ഗം, ഇത് ഡൈനാമിക് പ്രോഗ്രാമിംഗിൽ അന്തർലീനമാണ്

ഡെറിവേറ്റീവുകൾ, ലാ ഗ്രെഞ്ച് സെറ്റുകൾ മുതലായവയിൽ ഞങ്ങൾ ഒരു പ്രശ്നം പരിഹരിക്കുമ്പോൾ, ഞങ്ങൾ തുടർച്ചയായ പ്രവർത്തനങ്ങളുമായി പ്രവർത്തിക്കുന്നു. ഡിപി പ്രശ്നങ്ങൾ പരിഹരിക്കുമ്പോൾ, ഞങ്ങൾ പ്രധാനമായും വ്യതിരിക്തമായ പ്രവർത്തനങ്ങളുമായി പ്രവർത്തിക്കും, അതിനാൽ തുടർച്ചയായ പ്രവർത്തനങ്ങളുടെ ഉപയോഗത്തെക്കുറിച്ച് ഇവിടെ സംസാരിക്കുന്നത് അനുചിതമാണ്.
ഇക്കാരണത്താൽ, പല പ്രശ്നങ്ങളിലും, എന്നാൽ എല്ലാം അല്ല, ഗണിത വിശകലനത്തിൻ്റെ ഉപയോഗം അസ്വീകാര്യമായിരിക്കും.

ഡിപി ഉപയോഗിച്ച് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള ഒരു ലളിതമായ ഉദാഹരണം

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിച്ച് പ്രശ്നം പരിഹരിക്കുന്നതിനുള്ള ഓപ്ഷൻ നമുക്ക് പരിഗണിക്കാം.

ഉദാഹരണം: n സംഖ്യകളുടെ ആകെത്തുക കണക്കാക്കേണ്ടത് ആവശ്യമാണ്: 1 + 2 + 3 + ... + n


ഈ പ്രശ്നത്തിൻ്റെ "ബുദ്ധിമുട്ട്" എന്താണ്: നിങ്ങൾ ഒരേസമയം ധാരാളം സംഖ്യകൾ എടുത്ത് ഉത്തരം നേടേണ്ടതുണ്ട്.

പ്രശ്‌നത്തിൽ ഡിപി ആശയങ്ങൾ പ്രയോഗിക്കാനും അതിനെ ലളിതമായ ഉപ ടാസ്‌ക്കുകളായി വിഭജിച്ച് പരിഹരിക്കാനും ശ്രമിക്കാം.
(ഡിപിയിൽ പ്രാഥമിക വ്യവസ്ഥകൾ അല്ലെങ്കിൽ വ്യവസ്ഥകൾ ആദ്യം നിർണ്ണയിക്കേണ്ടത് എല്ലായ്പ്പോഴും ആവശ്യമാണ്)

  • ആദ്യത്തെ മൂലകത്തിൻ്റെ ആകെത്തുകയിൽ നിന്ന് നമുക്ക് ആരംഭിക്കാം, അതായത്. ആദ്യത്തെ ഘടകം എടുക്കുക:
    F(1) = 1
  • ഇപ്പോൾ, ആദ്യ മൂലകത്തിനുള്ള പരിഹാരം ഉപയോഗിച്ച്, ഞങ്ങൾ പരിഹരിക്കുന്നു
    F(2) = F(1) + 2 = 1 + 2 = 3, അതായത്. നിങ്ങൾ ആദ്യത്തെ മൂലകത്തിൻ്റെ ആകെത്തുക എടുത്ത് അതിൽ രണ്ടാമത്തെ ഘടകം ചേർക്കുക
  • F(3) = F(2) + 3 = 6
  • ഞങ്ങൾ സാമ്യതയോടെ തുടരുകയും വസ്തുനിഷ്ഠമായ പ്രവർത്തനം നേടുകയും ചെയ്യുന്നു:
    F(n) = F(n-1) + An


അതിനാൽ, ഞങ്ങൾ എന്താണ് ചെയ്തത്: ഞങ്ങൾ ഓർഡർ നിർണ്ണയിക്കുകയും ഉപ ടാസ്‌ക്കുകൾ തിരിച്ചറിയുകയും ചെയ്തു, തുടർന്ന് മുമ്പത്തേതിൻ്റെ പരിഹാരത്തെ അടിസ്ഥാനമാക്കി ഞങ്ങൾ അവ ഓരോന്നും പരിഹരിച്ചു.

DP ഇപ്പോഴും ന്യായീകരിക്കപ്പെടാതെ (കൃത്രിമമായി) ഉപയോഗിക്കുന്ന ഒരു ലളിതമായ ഉദാഹരണം DP ആശയങ്ങളുടെ തത്വം പ്രകടമാക്കുന്നു.

മറ്റൊരു ഉദാഹരണം നോക്കാം.

ഉദാഹരണം: n പടികളുള്ള ഒരു ഗോവണി ഉണ്ട്, അതിന് മുന്നിൽ ഒരാൾ പിന്നിലുണ്ട് 1 പടിക്ക് ഒന്നുകിൽ അടുത്ത ഘട്ടത്തിലേക്ക് കയറാം അല്ലെങ്കിൽ ഒരു പടിക്ക് മുകളിലൂടെ ചാടാം. ചോദ്യം: അവസാന ഘട്ടത്തിലെത്താൻ അവന് എത്ര വഴികളിലൂടെ കഴിയും?


പരിഹാരം:

ഏറ്റവും കൂടുതൽ പരിഗണിക്കാം ലളിതമായ ഓപ്ഷനുകൾ(ഉപടാസ്കുകൾ):

ഐ സ്റ്റെപ്പുകളുടെ ഒരു ഉദാഹരണം നോക്കാം

ഐ ഘട്ടത്തിലേക്ക് നമുക്ക് എങ്ങനെ എത്തിച്ചേരാം:

  1. i-1 ഘട്ടത്തിൽ നിന്ന്, i-1 വഴിയിൽ നമുക്ക് i-1-ലേക്ക് എത്താം
  2. i-2 ഘട്ടത്തിൽ നിന്ന്, i-2 വഴിയിൽ നമുക്ക് i-2-ലേക്ക് എത്താം

ഉദാഹരണത്തിന്, എങ്ങനെ എത്തിച്ചേരാം നാലാം ഘട്ടം:

അത്., വഴികളുടെ ആകെ എണ്ണംഞാൻ ഘട്ടത്തിലേക്ക് പോകുക:
f(a i) = f(a i-1) + f(a i-2)

നമുക്ക് പ്രാരംഭ മൂല്യങ്ങൾ നിർണ്ണയിക്കാം, അതിൽ നിന്നാണ് പ്രശ്നം പരിഹരിക്കാൻ തുടങ്ങേണ്ടത്.
നിങ്ങൾ 1-ൽ ആരംഭിക്കുകയാണെങ്കിൽ, ഫിബൊനാച്ചി സംഖ്യകളുടെ ക്രമം കണ്ടെത്തുന്നതിന് ഫോർമുല യോജിക്കുന്നു.

പ്രശ്‌നം അടിസ്ഥാനപരമായി സംയോജിതമാണെന്ന് ഞങ്ങൾ കാണുന്നു (അതായത്, എന്തെങ്കിലും ചെയ്യാനുള്ള വഴികളുടെ എണ്ണം) ചില ആവർത്തന ക്രമങ്ങൾ കണക്കാക്കുന്നതിലേക്ക് ചുരുക്കിയിരിക്കുന്നു.

വ്യായാമം 1:ആദ്യ പത്ത് ഘട്ടങ്ങൾക്ക് (ഫിബൊനാച്ചി സീരീസിൻ്റെ ആദ്യ 10 അക്കങ്ങൾ) ആവർത്തനം ഉപയോഗിച്ച് ഒരു ഉദാഹരണം നടപ്പിലാക്കുക.

കോഡ് പൂർത്തിയാക്കുക:

1 2 3 4 5 6 7 8 9 10 11 12 13 var c: പൂർണ്ണസംഖ്യ ; നടപടിക്രമം getKolSposob(i, n: integer ); writeln (i+ n, "") ആരംഭിക്കുക; inc (c); എങ്കിൽ ... പിന്നെ getKolSposob(...,... ) അവസാനം ; ആരംഭിക്കുക c: = 1 ; getKolSposob(0 , 1 ) ; അവസാനിക്കുന്നു.

var c:integer; നടപടിക്രമം getKolSposob(i,n: integer); writeln(i+n," ") ആരംഭിക്കുക; inc (c); എങ്കിൽ ... പിന്നെ getKolSposob(...,...) അവസാനം; ആരംഭിക്കുക c:=1; getKolSposob(0,1); അവസാനിക്കുന്നു.


ടാസ്ക് 2:
15-ാം തരം ഏകീകൃത സംസ്ഥാന പരീക്ഷാ ജോലികളുടെ പരിഹാരം (ഗ്രാഫുകൾ. പാതകളുടെ എണ്ണം കണ്ടെത്തൽ).

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് വിഭാഗത്തെ ഇനിപ്പറയുന്ന കാൽക്കുലേറ്ററുകൾ പ്രതിനിധീകരിക്കുന്നു:

  1. നിക്ഷേപം അനുവദിക്കൽ പ്രശ്നം. നാല് സംരംഭങ്ങളിലെ ഉൽപാദനത്തിൻ്റെ പുനർനിർമ്മാണത്തിനും നവീകരണത്തിനും അനുവദിച്ചു പണംസി = 80 ഡെൻ. യൂണിറ്റുകൾ ഓരോ എൻ്റർപ്രൈസസിനും, അനുവദിച്ച തുകയെ ആശ്രയിച്ച്, ഔട്ട്പുട്ടിൽ സാധ്യമായ വർദ്ധനവ് f i (x) (i = 1, 4) അറിയാം.

ചലനാത്മക പ്രോഗ്രാമിംഗ് പ്രശ്‌നങ്ങളിൽ, സാമ്പത്തിക പ്രക്രിയ സമയത്തെ ആശ്രയിച്ചിരിക്കുന്നു (അല്ലെങ്കിൽ നിരവധി കാലഘട്ടങ്ങളിൽ), അതിനാൽ മുഴുവൻ പ്രക്രിയയുടെയും മൊത്തത്തിലുള്ള വികസനം ഉറപ്പാക്കുന്ന ഒപ്റ്റിമൽ പരിഹാരങ്ങൾ (ഓരോ ഘട്ടത്തിനും തുടർച്ചയായി) കണ്ടെത്തുന്നു. നിയന്ത്രിത പ്രക്രിയകളുടെയും സമയാധിഷ്ഠിത പ്രക്രിയകളുടെയും ഒപ്റ്റിമൽ ആസൂത്രണം അനുവദിക്കുന്ന ഒരു ഗണിതശാസ്ത്ര ഉപകരണമാണ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്. ഒപ്റ്റിമൈസേഷൻ ഘട്ടം ഘട്ടമായി നടപ്പിലാക്കുന്നതിനെ മൾട്ടി-സ്റ്റെപ്പ് തീരുമാനമെടുക്കൽ പ്രക്രിയ എന്ന് വിളിക്കുന്നു. ഒരു സാമ്പത്തിക പ്രക്രിയയെ അതിൻ്റെ വികസനത്തിൻ്റെ ഗതിയെ സ്വാധീനിക്കാൻ കഴിയുമെങ്കിൽ നിയന്ത്രിതമെന്ന് വിളിക്കുന്നു.

ഡൈനാമിക് പ്രോഗ്രാമിംഗ് (ഡിപി) രീതി തുടർച്ചയായ ഒപ്റ്റിമൈസേഷൻ തത്വത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്: പരിഹാരം യഥാർത്ഥ പ്രശ്നംലോ-ഡൈമൻഷണൽ ഒപ്റ്റിമൈസേഷൻ പ്രശ്‌നങ്ങളുടെ ഒരു ക്രമം പരിഹരിച്ചുകൊണ്ട് ഹൈ-ഡൈമൻഷണൽ ഒപ്റ്റിമൈസേഷൻ മാറ്റിസ്ഥാപിക്കുന്നു. ഡിപി രീതിയുടെ പ്രയോഗക്ഷമതയ്ക്കുള്ള പ്രധാന വ്യവസ്ഥ, തീരുമാനമെടുക്കൽ പ്രക്രിയയെ സമാനമായ നിരവധി ഘട്ടങ്ങളായോ ഘട്ടങ്ങളായോ വിഭജിക്കാനുള്ള സാധ്യതയാണ്, അവ ഓരോന്നും പ്രത്യേകം ആസൂത്രണം ചെയ്തിട്ടുണ്ട്, എന്നാൽ മറ്റ് ഘട്ടങ്ങളിൽ ലഭിച്ച ഫലങ്ങൾ കണക്കിലെടുക്കുന്നു. ഉദാഹരണത്തിന്, നിരവധി ബിസിനസ്സ് വർഷങ്ങളിലെ ഒരു വ്യവസായത്തിൻ്റെ പ്രവർത്തനം, അല്ലെങ്കിൽ ഉപകരണങ്ങളുടെ നിയന്ത്രണത്തിൽ ഉപയോഗിക്കുന്ന ടെസ്റ്റുകളുടെ ഒരു ക്രമം മുതലായവ. ചില പ്രക്രിയകൾ (പ്രവർത്തനങ്ങൾ) സ്വാഭാവികമായി ഘട്ടങ്ങളായി വിഭജിക്കപ്പെടുന്നു, എന്നാൽ പ്രവർത്തനങ്ങളെ വിഭജിക്കേണ്ടതുണ്ട്. ഘട്ടങ്ങൾ കൃത്രിമമായി, ഉദാഹരണത്തിന്, ലക്ഷ്യത്തിലെ മിസൈലുകളുടെ മാർഗ്ഗനിർദ്ദേശ പ്രക്രിയ.
വരാനിരിക്കുന്ന ഘട്ടങ്ങളിലെ അനന്തരഫലങ്ങൾ കണക്കിലെടുത്ത് ഈ നിയന്ത്രണം തിരഞ്ഞെടുത്തതിനാൽ, ഏത് ഘട്ടത്തിലും തിരഞ്ഞെടുത്ത നിയന്ത്രണം പ്രാദേശികമായി മികച്ചതല്ല, മറിച്ച് പ്രക്രിയയുടെ മൊത്തത്തിലുള്ള വീക്ഷണകോണിൽ നിന്ന് മികച്ചതാണെന്ന് ഈ തത്വം ഉറപ്പാക്കുന്നു.

നമുക്ക് പരിഗണിക്കാം പൊതുവായ വിവരണംഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നങ്ങൾ.
മൾട്ടി-സ്റ്റെപ്പ് തീരുമാനമെടുക്കൽ പ്രക്രിയയെ വിഭജിക്കട്ടെ എൻപടികൾ. സിസ്റ്റത്തിൻ്റെ പ്രാരംഭ അവസ്ഥയെ ε 1, ε 2, … ε ഉപയോഗിച്ച് നമുക്ക് സൂചിപ്പിക്കാം. എൻ- ആദ്യത്തേതിന് ശേഷമുള്ള സിസ്റ്റത്തിൻ്റെ അവസ്ഥ, രണ്ടാമത്തേത്, എൻ-ആം ഘട്ടം. പൊതുവേ, സംസ്ഥാനം ε കെ- വെക്റ്റർ (ε കെ 1,…, ε കെ എസ്).
മാനേജ്മെൻ്റ്ഒരു മൾട്ടി-സ്റ്റെപ്പ് പ്രക്രിയയിൽ, ഒരു കൂട്ടം പരിഹാരങ്ങൾ (നിയന്ത്രണ വേരിയബിളുകൾ) വിളിക്കുന്നു യു കെ = (യു കെ 1 , ..., യു കെ ആർ) ഓരോ ഘട്ടത്തിലും സ്വീകരിച്ചു കെസംസ്ഥാന ε-യിൽ നിന്ന് സിസ്റ്റം കൈമാറ്റം ചെയ്യുകയും ചെയ്യുന്നു കെ-1 = (ε k- 1 1 ,…, ε കെ -1 എസ്) സംസ്ഥാനത്തേക്ക് ε കെ = (ε കെ 1,…, ε കെ എസ്).
സാമ്പത്തിക പ്രക്രിയകളിൽ, മാനേജ്മെൻ്റ് ഓരോ ഘട്ടത്തിലും ഫണ്ടുകളുടെ വിതരണവും പുനർവിതരണവും ഉൾക്കൊള്ളുന്നു. ഉദാഹരണത്തിന്, ഏതെങ്കിലും എൻ്റർപ്രൈസ് ഉൽപ്പന്നങ്ങളുടെ ഉൽപ്പാദനം ഒരു നിയന്ത്രിത പ്രക്രിയയാണ്, കാരണം അത് ഉപകരണങ്ങളുടെ ഘടനയിലെ മാറ്റങ്ങൾ, അസംസ്കൃത വസ്തുക്കളുടെ വിതരണത്തിൻ്റെ അളവ്, ധനസഹായത്തിൻ്റെ അളവ് മുതലായവ നിർണ്ണയിക്കുന്നു. തുടക്കത്തിൽ എടുത്ത തീരുമാനങ്ങളുടെ ഒരു കൂട്ടം. വർഷത്തിലെ, ആസൂത്രണ കാലയളവ്, എൻ്റർപ്രൈസസിന് അസംസ്കൃത വസ്തുക്കൾ നൽകൽ, ഉപകരണങ്ങൾ മാറ്റിസ്ഥാപിക്കൽ, ധനസഹായത്തിൻ്റെ അളവ് മുതലായവ മാനേജ്മെൻ്റാണ്. ഔട്ട്‌പുട്ടിൻ്റെ പരമാവധി അളവ് ലഭിക്കുന്നതിന്, സാധ്യമായ പരമാവധി തുക നിക്ഷേപിച്ച് അതിനായി ഉപയോഗിക്കുന്നതാണ് എളുപ്പവഴി എന്ന് തോന്നുന്നു. പൂർണ്ണ ശക്തിഉപകരണങ്ങൾ. എന്നാൽ ഇത് ഉപകരണങ്ങളുടെ ദ്രുതഗതിയിലുള്ള വസ്ത്രധാരണത്തിലേക്ക് നയിക്കുകയും അതിൻ്റെ ഫലമായി ഉൽപ്പാദന ഉൽപ്പാദനം കുറയുകയും ചെയ്യും. അതിനാൽ, ഉൽപ്പാദനം ഒഴിവാക്കുന്ന വിധത്തിൽ ആസൂത്രണം ചെയ്യണം അനാവശ്യ ഇഫക്റ്റുകൾ. ഉപകരണങ്ങൾ തീർന്നുപോകുമ്പോൾ, അതായത് കാലക്രമേണ അത് വീണ്ടും നിറയ്ക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ നടപടികൾ കൈക്കൊള്ളേണ്ടത് ആവശ്യമാണ്. രണ്ടാമത്തേത്, അത് ഔട്ട്പുട്ടിൻ്റെ പ്രാരംഭ വോള്യത്തിൽ കുറവുണ്ടാക്കുന്നുണ്ടെങ്കിലും, ഭാവിയിൽ ഉൽപ്പാദനം വിപുലീകരിക്കാനുള്ള സാധ്യത നൽകുന്നു. അങ്ങനെ, ഉൽപാദനത്തിൻ്റെ സാമ്പത്തിക പ്രക്രിയയെ പല ഘട്ടങ്ങൾ (ഘട്ടങ്ങൾ) ഉൾക്കൊള്ളുന്നതായി കണക്കാക്കാം, അവയിൽ ഓരോന്നും അതിൻ്റെ വികസനത്തെ സ്വാധീനിക്കുന്നു.
നിയന്ത്രിത പ്രക്രിയയുടെ ഒരു ഘട്ടത്തിൻ്റെ (ഘട്ടം) ആരംഭം ഒരു തീരുമാനം എടുക്കുന്ന നിമിഷമായി കണക്കാക്കപ്പെടുന്നു (മൂലധന നിക്ഷേപത്തിൻ്റെ അളവ്, ഉപകരണങ്ങൾ മാറ്റിസ്ഥാപിക്കൽ ചില തരംതുടങ്ങിയവ.). ഒരു ഘട്ടം സാധാരണയായി ഒരു ബിസിനസ് വർഷമായി മനസ്സിലാക്കപ്പെടുന്നു.
സാധാരണയായി ഓരോ ഘട്ടത്തിലും നിയന്ത്രണത്തിലാണ് യു കെചില നിയന്ത്രണങ്ങൾ ബാധകമാണ്. ഈ നിയന്ത്രണങ്ങളെ തൃപ്തിപ്പെടുത്തുന്ന നിയന്ത്രണങ്ങളെ വിളിക്കുന്നു സ്വീകാര്യമായ.
പ്രകടന സൂചകം എന്ന് അനുമാനിക്കുന്നു കെപ്രക്രിയയുടെ മൂന്നാം ഘട്ടം ഈ ഘട്ടത്തിലെ പ്രാരംഭ അവസ്ഥയെ ആശ്രയിച്ചിരിക്കുന്നു കെ-1 ഈ ഘട്ടത്തിൽ നിയന്ത്രണത്തിൽ നിന്ന് യു കെ, മുഴുവൻ മൾട്ടി-സ്റ്റെപ്പ് പ്രക്രിയയുടെയും ഒബ്ജക്റ്റീവ് ഫംഗ്ഷൻ ഞങ്ങൾ ഫോമിൽ നേടുന്നു:
.

നമുക്ക് ഇപ്പോൾ ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നം രൂപപ്പെടുത്താം: “അനുവദനീയമായ നിയന്ത്രണങ്ങളുടെ കൂട്ടം നിർണ്ണയിക്കുക ( യു 1 , …, യു എൻ), സിസ്റ്റത്തെ പ്രാരംഭ അവസ്ഥ ε 0 ൽ നിന്ന് അന്തിമ അവസ്ഥ ε ലേക്ക് മാറ്റുന്നു എൻകാര്യക്ഷമത സൂചകം പരമാവധിയാക്കുകയോ കുറയ്ക്കുകയോ ചെയ്യുക എഫ്».
പ്രവർത്തനത്തിൻ്റെ പരമാവധി (കുറഞ്ഞത്) കൈവരിക്കുന്ന നിയന്ത്രണം എഫ്വിളിച്ചു ഒപ്റ്റിമൽ നിയന്ത്രണം യു * = (യു 1* ,…, യു എൻ *).
എങ്കിൽ നിയന്ത്രണ വേരിയബിളുകൾ യു കെവ്യതിരിക്തമായ മൂല്യങ്ങൾ എടുക്കുക, തുടർന്ന് DP മോഡൽ വിളിക്കുന്നു വ്യതിരിക്തമായ. വേരിയബിളുകൾ ആണെങ്കിൽ യു കെതുടർച്ചയായി മാറ്റുക, തുടർന്ന് DP മോഡൽ വിളിക്കുന്നു തുടർച്ചയായ.
സംസ്ഥാന പാരാമീറ്ററുകളുടെ എണ്ണം അനുസരിച്ച് എസ്നിയന്ത്രണ വേരിയബിളുകളുടെ എണ്ണവും ആർവേർതിരിക്കുക ഏകമാനംഒപ്പം ബഹുമുഖംഡിപി ചുമതലകൾ.
ഒരു ടാസ്ക്കിലെ ഘട്ടങ്ങളുടെ എണ്ണം ആകാം ഫൈനൽഅഥവാ അനന്തമായ.

അപ്ലൈഡ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നങ്ങൾ

  1. സൗകര്യങ്ങളുടെ നിർമ്മാണം ആസൂത്രണം ചെയ്യുന്നതിലെ പ്രശ്നം.

) സങ്കീർണ്ണത ഒറിജിനലിനേക്കാൾ അല്പം കുറവുള്ള ഓവർലാപ്പിംഗ് ഉപപ്രശ്നങ്ങളുടെ ഒരു കൂട്ടം പോലെ തോന്നുന്നു. ഈ സാഹചര്യത്തിൽ, "നിഷ്കളങ്ക" രീതികളുമായി താരതമ്യം ചെയ്യുമ്പോൾ, കണക്കുകൂട്ടൽ സമയം ഗണ്യമായി കുറയ്ക്കാൻ കഴിയും.

ഡൈനാമിക് പ്രോഗ്രാമിംഗിലെ പ്രധാന ആശയം വളരെ ലളിതമാണ്. ഒരു ചട്ടം പോലെ, തന്നിരിക്കുന്ന ഒരു പ്രശ്നം പരിഹരിക്കുന്നതിന്, പ്രശ്നത്തിൻ്റെ വ്യക്തിഗത ഭാഗങ്ങൾ (ഉപടാസ്കുകൾ) പരിഹരിക്കേണ്ടത് ആവശ്യമാണ്, തുടർന്ന് ഉപടാസ്കുകൾക്കുള്ള പരിഹാരങ്ങൾ ഒരു പൊതു പരിഹാരമായി സംയോജിപ്പിക്കുക. പലപ്പോഴും ഈ ഉപടാസ്കുകളിൽ പലതും സമാനമാണ്. ഓരോ ഉപപ്രശ്നവും ഒരിക്കൽ മാത്രം പരിഹരിക്കുക, അതുവഴി കണക്കുകൂട്ടലുകളുടെ എണ്ണം കുറയ്ക്കുക എന്നതാണ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ് സമീപനം. ആവർത്തിച്ചുള്ള ഉപ ടാസ്‌ക്കുകളുടെ എണ്ണം വളരെ വലുതായ സന്ദർഭങ്ങളിൽ ഇത് പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്.

രീതി മുകളിൽ നിന്ന് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്- ഇത് ഭാവിയിൽ വീണ്ടും നേരിടാനിടയുള്ള ഉപ ടാസ്‌ക്കുകൾ പരിഹരിക്കുന്നതിൻ്റെ ഫലങ്ങളുടെ ലളിതമായ ഓർമ്മപ്പെടുത്തലാണ്. താഴെ നിന്ന് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്സങ്കീർണ്ണമായ ഒരു പ്രശ്നത്തെ ലളിതമായ ഉപപ്രശ്നങ്ങളുടെ ആവർത്തന ശ്രേണിയിലേക്ക് പുനഃക്രമീകരിക്കുന്നത് ഉൾപ്പെടുന്നു.

എൻസൈക്ലോപീഡിക് YouTube

  • 1 / 5

    "ഡൈനാമിക് പ്രോഗ്രാമിംഗ്" എന്ന പദപ്രയോഗം ആദ്യമായി ഉപയോഗിച്ചത് 1990-കളിൽ R. Bellman ആണ്, ഒരു പ്രശ്നത്തിന് "മുമ്പുള്ള" പ്രശ്നം പരിഹരിച്ചതിന് ശേഷം മാത്രമേ അതിനുള്ള ഉത്തരം ലഭിക്കുകയുള്ളൂ. നഗരത്തിൽ അദ്ദേഹം ഈ നിർവചനം ആധുനികതയ്ക്ക് വ്യക്തമാക്കി. ഈ ഫീൽഡ് യഥാർത്ഥത്തിൽ സിസ്റ്റം അനാലിസിസ് ആൻഡ് എഞ്ചിനീയറിംഗ് എന്ന നിലയിലാണ് സ്ഥാപിച്ചത്, ഇത് ഐഇഇഇ അംഗീകരിച്ചു. ഡൈനാമിക് പ്രോഗ്രാമിംഗിലേക്കുള്ള ബെൽമാൻ്റെ സംഭാവനകൾ ബെൽമാൻ സമവാക്യത്തിൻ്റെ പേരിൽ അനശ്വരമാക്കപ്പെട്ടു, ഇത് ചലനാത്മക പ്രോഗ്രാമിംഗ് സിദ്ധാന്തത്തിൻ്റെ ഒരു കേന്ദ്ര ഫലമാണ്, അത് ആവർത്തന രൂപത്തിൽ ഒരു ഒപ്റ്റിമൈസേഷൻ പ്രശ്നത്തെ പുനഃക്രമീകരിക്കുന്നു.

    "ഡൈനാമിക് പ്രോഗ്രാമിംഗ്" എന്ന വാക്യത്തിലെ "പ്രോഗ്രാമിംഗ്" എന്ന വാക്കിന് യഥാർത്ഥത്തിൽ "പരമ്പരാഗത" പ്രോഗ്രാമിംഗുമായി (റൈറ്റിംഗ് കോഡ്) യാതൊരു ബന്ധവുമില്ല, കൂടാതെ "ഒപ്റ്റിമൈസേഷൻ" എന്ന വാക്കിൻ്റെ പര്യായമായ "ഗണിത പ്രോഗ്രാമിംഗ്" എന്ന വാക്യത്തിലെ അതേ അർത്ഥമുണ്ട്. . അതിനാൽ, ഈ സന്ദർഭത്തിൽ "പ്രോഗ്രാം" എന്ന വാക്ക് അർത്ഥമാക്കുന്നത് പ്രശ്നത്തിന് ഒരു പരിഹാരം നേടുന്നതിനുള്ള പ്രവർത്തനങ്ങളുടെ ഒപ്റ്റിമൽ ക്രമം എന്നാണ്. ഉദാഹരണത്തിന്, ഒരു എക്സിബിഷനിലെ ഇവൻ്റുകളുടെ ഒരു പ്രത്യേക ഷെഡ്യൂൾ ചിലപ്പോൾ ഒരു പ്രോഗ്രാം എന്ന് വിളിക്കുന്നു. പ്രോഗ്രാം ഇൻ ഈ സാഹചര്യത്തിൽസംഭവങ്ങളുടെ അനുവദനീയമായ ഒരു ക്രമമായി മനസ്സിലാക്കുന്നു.

    ഡൈനാമിക് പ്രോഗ്രാമിംഗ് എന്ന ആശയം

    ഒപ്റ്റിമൽ സബ്സ്ട്രക്ചർഡൈനാമിക് പ്രോഗ്രാമിംഗിൽ അർത്ഥമാക്കുന്നത് ഉപപ്രശ്നങ്ങൾക്കുള്ള ഒപ്റ്റിമൽ പരിഹാരം എന്നാണ് ചെറിയ വലിപ്പംയഥാർത്ഥ പ്രശ്നം പരിഹരിക്കാൻ ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്, ഒരു ഗ്രാഫിലെ ഏറ്റവും ചെറിയ പാത ഒരു ശീർഷത്തിൽ നിന്ന് (s കൊണ്ട് സൂചിപ്പിച്ചത്) മറ്റൊന്നിലേക്ക് (t കൊണ്ട് സൂചിപ്പിച്ചിരിക്കുന്നു) ഇനിപ്പറയുന്ന രീതിയിൽ കണ്ടെത്താം: ആദ്യം, s ലേക്ക് t യോട് ചേർന്നുള്ള എല്ലാ ശീർഷകങ്ങളിൽ നിന്നും ഏറ്റവും ചെറിയ പാത ഞങ്ങൾ കണക്കാക്കുന്നു, തുടർന്ന്, എടുക്കുന്നു അക്കൌണ്ടുകളുടെ അരികുകളുടെ ഭാരങ്ങൾ അടുത്തുള്ള ലംബങ്ങളുമായി ബന്ധിപ്പിക്കുന്നു, തിരഞ്ഞെടുക്കുക ഏറ്റവും മികച്ച മാർഗ്ഗം t ലേക്ക് (ഏത് ശീർഷകത്തിലൂടെയാണ് പോകാൻ നല്ലത്). പൊതുവേ, താഴെ പറയുന്ന മൂന്ന് ഘട്ടങ്ങളിലൂടെ കടന്നുപോകുന്നതിലൂടെ ഒപ്റ്റിമൽ സബ്സ്ട്രക്ചർ ഉള്ള ഒരു പ്രശ്നം നമുക്ക് പരിഹരിക്കാനാകും.

    1. ഒരു ടാസ്‌ക്കിനെ ചെറിയ ഉപടാസ്‌ക്കുകളായി വിഭജിക്കുന്നു.
    2. കണ്ടെത്തുന്നു ഒപ്റ്റിമൽ പരിഹാരംഒരേ ത്രീ-സ്റ്റെപ്പ് അൽഗോരിതം നടപ്പിലാക്കിക്കൊണ്ട് സബ് ടാസ്‌ക്കുകൾ ആവർത്തിക്കുന്നു.
    3. യഥാർത്ഥ പ്രശ്നത്തിന് ഒരു പരിഹാരം നിർമ്മിക്കുന്നതിന് ഉപപ്രശ്നങ്ങൾക്ക് ലഭിച്ച പരിഹാരം ഉപയോഗിക്കുന്നു.

    സ്ഥിരമായ സമയത്തിനുള്ളിൽ പരിഹരിക്കാവുന്ന (ഉത്തരം ഉടനടി പറയാം) ഒരു പ്രശ്നത്തിൻ്റെ നിസ്സാരകാര്യത്തിൽ ഒരാൾ എത്തുന്നതുവരെ, അവയെ അതിലും ചെറിയ വലിപ്പത്തിലുള്ള സബ് ടാസ്‌ക്കുകളായി വിഭജിച്ചാണ് സബ്‌ടാസ്‌ക്കുകൾ പരിഹരിക്കുന്നത്. ഉദാഹരണത്തിന്, നമുക്ക് n! കണ്ടെത്തണമെങ്കിൽ നിസ്സാരമായ ദൗത്യം 1 ഉണ്ടാകും! = 1 (അല്ലെങ്കിൽ 0! = 1).

    ഉപടാസ്ക്കുകൾ ഓവർലാപ്പുചെയ്യുന്നുഡൈനാമിക് പ്രോഗ്രാമിംഗിൽ അവർ അർത്ഥമാക്കുന്നത് ഒരു നിശ്ചിത എണ്ണം പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഉപയോഗിക്കുന്ന ഉപ ടാസ്‌ക്കുകളാണ് (ഒന്ന് മാത്രമല്ല) വലിയ വലിപ്പം(അതായത്, ഞങ്ങൾ ഒരേ കാര്യം നിരവധി തവണ ചെയ്യുന്നു). ശ്രദ്ധേയമായ ഒരു ഉദാഹരണംഫിബൊനാച്ചി ശ്രേണിയുടെ കണക്കുകൂട്ടലാണ്, F 3 = F 2 + F 1 (\ displaystyle F_(3)=F_(2)+F_(1))ഒപ്പം F 4 = F 3 + F 2 (\ displaystyle F_(4)=F_(3)+F_(2))- അത്തരമൊരു നിസ്സാര സാഹചര്യത്തിൽ പോലും, ഞങ്ങൾ ഇതിനകം രണ്ട് ഫിബൊനാച്ചി നമ്പറുകൾ മാത്രം രണ്ട് തവണ കണക്കാക്കിയിട്ടുണ്ട്. ഞങ്ങൾ കൂടുതൽ തുടരുകയും എണ്ണുകയും ചെയ്താൽ, പിന്നെ F 2 (\ഡിസ്പ്ലേസ്റ്റൈൽ F_(2))രണ്ട് തവണ കൂടി കണക്കാക്കും, കാരണം കണക്കുകൂട്ടാൻ F 5 (\ഡിസ്പ്ലേസ്റ്റൈൽ F_(5))വീണ്ടും ആവശ്യമായി വരും F 3 (\ഡിസ്പ്ലേസ്റ്റൈൽ F_(3))ഒപ്പം F 4 (\ഡിസ്പ്ലേസ്റ്റൈൽ F_(4)). എന്താണ് സംഭവിക്കുന്നത്, ഒരു ലളിതമായ ആവർത്തന സമീപനം ഇതിനകം പരിഹരിച്ച പ്രശ്നങ്ങൾക്കുള്ള പരിഹാരങ്ങൾ കണക്കാക്കാൻ സമയം പാഴാക്കും.

    അത്തരം സംഭവങ്ങൾ ഒഴിവാക്കാൻ, ഞങ്ങൾ ഇതിനകം പരിഹരിച്ച ഉപപ്രശ്നങ്ങൾക്കുള്ള പരിഹാരങ്ങൾ ഞങ്ങൾ സംരക്ഷിക്കും, കൂടാതെ ഉപപ്രശ്നത്തിനുള്ള പരിഹാരം വീണ്ടും ആവശ്യമുള്ളപ്പോൾ, അത് വീണ്ടും കണക്കാക്കുന്നതിനുപകരം, ഞങ്ങൾ അത് മെമ്മറിയിൽ നിന്ന് വീണ്ടെടുക്കും. ഈ രീതിയെ ഓർമ്മപ്പെടുത്തൽ എന്ന് വിളിക്കുന്നു. ഞങ്ങൾക്ക് കൂടുതൽ ഒപ്റ്റിമൈസേഷനുകൾ നടത്താനും കഴിയും - ഉദാഹരണത്തിന്, ഒരു ഉപടാസ്‌കിന് ഇനി പരിഹാരം ആവശ്യമില്ലെന്ന് ഞങ്ങൾക്ക് ഉറപ്പുണ്ടെങ്കിൽ, നമുക്ക് അത് മെമ്മറിയിൽ നിന്ന് വലിച്ചെറിയാം, മറ്റ് ആവശ്യങ്ങൾക്കായി അത് സ്വതന്ത്രമാക്കാം, അല്ലെങ്കിൽ പ്രോസസ്സർ നിഷ്‌ക്രിയമാണെങ്കിൽ ഞങ്ങൾ ഇതുവരെ കണക്കാക്കാത്ത ചില സബ്‌ടാസ്‌ക്കുകൾ പരിഹരിക്കുന്നത് ഭാവിയിൽ നമുക്ക് ആവശ്യമായി വരുമെന്ന് അറിയുക, നമുക്ക് അവ മുൻകൂട്ടി പരിഹരിക്കാൻ കഴിയും.

    മേൽപ്പറഞ്ഞവ സംഗ്രഹിക്കുമ്പോൾ, ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നത്തിൻ്റെ ഇനിപ്പറയുന്ന സവിശേഷതകൾ ഉപയോഗിക്കുന്നുവെന്ന് നമുക്ക് പറയാം:

    • ഉപടാസ്കുകൾ ഓവർലാപ്പുചെയ്യുന്നു;
    • ഒപ്റ്റിമൽ സബ്സ്ട്രക്ചർ;
    • പതിവായി നേരിടുന്ന ഉപപ്രശ്നങ്ങൾക്കുള്ള പരിഹാരങ്ങൾ ഓർമ്മിക്കുന്നതിനുള്ള കഴിവ്.

    ഡൈനാമിക് പ്രോഗ്രാമിംഗ് സാധാരണയായി പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള രണ്ട് സമീപനങ്ങൾ പിന്തുടരുന്നു:

    • ടോപ്പ്-ഡൌൺ ഡൈനാമിക് പ്രോഗ്രാമിംഗ്: ഒരു പ്രശ്നം ചെറിയ ഉപപ്രശ്നങ്ങളായി വിഭജിക്കപ്പെടുന്നു, അവ പരിഹരിക്കപ്പെടുന്നു, തുടർന്ന് യഥാർത്ഥ പ്രശ്നം പരിഹരിക്കാൻ സംയോജിപ്പിക്കുന്നു. പതിവായി നേരിടുന്ന ഉപപ്രശ്‌നങ്ങൾ പരിഹരിക്കാൻ ഓർമ്മപ്പെടുത്തൽ ഉപയോഗിക്കുന്നു.
    • ബോട്ടം-അപ്പ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ്: യഥാർത്ഥ പ്രശ്നം പരിഹരിക്കുന്നതിന് പിന്നീട് ആവശ്യമായ എല്ലാ ഉപടാസ്കുകളും മുൻകൂട്ടി കണക്കാക്കുകയും തുടർന്ന് യഥാർത്ഥ പ്രശ്നത്തിന് ഒരു പരിഹാരം നിർമ്മിക്കാൻ ഉപയോഗിക്കുകയും ചെയ്യുന്നു. ആവശ്യമായ സ്റ്റാക്കിൻ്റെ വലുപ്പവും ഫംഗ്‌ഷൻ കോളുകളുടെ എണ്ണവും കണക്കിലെടുത്ത് ടോപ്പ്-ഡൌൺ പ്രോഗ്രാമിംഗിനെക്കാൾ മികച്ചതാണ് ഈ രീതി, എന്നാൽ ചില സമയങ്ങളിൽ ഏത് ഉപപ്രശ്‌നങ്ങളാണ് നമ്മൾ പിന്നീട് പരിഹരിക്കേണ്ടതെന്ന് മുൻകൂട്ടി അറിയുന്നത് എളുപ്പമല്ല.

    "പേര് പ്രകാരമുള്ള മൂല്യനിർണ്ണയം" വേഗത്തിലാക്കാൻ പ്രോഗ്രാമിംഗ് ഭാഷകൾക്ക് ഒരു നിർദ്ദിഷ്ട ആർഗ്യുമെൻ്റുകൾ (മെമ്മോസേഷൻ) ഉപയോഗിച്ച് ഒരു ഫംഗ്ഷൻ കോളിൻ്റെ ഫലം ഓർമ്മിക്കാൻ കഴിയും. ചില ഭാഷകൾക്ക് ബിൽറ്റ്-ഇൻ ഈ സവിശേഷതയുണ്ട് (ഉദാ. സ്കീം, കോമൺ ലിസ്‌പ്, ക്ലോജർ, പേൾ), ചിലത് ആവശ്യമാണ് അധിക വിപുലീകരണങ്ങൾ(സി++).

    ഓപ്പറേഷൻ റിസർച്ചിലെ എല്ലാ പാഠപുസ്തകങ്ങളിലും ഉൾപ്പെടുത്തിയിട്ടുള്ള സീരിയൽ ഡൈനാമിക് പ്രോഗ്രാമിംഗും 1960 കളിൽ കണ്ടെത്തിയെങ്കിലും നിലവിൽ അത്ര അറിയപ്പെടാത്ത നോൺ-സീരിയൽ ഡൈനാമിക് പ്രോഗ്രാമിംഗും (NSDP) ഉണ്ട്.

    വേരിയബിൾ ബന്ധങ്ങളുടെ ഗ്രാഫ് ഒരു പാത മാത്രമായിരിക്കുമ്പോൾ, നോൺ-സീരിയൽ ഡൈനാമിക് പ്രോഗ്രാമിംഗിൻ്റെ ഒരു പ്രത്യേക സാഹചര്യമാണ് ഓർഡിനറി ഡൈനാമിക് പ്രോഗ്രാമിംഗ്. എൻഎസ്ഡിപി, സ്വാഭാവികവും പൊതു രീതിഒപ്റ്റിമൈസേഷൻ പ്രശ്നത്തിൻ്റെ ഘടന കണക്കിലെടുക്കുന്നതിന്, നിയന്ത്രണങ്ങളുടെ കൂട്ടം കൂടാതെ/അല്ലെങ്കിൽ ഒബ്ജക്റ്റീവ് ഫംഗ്‌ഷനെ ഒരു ആവർത്തനപരമായി കണക്കാക്കാവുന്ന ഫംഗ്‌ഷനായി കണക്കാക്കുന്നു. മുമ്പത്തെ ഘട്ടങ്ങളിൽ ലഭിച്ച വിവരങ്ങൾ ഉപയോഗിച്ച് ഓരോ ഘട്ടത്തിലും ഘട്ടങ്ങളിൽ ഒരു പരിഹാരം കണ്ടെത്താൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു, കൂടാതെ ഈ അൽഗോരിതത്തിൻ്റെ ഫലപ്രാപ്തി നേരിട്ട് വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധങ്ങളുടെ ഗ്രാഫിൻ്റെ ഘടനയെ ആശ്രയിച്ചിരിക്കുന്നു. ഈ ഗ്രാഫ് വേണ്ടത്ര വിരളമാണെങ്കിൽ, ഓരോ ഘട്ടത്തിലും കണക്കുകൂട്ടലിൻ്റെ അളവ് ന്യായമായ പരിധിക്കുള്ളിൽ സൂക്ഷിക്കാൻ കഴിയും.

    ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഉപയോഗിച്ച് പരിഹരിക്കപ്പെടുന്ന പ്രശ്നങ്ങളുടെ പ്രധാന ഗുണങ്ങളിലൊന്ന് അഡിറ്റിവിറ്റിയാണ്. നോൺ-അഡിറ്റീവ് പ്രശ്നങ്ങൾ മറ്റ് രീതികളിലൂടെ പരിഹരിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു കമ്പനിയുടെ നിക്ഷേപങ്ങൾ ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിലെ പല പ്രശ്നങ്ങളും അഡിറ്റീവുകളല്ല, കൂടാതെ നിക്ഷേപങ്ങളോടും അല്ലാതെയും കമ്പനിയുടെ മൂല്യം താരതമ്യം ചെയ്തുകൊണ്ട് പരിഹരിക്കപ്പെടുന്നു.

    ക്ലാസിക് ഡൈനാമിക് പ്രോഗ്രാമിംഗ് പ്രശ്നങ്ങൾ

    • ദൈർഘ്യമേറിയ പൊതുവായ ഉപക്രമ പ്രശ്നം: രണ്ട് സീക്വൻസുകൾ നൽകിയാൽ, നിങ്ങൾ ഏറ്റവും ദൈർഘ്യമേറിയ പൊതുവായ ഉപക്രമം കണ്ടെത്തേണ്ടതുണ്ട്.
    • ഏറ്റവുമധികം വർധിച്ചുവരുന്ന ഉപക്രമം കണ്ടെത്തുന്നതിലെ പ്രശ്നം: ഒരു ക്രമം നൽകിയാൽ, ദൈർഘ്യമേറിയ വർദ്ധനയുള്ള ഉപക്രമം നിങ്ങൾ കണ്ടെത്തേണ്ടതുണ്ട്.
    • എഡിറ്റോറിയൽ ദൂരം പ്രശ്നം (Levenshtein ദൂരം): രണ്ട് സ്‌ട്രിംഗുകൾ നൽകിയാൽ, ഒരു സ്‌ട്രിംഗിനെ മറ്റൊന്നാക്കി മാറ്റുന്ന പ്രതീകങ്ങളുടെ മായ്‌ക്കലുകൾ, മാറ്റിസ്ഥാപിക്കൽ, കൂട്ടിച്ചേർക്കൽ എന്നിവയുടെ ഏറ്റവും കുറഞ്ഞ എണ്ണം നിങ്ങൾ കണ്ടെത്തേണ്ടതുണ്ട്.
    • മാട്രിക്സ് ഗുണന ക്രമത്തെക്കുറിച്ചുള്ള പ്രശ്നം: നൽകിയിരിക്കുന്ന മെട്രിക്സ് A 1 (\displaystyle A_(1)), …, A n (\displaystyle A_(n)), അവയുടെ ഗുണനത്തിനായി സ്കെയിലർ പ്രവർത്തനങ്ങളുടെ എണ്ണം കുറയ്ക്കേണ്ടത് ആവശ്യമാണ്.
    • പാത തിരഞ്ഞെടുക്കൽ പ്രശ്നം
    • ക്രമാനുഗതമായ തീരുമാനമെടുക്കൽ പ്രശ്നം
    • തൊഴിൽ വിനിയോഗ പ്രശ്നം
    • ഇൻവെൻ്ററി മാനേജ്മെൻ്റ് പ്രശ്നം