# What is brute-force search?

by Stephen M. Walker II, Co-Founder / CEO

## What is brute-force search?

Brute-force search, also known as exhaustive search or generate and test, is a general problem-solving technique and algorithmic paradigm that systematically enumerates all possible candidates for a solution and checks each one for validity. This approach is straightforward and relies on sheer computing power to solve a problem.

In the context of computer science, a brute-force algorithm might find the divisors of a natural number by enumerating all integers and checking whether each divides the number without remainder. Another example is the traveling salesman problem, where the brute-force solution calculates the total distance for every possible route.

While a brute-force search is simple to implement and will always find a solution if it exists, it can be inefficient due to the potentially large number of candidate solutions. Therefore, it's typically used when the problem size is limited, or when there are problem-specific heuristics that can reduce the set of candidate solutions. It's also used when the simplicity of implementation is more important than speed, such as in critical applications where any errors in the algorithm would have serious consequences.

Despite its simplicity and guaranteed solution finding, the brute-force approach has several disadvantages. It's inefficient, often with a time complexity above the O(N!) order of growth, and relies more on the power of a computer system than on good algorithm design. These algorithms run slowly and are not constructive or creative compared to other algorithms.

In the context of cybersecurity, a brute-force attack involves systematically checking all possible keys until the correct key is found. This strategy can theoretically be used against any encrypted data, with longer keys exponentially more difficult to crack than shorter ones.

## How does brute-force search compare to other AI search methods?

Brute-force search, in comparison to other AI search methods, is the most straightforward approach that does not rely on any domain-specific knowledge or heuristics to guide the search. It systematically explores all possible states or solutions until it finds one that satisfies the problem's criteria. This method is guaranteed to find a solution if one exists, but it can be highly inefficient, especially as the size of the problem space increases.

Other AI search methods aim to improve efficiency by using various strategies:

• Divide and conquer — This technique breaks down a problem into smaller, more manageable subproblems, solves each one, and combines the results. Algorithms like merge sort and quick sort use this approach to achieve better performance.

• Dynamic programming — This method stores the results of overlapping subproblems to avoid redundant calculations, significantly reducing the time complexity from exponential to polynomial in many cases.

• Greedy algorithms — These make the locally optimal choice at each step with the hope of finding a global optimum. However, they do not always guarantee an optimal solution.

• Heuristic search methods — These include algorithms like A* Search, which use heuristics to guide the search towards the goal more efficiently than brute-force methods. Heuristics help to prioritize which paths to explore based on an estimate of the cost from the current state to the goal.

• Metaheuristics — These are higher-level procedures designed for finding, generating, or selecting a heuristic that may provide a sufficiently good solution to an optimization problem, especially with incomplete or imperfect information. Examples include genetic algorithms, simulated annealing, and ant colony optimization.

Brute-force search is often used when the problem space is small, when the simplicity of implementation is critical, or when other methods have failed. It is also easier to explain and understand compared to more complex algorithms, which can be advantageous in terms of transparency and trust. However, due to its lack of scalability and inefficiency, brute-force search is generally unsuitable for large-scale or real-time applications where quick responses are necessary.

## What are the benefits, drawbacks, and applications of Brute-force search?

Brute-force search offers a straightforward and easily implementable algorithm in AI, with the definitive advantage of always finding a solution if one exists. Its simplicity makes it an ideal candidate for parallel processing, leveraging modern computing power to improve efficiency. Additionally, it serves as a benchmark for evaluating the performance of more complex algorithms.

However, brute-force search is not without its limitations. It can be time-consuming and resource-heavy, particularly with large search spaces. The lack of heuristics or domain knowledge means it may yield sub-optimal solutions and is prone to getting trapped in local minima.

In practical applications, brute-force search is instrumental in solving constraint satisfaction problems, which are prevalent in planning, scheduling, and resource allocation tasks. It is also employed in pathfinding algorithms, where it exhaustively explores all possible routes to determine the shortest path in a graph-based representation of locations and connections.

## More terms

### What is spatial-temporal reasoning?

Spatial-temporal reasoning is a cognitive ability that involves the conceptualization of the three-dimensional relationships of objects in space and the mental manipulation of these objects as a series of transformations over time. This ability is crucial in fields such as architecture, engineering, and mathematics, and is also used in everyday tasks like moving through space.

### What is eager learning?

Eager learning is a method used in artificial intelligence where the system constructs a general, input-independent target function during the training phase. This is in contrast to lazy learning, where generalization beyond the training data is delayed until a query is made to the system.