{"id":2806,"date":"2025-06-07T13:50:48","date_gmt":"2025-06-07T13:50:48","guid":{"rendered":"https:\/\/diznr.com\/?p=2806"},"modified":"2025-06-07T13:50:48","modified_gmt":"2025-06-07T13:50:48","slug":"aad-dynamic-programming-introduction-and-general-method-multistage-graphs-with-example-15-part","status":"publish","type":"post","link":"https:\/\/www.reilsolar.com\/pdf\/aad-dynamic-programming-introduction-and-general-method-multistage-graphs-with-example-15-part\/","title":{"rendered":"AAD- Dynamic Programming Introduction and General Method multistage graphs with example Part 15"},"content":{"rendered":"<p>AAD- Dynamic Programming Introduction and General Method multistage graphs with example Part 15<\/p>\n<p>[fvplayer id=&#8221;122&#8243;]<\/p>\n<p class=\"\" data-start=\"0\" data-end=\"150\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"28\" data-is-only-node=\"\">Dynamic Programming (DP)<\/strong> is a method for solving complex problems by breaking them down into simpler subproblems.<\/span> <span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">It is particularly effective for optimization problems where decisions are made in stages, and each decision affects subsequent choices.<\/span> <span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">A classic application of DP is in solving <strong data-start=\"42\" data-end=\"71\">multistage graph problems<\/strong>, where the goal is to find the shortest or minimum-cost path from a source to a destination node across multiple stages.<\/span><\/p>\n<hr class=\"\" data-start=\"152\" data-end=\"155\" \/>\n<h2 class=\"\" data-start=\"157\" data-end=\"198\">\ud83d\udd04 Dynamic Programming: General Method<\/h2>\n<p class=\"\" data-start=\"200\" data-end=\"311\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Dynamic Programming is applicable when a problem exhibits <strong data-start=\"58\" data-end=\"85\">overlapping subproblems<\/strong> and <strong data-start=\"90\" data-end=\"114\">optimal substructure<\/strong>.<\/span> The general steps involved are:<\/p>\n<ol data-start=\"313\" data-end=\"836\">\n<li class=\"\" data-start=\"313\" data-end=\"449\">\n<p class=\"\" data-start=\"316\" data-end=\"449\"><strong data-start=\"316\" data-end=\"369\">Characterize the Structure of an Optimal Solution<\/strong>: <span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Understand how a solution to the problem can be constructed from solutions to subproblems.<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"451\" data-end=\"589\">\n<p class=\"\" data-start=\"454\" data-end=\"589\"><strong data-start=\"454\" data-end=\"509\">Define the Value of an Optimal Solution Recursively<\/strong>: <span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Express the solution in terms of solutions to smaller subproblems.<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"591\" data-end=\"718\">\n<p class=\"\" data-start=\"594\" data-end=\"718\"><strong data-start=\"594\" data-end=\"638\">Compute the Value of an Optimal Solution<\/strong>: <span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Typically done in a bottom-up manner, solving all subproblems and storing their solutions.<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"720\" data-end=\"836\">\n<p class=\"\" data-start=\"723\" data-end=\"836\"><strong data-start=\"723\" data-end=\"756\">Construct an Optimal Solution<\/strong>: <span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">If required, build the solution to the original problem from the computed information.<\/span><\/p>\n<\/li>\n<\/ol>\n<p class=\"\" data-start=\"838\" data-end=\"916\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">This method ensures that each subproblem is solved only once, and its solution is stored for future reference, thereby reducing the computational effort.<\/span><\/p>\n<hr class=\"\" data-start=\"918\" data-end=\"921\" \/>\n<h2 class=\"\" data-start=\"923\" data-end=\"946\">\ud83d\udcca Multistage Graphs<\/h2>\n<h3 class=\"\" data-start=\"948\" data-end=\"979\">What is a Multistage Graph?<\/h3>\n<p class=\"\" data-start=\"981\" data-end=\"1059\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">A <strong data-start=\"2\" data-end=\"22\">multistage graph<\/strong> is a directed graph partitioned into multiple stages, where:<\/span><\/p>\n<ul data-start=\"1061\" data-end=\"1305\">\n<li class=\"\" data-start=\"1061\" data-end=\"1141\">\n<p class=\"\" data-start=\"1063\" data-end=\"1141\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Vertices are divided into <strong data-start=\"26\" data-end=\"31\">k<\/strong> stages: <span class=\"katex\"><span class=\"katex-mathml\">V=V1\u222aV2\u222a\u22ef\u222aVkV = V_1 \\cup V_2 \\cup \\dots \\cup V_k<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">V<\/span><span class=\"mrel\">=<\/span><\/span><span class=\"base\"><span class=\"mord\"><span class=\"mord mathnormal\">V<\/span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\"><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">1<\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><\/span><\/span><\/span><span class=\"mbin\">\u222a<\/span><\/span><span class=\"base\"><span class=\"mord\"><span class=\"mord mathnormal\">V<\/span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\"><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2<\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><\/span><\/span><\/span><span class=\"mbin\">\u222a<\/span><\/span><span class=\"base\"><span class=\"minner\">\u22ef<\/span><span class=\"mbin\">\u222a<\/span><\/span><span class=\"base\"><span class=\"mord\"><span class=\"mord mathnormal\">V<\/span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\"><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mathnormal mtight\">k<\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span>.<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"1143\" data-end=\"1223\">\n<p class=\"\" data-start=\"1145\" data-end=\"1223\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Edges connect vertices from stage <span class=\"katex\"><span class=\"katex-mathml\">ii<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">i<\/span><\/span><\/span><\/span> to stage <span class=\"katex\"><span class=\"katex-mathml\">i+1i+1<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">i<\/span><span class=\"mbin\">+<\/span><\/span><span class=\"base\"><span class=\"mord\">1<\/span><\/span><\/span><\/span>, i.e., if <span class=\"katex\"><span class=\"katex-mathml\">(u,v)\u2208E(u, v) \\in E<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mpunct\">,<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">)<\/span><span class=\"mrel\">\u2208<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">E<\/span><\/span><\/span><\/span>, then <span class=\"katex\"><span class=\"katex-mathml\">u\u2208Viu \\in V_i<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">u<\/span><span class=\"mrel\">\u2208<\/span><\/span><span class=\"base\"><span class=\"mord\"><span class=\"mord mathnormal\">V<\/span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\"><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mathnormal mtight\">i<\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span> and <span class=\"katex\"><span class=\"katex-mathml\">v\u2208Vi+1v \\in V_{i+1}<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">v<\/span><span class=\"mrel\">\u2208<\/span><\/span><span class=\"base\"><span class=\"mord\"><span class=\"mord mathnormal\">V<\/span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\"><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\">i<\/span><span class=\"mbin mtight\">+<\/span>1<\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span>.<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"1225\" data-end=\"1305\">\n<p class=\"\" data-start=\"1227\" data-end=\"1305\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">There is a <strong data-start=\"11\" data-end=\"26\">source node<\/strong> in stage 1 and a <strong data-start=\"44\" data-end=\"64\">destination node<\/strong> in stage <span class=\"katex\"><span class=\"katex-mathml\">kk<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">k<\/span><\/span><\/span><\/span>.<\/span><\/p>\n<\/li>\n<\/ul>\n<p class=\"\" data-start=\"1307\" data-end=\"1385\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">The objective is to find the shortest or minimum-cost path from the source to the destination.<\/span><\/p>\n<hr class=\"\" data-start=\"1387\" data-end=\"1390\" \/>\n<h2 class=\"\" data-start=\"1392\" data-end=\"1443\">\ud83d\udd01 Approaches to Solve Multistage Graph Problems<\/h2>\n<h3 class=\"\" data-start=\"1445\" data-end=\"1472\">1. <strong data-start=\"1452\" data-end=\"1472\">Forward Approach<\/strong><\/h3>\n<p class=\"\" data-start=\"1474\" data-end=\"1552\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">This method starts from the source node and progresses towards the destination.<\/span><\/p>\n<p class=\"\" data-start=\"1554\" data-end=\"1574\"><strong data-start=\"1554\" data-end=\"1574\">Algorithm Steps:<\/strong><\/p>\n<ol data-start=\"1576\" data-end=\"2049\">\n<li class=\"\" data-start=\"1576\" data-end=\"1657\">\n<p class=\"\" data-start=\"1579\" data-end=\"1657\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Initialize the cost of the source node to 0 and all others to infinity.<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"1659\" data-end=\"1966\">\n<p class=\"\" data-start=\"1662\" data-end=\"1740\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">For each stage <span class=\"katex\"><span class=\"katex-mathml\">ii<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">i<\/span><\/span><\/span><\/span> from 1 to <span class=\"katex\"><span class=\"katex-mathml\">k\u22121k-1<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">k<\/span><span class=\"mbin\">\u2212<\/span><\/span><span class=\"base\"><span class=\"mord\">1<\/span><\/span><\/span><\/span>:<\/span><\/p>\n<ul data-start=\"1745\" data-end=\"1966\">\n<li class=\"\" data-start=\"1745\" data-end=\"1966\">\n<p class=\"\" data-start=\"1747\" data-end=\"1825\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">For each node <span class=\"katex\"><span class=\"katex-mathml\">uu<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">u<\/span><\/span><\/span><\/span> in stage <span class=\"katex\"><span class=\"katex-mathml\">ii<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">i<\/span><\/span><\/span><\/span>:<\/span><\/p>\n<ul data-start=\"1832\" data-end=\"1966\">\n<li class=\"\" data-start=\"1832\" data-end=\"1966\">\n<p class=\"\" data-start=\"1834\" data-end=\"1861\">For each edge <span class=\"katex\"><span class=\"katex-mathml\">(u,v)(u, v)<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mpunct\">,<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span>:<\/p>\n<ul data-start=\"1870\" data-end=\"1966\">\n<li class=\"\" data-start=\"1870\" data-end=\"1966\">\n<p class=\"\" data-start=\"1872\" data-end=\"1966\">If <span class=\"katex\"><span class=\"katex-mathml\">cost[v]&gt;cost[u]+weight(u,v)cost[v] &gt; cost[u] + weight(u, v)<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">]<\/span><span class=\"mrel\">&gt;<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mclose\">]<\/span><span class=\"mbin\">+<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">w<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">i<\/span><span class=\"mord mathnormal\">g<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mpunct\">,<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span>, then update <span class=\"katex\"><span class=\"katex-mathml\">cost[v]=cost[u]+weight(u,v)cost[v] = cost[u] + weight(u, v)<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">]<\/span><span class=\"mrel\">=<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mclose\">]<\/span><span class=\"mbin\">+<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">w<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">i<\/span><span class=\"mord mathnormal\">g<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mpunct\">,<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\" data-start=\"1968\" data-end=\"2049\">\n<p class=\"\" data-start=\"1971\" data-end=\"2049\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">After processing all stages, <span class=\"katex\"><span class=\"katex-mathml\">cost[destination]cost[destination]<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">d<\/span><span class=\"mord mathnormal\">es<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mord mathnormal\">ina<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mord mathnormal\">i<\/span><span class=\"mord mathnormal\">o<\/span><span class=\"mord mathnormal\">n<\/span><span class=\"mclose\">]<\/span><\/span><\/span><\/span> will hold the minimum cost.<\/span><\/p>\n<\/li>\n<\/ol>\n<h3 class=\"\" data-start=\"2051\" data-end=\"2079\">2. <strong data-start=\"2058\" data-end=\"2079\">Backward Approach<\/strong><\/h3>\n<p class=\"\" data-start=\"2081\" data-end=\"2159\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">This method starts from the destination node and works backward towards the source.<\/span><\/p>\n<p class=\"\" data-start=\"2161\" data-end=\"2181\"><strong data-start=\"2161\" data-end=\"2181\">Algorithm Steps:<\/strong><\/p>\n<ol data-start=\"2183\" data-end=\"2656\">\n<li class=\"\" data-start=\"2183\" data-end=\"2264\">\n<p class=\"\" data-start=\"2186\" data-end=\"2264\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Initialize the cost of the destination node to 0 and all others to infinity.<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"2266\" data-end=\"2573\">\n<p class=\"\" data-start=\"2269\" data-end=\"2347\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">For each stage <span class=\"katex\"><span class=\"katex-mathml\">ii<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">i<\/span><\/span><\/span><\/span> from <span class=\"katex\"><span class=\"katex-mathml\">kk<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">k<\/span><\/span><\/span><\/span> down to 1:<\/span><\/p>\n<ul data-start=\"2352\" data-end=\"2573\">\n<li class=\"\" data-start=\"2352\" data-end=\"2573\">\n<p class=\"\" data-start=\"2354\" data-end=\"2432\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">For each node <span class=\"katex\"><span class=\"katex-mathml\">vv<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">v<\/span><\/span><\/span><\/span> in stage <span class=\"katex\"><span class=\"katex-mathml\">ii<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">i<\/span><\/span><\/span><\/span>:<\/span><\/p>\n<ul data-start=\"2439\" data-end=\"2573\">\n<li class=\"\" data-start=\"2439\" data-end=\"2573\">\n<p class=\"\" data-start=\"2441\" data-end=\"2468\">For each edge <span class=\"katex\"><span class=\"katex-mathml\">(u,v)(u, v)<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mpunct\">,<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span>:<\/p>\n<ul data-start=\"2477\" data-end=\"2573\">\n<li class=\"\" data-start=\"2477\" data-end=\"2573\">\n<p class=\"\" data-start=\"2479\" data-end=\"2573\">If <span class=\"katex\"><span class=\"katex-mathml\">cost[u]&gt;cost[v]+weight(u,v)cost[u] &gt; cost[v] + weight(u, v)<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mclose\">]<\/span><span class=\"mrel\">&gt;<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">]<\/span><span class=\"mbin\">+<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">w<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">i<\/span><span class=\"mord mathnormal\">g<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mpunct\">,<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span>, then update <span class=\"katex\"><span class=\"katex-mathml\">cost[u]=cost[v]+weight(u,v)cost[u] = cost[v] + weight(u, v)<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mclose\">]<\/span><span class=\"mrel\">=<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">]<\/span><span class=\"mbin\">+<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">w<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">i<\/span><span class=\"mord mathnormal\">g<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mpunct\">,<\/span><span class=\"mord mathnormal\">v<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\" data-start=\"2575\" data-end=\"2656\">\n<p class=\"\" data-start=\"2578\" data-end=\"2656\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">After processing all stages, <span class=\"katex\"><span class=\"katex-mathml\">cost[source]cost[source]<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">cos<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mopen\">[<\/span><span class=\"mord mathnormal\">so<\/span><span class=\"mord mathnormal\">u<\/span><span class=\"mord mathnormal\">rce<\/span><span class=\"mclose\">]<\/span><\/span><\/span><\/span> will hold the minimum cost.<\/span><\/p>\n<\/li>\n<\/ol>\n<hr class=\"\" data-start=\"2658\" data-end=\"2661\" \/>\n<h2 class=\"\" data-start=\"2663\" data-end=\"2712\">\ud83e\uddee Example: Solving a Multistage Graph Problem<\/h2>\n<p class=\"\" data-start=\"2714\" data-end=\"2756\">Consider a multistage graph with 4 stages:<\/p>\n<ul data-start=\"2758\" data-end=\"2879\">\n<li class=\"\" data-start=\"2758\" data-end=\"2788\">\n<p class=\"\" data-start=\"2760\" data-end=\"2788\"><strong data-start=\"2760\" data-end=\"2771\">Stage 1<\/strong>: Node 1 (Source)<\/p>\n<\/li>\n<li class=\"\" data-start=\"2790\" data-end=\"2815\">\n<p class=\"\" data-start=\"2792\" data-end=\"2815\"><strong data-start=\"2792\" data-end=\"2803\">Stage 2<\/strong>: Nodes 2, 3<\/p>\n<\/li>\n<li class=\"\" data-start=\"2817\" data-end=\"2842\">\n<p class=\"\" data-start=\"2819\" data-end=\"2842\"><strong data-start=\"2819\" data-end=\"2830\">Stage 3<\/strong>: Nodes 4, 5<\/p>\n<\/li>\n<li class=\"\" data-start=\"2844\" data-end=\"2879\">\n<p class=\"\" data-start=\"2846\" data-end=\"2879\"><strong data-start=\"2846\" data-end=\"2857\">Stage 4<\/strong>: Node 6 (Destination)<\/p>\n<\/li>\n<\/ul>\n<p class=\"\" data-start=\"2881\" data-end=\"2905\">Edges and their weights:<\/p>\n<ul data-start=\"2907\" data-end=\"3587\">\n<li class=\"\" data-start=\"2907\" data-end=\"2987\">\n<p class=\"\" data-start=\"2909\" data-end=\"2987\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(1,2): 2<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"2989\" data-end=\"3071\">\n<p class=\"\" data-start=\"2991\" data-end=\"3071\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(1,3): 1<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3073\" data-end=\"3157\">\n<p class=\"\" data-start=\"3075\" data-end=\"3157\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(2,4): 2<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3159\" data-end=\"3243\">\n<p class=\"\" data-start=\"3161\" data-end=\"3243\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(2,5): 3<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3245\" data-end=\"3329\">\n<p class=\"\" data-start=\"3247\" data-end=\"3329\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(3,4): 3<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3331\" data-end=\"3415\">\n<p class=\"\" data-start=\"3333\" data-end=\"3415\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(3,5): 6<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3417\" data-end=\"3501\">\n<p class=\"\" data-start=\"3419\" data-end=\"3501\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(4,6): 1<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3503\" data-end=\"3587\">\n<p class=\"\" data-start=\"3505\" data-end=\"3587\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">(5,6): 2<\/span><\/p>\n<\/li>\n<\/ul>\n<p class=\"\" data-start=\"3589\" data-end=\"3620\"><strong data-start=\"3589\" data-end=\"3620\">Using the Forward Approach:<\/strong><\/p>\n<ol data-start=\"3622\" data-end=\"4854\">\n<li class=\"\" data-start=\"3622\" data-end=\"3707\">\n<p class=\"\" data-start=\"3625\" data-end=\"3707\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Initialize: cost[1]=0, cost[others]=\u221e<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3709\" data-end=\"3972\">\n<p class=\"\" data-start=\"3712\" data-end=\"3794\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">From Node 1:<\/span><\/p>\n<ul data-start=\"3799\" data-end=\"3972\">\n<li class=\"\" data-start=\"3799\" data-end=\"3883\">\n<p class=\"\" data-start=\"3801\" data-end=\"3883\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[2] = min(\u221e, 0+2) = 2<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"3888\" data-end=\"3972\">\n<p class=\"\" data-start=\"3890\" data-end=\"3972\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[3] = min(\u221e, 0+1) = 1<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\" data-start=\"3974\" data-end=\"4237\">\n<p class=\"\" data-start=\"3977\" data-end=\"4059\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">From Node 2:<\/span><\/p>\n<ul data-start=\"4064\" data-end=\"4237\">\n<li class=\"\" data-start=\"4064\" data-end=\"4148\">\n<p class=\"\" data-start=\"4066\" data-end=\"4148\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[4] = min(\u221e, 2+2) = 4<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"4153\" data-end=\"4237\">\n<p class=\"\" data-start=\"4155\" data-end=\"4237\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[5] = min(\u221e, 2+3) = 5<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\" data-start=\"4239\" data-end=\"4502\">\n<p class=\"\" data-start=\"4242\" data-end=\"4324\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">From Node 3:<\/span><\/p>\n<ul data-start=\"4329\" data-end=\"4502\">\n<li class=\"\" data-start=\"4329\" data-end=\"4413\">\n<p class=\"\" data-start=\"4331\" data-end=\"4413\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[4] = min(4, 1+3) = 4<\/span><\/p>\n<\/li>\n<li class=\"\" data-start=\"4418\" data-end=\"4502\">\n<p class=\"\" data-start=\"4420\" data-end=\"4502\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[5] = min(5, 1+6) = 5<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\" data-start=\"4504\" data-end=\"4678\">\n<p class=\"\" data-start=\"4507\" data-end=\"4589\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">From Node 4:<\/span><\/p>\n<ul data-start=\"4594\" data-end=\"4678\">\n<li class=\"\" data-start=\"4594\" data-end=\"4678\">\n<p class=\"\" data-start=\"4596\" data-end=\"4678\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[6] = min(\u221e, 4+1) = 5<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\" data-start=\"4680\" data-end=\"4854\">\n<p class=\"\" data-start=\"4683\" data-end=\"4765\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">From Node 5:<\/span><\/p>\n<ul data-start=\"4770\" data-end=\"4854\">\n<li class=\"\" data-start=\"4770\" data-end=\"4854\">\n<p class=\"\" data-start=\"4772\" data-end=\"4854\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">cost[6] = min(5, 5+2) = 5<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p class=\"\" data-start=\"4856\" data-end=\"4950\"><strong data-start=\"4856\" data-end=\"4866\">Result<\/strong>: <span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">The minimum cost from Node 1 to Node 6 is 5.<\/span><\/p>\n<hr class=\"\" data-start=\"4952\" data-end=\"4955\" \/>\n<p class=\"\" data-start=\"4957\" data-end=\"5030\">For a visual and detailed explanation, you might find this video helpful:<\/p>\n<div class=\"not-prose mb-3 flex flex-col gap-4 text-base\">\n<div><\/div>\n<\/div>\n<hr class=\"\" data-start=\"5078\" data-end=\"5081\" \/>\n<p class=\"\" data-start=\"5083\" data-end=\"5225\">If you need further clarification or assistance with specific problems related to dynamic programming and multistage graphs, feel free to ask!<\/p>\n<h3 data-start=\"5083\" data-end=\"5225\"><a href=\"https:\/\/www.jntua.ac.in\/gate-online-classes\/registration\/downloads\/material\/a159237887440.pdf\" target=\"_blank\" rel=\"noopener\">AAD- Dynamic Programming Introduction and General Method multistage graphs with example Part 15<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/www.kavery.org.in\/engg\/cse-ecourse\/CS6402-DAA.pdf\" target=\"_blank\" rel=\"noopener\">cs 6402 design and analysis of algorithm sce 3 department &#8230;<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/vtu-cs-site.web.app\/notes\/cs_not\/4sem\/daa\/DAA-Module-4.pdf\" target=\"_blank\" rel=\"noopener\">Module-4 : Dynamic Programming &#8211; VTU IN POCKETS<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/snscourseware.org\/snsrcas\/files\/CW_5c4d67ab82c50\/Dynamic%20Programming%20-%20Unit%20IV.pdf\" target=\"_blank\" rel=\"noopener\">DYNAMIC PROGRAMING MULTISTAGE GRAPH<\/a><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>AAD- Dynamic Programming Introduction and General Method multistage graphs with example Part 15 [fvplayer id=&#8221;122&#8243;] Dynamic Programming (DP) is a method for solving complex problems by breaking them down into simpler subproblems. It is particularly effective for optimization problems where decisions are made in stages, and each decision affects subsequent choices. A classic application of [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-2806","post","type-post","status-publish","format-standard","hentry","category-algorithm-analysis-and-design"],"_links":{"self":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/comments?post=2806"}],"version-history":[{"count":0,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2806\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/media?parent=2806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/categories?post=2806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/tags?post=2806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}