ഡൈനാമിക് പ്രോഗ്രാമിങ്

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

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

ഉദാഹരണമായി, ഫീബനാച്ചി ശ്രേണിയിലെ n പദം (Fn) കണ്ടു പിടിക്കണമെന്നു കരുതുക. F0=0;f1=1;....Fn=Fn-1+Fn-2; എന്നീ നിബന്ധനകളാണിവിടെ പാലിക്കേണ്ടത്. ഇതിനായി പ്രതിവർത്തന രീതിയിലുള്ള ഒരു പ്രോഗ്രാമെഴുതിയാൽ പല മൂല്യങ്ങളേയും (Fi) വീണ്ടും വീണ്ടും കണക്കാക്കേണ്ടിവരും, മാത്രമല്ല, പ്രസ്തുത പ്രതിവർത്തന പ്രോഗ്രാമിന്റെ സമയ വർധന ചരഘാതാങ്കമായിരിക്കും (exponential). മറിച്ച്, കണ്ടുപിടിക്കുന്ന മുറയ്ക്ക് Fiയുടെ മൂല്യം പട്ടിക രൂപത്തിൽ ശേഖരിച്ചു വയ്ക്കുന്ന ഡൈനാമിക് രീതിയുടെ സമയ വർധന രേഖീയം മാത്രമായിരിക്കും.

അനുകൂലതമ ബൈനറി സേർച്ച് ട്രീ, അനുകൂലതമ മാട്രിക്സ് വിന്യാസങ്ങൾ, ആലേഖനത്തിലെ ബിന്ദു ദ്വയങ്ങൾ തമ്മിലുള്ള കുറഞ്ഞ അകലം, ബഹുതല ഡിസിഷൻ പ്രോസസ്സുകൾ (multi-stage decision processes), ഓപ്പറേഷൻ റിസേർച്ചിലെ പ്രശ്നങ്ങൾ എന്നിവയുടെ നിർധാരണത്തിനാണ് ഡൈനാമിക് പ്രോഗ്രാമിങ് കൂടുതലായി പ്രയോജനപ്പെടുത്താറുള്ളത്.

വർഗ്ഗം:അൽഗൊരിതങ്ങൾ