Genetic algorithms are a search heuristic and optimization technique based on natural evolution. They use processes such as inheritance, mutation, and natural selection to evolve solutions to problems iteratively. A genetic algorithm begins with a random population which is evaluated and selected through fitness. Offspring are created through crossover and mutation of parents over generations, with less fit solutions dropping out in a survival of the fittest manner, until a satisfactory solution is found. Genetic algorithms have been applied to a variety of optimization and search problems in many different domains.