Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8929599
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T08:42:31+00:00 2026-06-15T08:42:31+00:00

In the book I am using Introduction to the Design & Analysis of Algorithms

  • 0

In the book I am using Introduction to the Design & Analysis of Algorithms, dynamic programming is said to focus on the Principle of Optimality, “An optimal solution to any instance of an optimization problem is composed of optimal solutions to its subinstances”.

Whereas, the greedy technique focuses on expanding partially constructed solutions until you arrive at a solution for a complete problem. It is then said, it must be “the best local choice among all feasible choices available on that step”.

Since both involve local optimality, isn’t one a subset of the other?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T08:42:33+00:00Added an answer on June 15, 2026 at 8:42 am

    Dynamic programming is applicable to problems exhibiting the properties of:

    • overlapping subproblems, and
    • optimal substructure.

    Optimal substructure means that you can greedily solve subproblems and combine the solutions to solve the larger problem. The difference between dynamic programming and greedy algorithms is that with dynamic programming, there are overlapping subproblems, and those subproblems are solved using memoization. “Memoization” is the technique whereby solutions to subproblems are used to solve other subproblems more quickly.

    This answer has gotten some attention, so I’ll give some examples.

    Consider the problem “Making change with dollars, nickels, and pennies.” This is a greedy problem. It exhibits optimal substructure because you can solve for the number of dollars. Then, solve for the number of nickels. Then the number of pennies. You can then combine the solutions to these subproblems efficiently. It does not really exhibit overlapping subproblems since solving each subproblem doesn’t help much with the others (maybe a little bit).

    Consider the problem “Fibonnaci numbers.” It exhibits optimal substructure because you can solve F(10) from F(9) and F(8) efficiently (by addition). These subproblems overlap because they both share F(7). If you memoize the result of F(7) when you’re solving F(8), you can solve F(9) more quickly.

    In response to the comment about dynamic programming having to do with “reconsidering decisions”: This is obviously not true for any linear dynamic programming algorithm like the maximum subarray problem or the Fibonacci problem above.

    Essentially, imagine a problem having optimal substructure as a directed acyclic graph whose nodes represent subproblems (wherein the whole problem is represented by a node whose indegree is zero), and whose directed edges represent dependencies between subproblems. Then, a greedy problem is a tree (all nodes except the root have unit indegree). A dynamic programming problem has some nodes with indegree greater than one. This illustrates the overlapping subproblems.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Using the Programming F# book, there's an example first given as serial: let result1
In the book Introduction to Algorithms, second edition, there is the following problem: Suppose
I'm reading Introduction to Algorithms book, second edition, the chapter about Medians and Order
I was programming the example code from Frank Luna's book Introduction to 3D Game
Recently I have read about hash-tables in a very famous book Introduction to Algorithms
I am working through the Introduction to Algorithms book by Cormen, and I have
I'm using Google Book Search API to add missings bits and pieces to my
I am working on making a book catalog searchable using Solr. I have written
I am developing an interactive 2-book for children using cocos2D framework. It would be
I am attempting to learn J and the book I am using says this

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.