Linear (LP) and Dynamic Programming (DP) are not mutually exclusive; DP aims to break a problem into minor sub-problems and use smart recidivism to reduce polynomial complexity. A DP problem could have some linear or other cost-function (which you try to minimize) and restrictions. At AlgoMonster, Linear programming means that optimization is based on costs and constraints where both are linear. If you break the issue into smaller sub-problems and follow the DP approach. You can solve a linear programming problem with DP.
Optimizing Sprint Planning with the Knapsack Problem and Dynamic Programming
Scrum is a renowned agile method of development. It divides the result of a system into a series of sprints.
The team develops the product backlog in each Sprint (system requirements).
The progress team estimates each item’s development time. This item is also a priority for the product owner.
I present the optimization of sprint planning in this context. The Product Backlog items select for each Sprint.
This approach designs to provide the highest value for Sprint for a selection of items. It optimizes the work and the significant features achieve. The choice of items model on the problem of knapsacking.
The problem of the knapsack.
We have N items to put in a crunch with a C capacity in the Knapsack problem. Each item’s value and associated weight. The objective is to add as many items as possible to the pack. The highest potential value is also available without exceeding capacity C.
Modeling Scrum Sprint how the knapsack problem.
The knapsack is a Sprint to do a parallel. The knapsack capacity is the same in this context as Sprint’s execution time. The items in the product backlog can be knapsack items. The estimated time of the product items may be the weight of the knapsack items. Lastly, the priority of products from the backlog is the value of knapsack items.
Dynamic programming solves the problem.
Dynamic programming solves a problem by analyzing a more simple sequence of issues than the original problem. It avoids re-calculating sub-problems with the lower-to-high approach and saves results. Consider the following table as a backlog list: Table 1 shows a backlog item in each row. This item is the estimated time in the “Time” column. And “Priority” columns are the priority given by the owner of the product. Assume the Sprint will take five days to complete. Table 2 shows each row I a backlog, and each column j is a sprint j capability (in days).
Execute the algorithm.
The algorithm starts in row 1 (task 1) and tries to select the task at j. When the time for the Sprint is the task. The algorithm then verifies that the I priority is higher than the already prioritized during sprint j. If so, update that value to the table. Suppose it’s less than the sprint time, however. It is so that at the task time, the algorithm removes the sprint time j. And the priority value of the Sprint (j-i) adds priority to the task i. If that sum is greater than the priority already present in j, shall give the preferences for this amount to Sprint j. If sprint j does not support i, the initial value of sprint j is the same.
What is the contrast Between Divide and Conquer and Dynamic Programming
Divide and conquer and dynamic programming are essentially different: dividing and conquering solve problems to solve critical issues. In contrast, dynamic programming uses the result of subproblems to find the most efficient solution to the main problem. Dividing and conquering and dynamic programming are two algorithms or solutions to problems. Dividing and conquering algorithms divide the problem into subproblems and combine them to resolve the original question. However, dynamic programming does not independently solve these subproblems. It stores responses of sub-discussions to use in similar cases.
Divide and conquer approach
The term “Divide and Conquer,” initially uses by the Roman rulers. “Divide et impera,” well known in politics and sociology. It’s a strategy that divides elements into sub-elements to influence strength and difficulty.
Inspired by this idea, scientists developed the approach of division and conquest. The first phase of the algorithm divides and conquers the primary problem. The first phase’s main idea is to split a given issue into more minor instances or subproblems. Each subproblem further divides into smaller subproblems. Until a stage achieve no further divisions reaches.
The second stage of a dividing and conquering algorithm is the resolution of sub-problems in the first phase. This phase involves the remedial solution of many subproblems. However, we sometimes needn’t solve the problems because, after the dividing step, they mark as solved independently.
The last stage of an algorithm divides and conquers consists of combining solutions to the underlying problems. The answers to the sub-problems recurringly fusion until we reach a location in which the original issue resolve.
Dynamic programming approach.
Dynamic programming is a popular algorithm, and a recurring formula uses for finding the solution. It’s like splitting and conquering because it breaks the problem into smaller sub-problems.
The main difference is that subproblems are interdependent in dynamic programming. Therefore, we store the outcome of sub-problems in future references for similar or overlapping sub-problems to reduce their running time.
Therefore, dynamic programming is a good choice if the main problem splits into smaller subsets and the smaller subsets overlap. Dynamic programming specifically optimizes the recursive calls that take place in the approach of dividing and conquering.
We examine the earlier solutions before we calculate the resolution of a current subsidiary problem. If any of the subproblems previously calculated are similar to the one in question.
We are using the result of the subproblem. Finally, to resolve the original problem, we merge the solution of subproblems.
Divide and Conquer vs. Dynamic Programming.
They are somehow similar, but their approaches differ as well. We shall summarize in this section all the previous discussions and list the main differences in the table: