title: What is the difference between greedy and best-first search algorithms?
body: <ul>
  <li>Best-first search - a search that has an evaluation function f(n) that determines the cost of expanding node n and chooses the lowest cost available node</li>
  <li>Uninformed search - has no knowledge of h(n)</li>
  <li>Informed search - has knowledge of h(n)</li>
  <li>Greedy search - is best-first, can be informed or uninformed, f(n) does not contain g(n)</li>
  <li>Uniform cost search - is best-first, is not greedy, is uninformed, f(n) = g(n)</li>
  <li>A* search - is best-first, is not greedy, is informed, f(n) = g(n) + h(n)</li>
  <li>Greedy best-first search - is best-first, is greedy, is informed, f(n) = h(n)</li>
  </ul>
  
  <p>Is this correct? Can someone give concrete and all-encompassing definitions for these terms? It seems that "greedy" and "best-first" are often used interchangeably. </p>
  
  <p>Even Wikipedia has conflicting definitions...</p>
  
  <p><a href="https://en.wikipedia.org/wiki/Greedy_algorithm#Examples" rel="nofollow noreferrer">Greedy algorithm - Wikipedia</a>:</p>
  
  <blockquote>
    <p>Dijkstra's algorithm and the related A* search algorithm are verifiably optimal <strong>greedy</strong> algorithms</p>
  </blockquote>
  
  <p><a href="https://en.wikipedia.org/wiki/Best-first_search" rel="nofollow noreferrer">Best-first search - Wikipedia</a>:</p>
  
  <blockquote>
    <p>The A* search algorithm is an example of a best-first search algorithm, as is B*. Best-first algorithms are often used for path finding in combinatorial search. <strong>Neither A* nor B* is a greedy best-first search, as they incorporate the distance from the start in addition to estimated distances to the goal.</strong></p>
  </blockquote>
  
  <p>Is it that A* is greedy, A* is best-first, but A* is not greedy best-first? </p>
  
  <p>Someone please sort all these terms out...</p>