Content deleted Content added
m →Problems with optimal substructure: Removing final word of Longest palindromic substring problem link, so that it directs to a page that exists covering the topic instead of being a redlink |
Undid revision 1285865773 by 87.214.42.62 (talk) |
||
(19 intermediate revisions by 16 users not shown) | |||
Line 1:
{{Short description|Property of a computational problem}}
[[Image:Shortest path optimal substructure.svg|200px|thumb|'''Figure 1'''. Finding the shortest path using optimal substructure. Numbers represent the length of the path; straight lines indicate single [[Edge (graph theory)|edges]], wavy lines indicate shortest [[Path (graph theory)|paths]], i.e., there might be other vertices that are not shown here.]]
In [[computer science]], a problem is said to have '''optimal substructure''' if an optimal solution can be constructed
Typically, a [[greedy algorithm]] is used to solve a problem with optimal substructure if it can be
<!-- A special case of optimal substructure is the case where a subproblem S<sub>ab</sub> has an activity P<sub>y</sub>, then it should contain optimal solutions to subproblems S<sub>ay</sub> and S<sub>yb</sub>. --> <!-- *TODO: Add Recursion, misc. -->
In the application of [[dynamic programming]] to [[Optimization (mathematics)|mathematical optimization]], [[Richard Bellman]]'s [[
==Example==
Consider finding a [[Shortest path problem|shortest path]] for
As an example of a problem that is unlikely to exhibit optimal substructure, consider the problem of finding the cheapest airline ticket from Buenos Aires to
==Definition==
A slightly more formal definition of optimal substructure can be given. Let a "problem" be a collection of "alternatives", and let each alternative have an associated cost, ''c''(''a
== Problems with optimal substructure ==
Line 23 ⟶ 25:
== Problems ''without'' optimal substructure ==
* [[Longest path problem]]
* [[Addition-chain exponentiation]]
* ''Least-cost airline fare.'' Using online flight search, we will frequently find that the cheapest flight from airport A to airport B involves a single connection through airport C, but the cheapest flight from airport A to airport C involves a connection through some other airport D. However, if the problem takes the maximum number of layovers as a parameter, then the problem has optimal substructure. The cheapest flight from A to B that involves at most ''k'' layovers is either the direct flight; or the cheapest flight from A to some airport C that involves at most ''t'' layovers for some integer ''t'' with ''0≤t<k'', plus the cheapest flight from C to B that involves at most ''k−1−t'' layovers.
== See also ==
* [[Dynamic Programming]]
* [[Principle of optimality]]
* [[Divide and conquer algorithm]]
== References ==
<references />
[[Category:Dynamic programming]]
|