Content deleted Content added
Undid revision 1285865773 by 87.214.42.62 (talk) |
|||
(36 intermediate revisions by 33 users not shown) | |||
Line 1:
{{Short description|Property of a computational problem}}
[[Image:Shortest path optimal substructure.
In [[computer science]], a problem is said to have '''optimal substructure''' if an optimal solution can be constructed from optimal solutions of its subproblems. This property is used to determine the usefulness of greedy algorithms for a problem.<ref name=cormen>{{cite book|title=Introduction to Algorithms |edition=3rd|last1=Cormen|first1=Thomas H. |last2=Leiserson |first2=Charles E. |last3=Rivest|first3=Ronald L. |last4= Stein |first4=Clifford|date=2009 |isbn=978-0-262-03384-8|publisher=[[MIT Press]]|authorlink1=Thomas H. Cormen |authorlink2=Charles E. Leiserson|authorlink3=Ron Rivest |authorlink4=Clifford Stein}}</ref>
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 Moscow. Even if that ticket involves stops in Miami and then London, we can't conclude that the cheapest ticket from Miami to Moscow stops in London, because the price at which an airline sells a multi-flight trip is usually not the sum of the prices at which it would sell the individual flights in the trip.
==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 ==
* [[Longest common subsequence problem]]
* [[Longest increasing subsequence]]
* [[Longest palindromic substring]]
* [[Shortest_path_problem#All-pairs_shortest_paths|All-Pairs Shortest Path]]
* Any problem that can be solved by [[dynamic programming]].
== 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]]
|