In computer science, bruteforce search or exhaustive search, also known as generate and test, is a trivial but very general problemsolving technique that consists of systematically enumerating all possible candidates for the solution and checking whether each candidate satisfies the problem's statement.For example, a bruteforce algorithm to find the divisors of a natural number n is to enumerate all integers from 1 to n, and check whether each of them divides n without remainder. For another example, consider the popular eight queens puzzle, which asks to place eight queens on a standard chessboard so that no queen attacks any other. A bruteforce approach would examine all the 64!/56!8! = 4,426,165,368 possible arrangements of 8 pieces in the 64 squares, and, for each arrangement, check whether any queen attacks any other.Bruteforce search is simple to implement, and will always find a solution if it exists. However, its cost is proportional to the number of candidate solutions, which, in many practical problems, tends to grow very quickly as the size of the problem increases. Therefore, bruteforce search is typically used when the problem size is limited, or when there are problemspecific heuristics that can be used to reduce the set of candidate solutions to a manageable size.The method is also used when the simplicity of implementation is more important than speed. This is the case, for example, in critical applications where any errors in the algorithm would have very serious consequences; or when using a computer to prove a mathematical theorem. Bruteforce search is also useful as "baseline" method when benchmarking other algorithms or metaheuristics. Indeed, bruteforce search can be viewed as the simplest metaheuristic.Brute force search should not be confused with backtracking, where large sets of solutions can be discarded without being explicitly enumerated (as in the textbook computer solution to the eight queens problem above). The bruteforce method for finding an item in a table — namely, check all entries of the latter, sequentially — is called linear search.
Contents
Implementing the bruteforce search
Basic algorithm
In order to apply bruteforce search to a specific class of problems, one must implement four procedures, first,next, valid, and output. These procedures should take as a parameter the data P for the particular instance of the problem that is to be solved, and should do the following:# first (P): generate a first candidate solution for P.# next (P, c): generate the next candidate for P after the current one c.
Full article ▸
