title: Differences between backtracking and brute-force search
body: <p>I'm currently taking a course in algorithms, and I'm having some difficulty understanding the exact definitions of brute-force search and backtracking. As I understand it, the following is true:</p>
  
  <ul>
  <li><em>Brute-force search</em> (<em>BFS</em>) is a type of algorithm which computes every possible solution to a problem and then selects one that fulfills the requirements.</li>
  <li><em>Explicit</em> constraints give the possible values for each choice (e.g., choices 1-3 are limited to <code>{1, 2}</code>, choice 4 is limited to <code>{3, 4, 5}</code>, etc.), which determines how the search's "execution tree" is shaped.</li>
  <li><em>Implicit</em> constraints relate the different choices to eachother (e.g., choice 2 must be greater than choice 1, etc.), which is used in BFS to remove potential solutions.</li>
  <li><em>Backtracking</em> is an extension to BFS in which the <em>implicit</em> constraints are evaluated after every choice (as opposed to <em>after</em> all solutions have been generated), which means that potential solutions can be discarded before they have been 'finished'.</li>
  </ul>
  
  <p>Basically, all I'm wondering is whether this is accurate or not, and, if it isn't, I'd really appreciate some clarification. Thanks in advance.</p>