Searching Algorithms

A searching algorithm is an algorithm that aims to find an item within a collection of items.

Major Topics
There are many kinds of searching algorithms, including:
 * List Search Algorithms, which search for an item in a linear (one-dimensional) collection, for example, an array.
 * Tree Searching Algorithms, which search for an item in a tree.


 * String Searching Algorithms, which search for patterns within strings.
 * Graph Searching Algorithms, which search for an node or a path in a graph.

Search Techniques
There are two major search methodologies:

Brute Force and Exhaustive Search. It is of two types:

 * BFS
 * DFS

Heuristic Search uses a heuristic function to help guide the search. When a node is expanded, each of its children is evaluated using a search function. This can be of many types:

 * Hill Climbing
 * A* Algorithm
 * AO* Algorithm