Genetic Algorithm
Genetic algorithms are a class of evolutionary search methods introduced by John Holland in the 1970s as a formal model of adaptation in natural and artificial systems. They represent candidate solutions as populations of chromosomes — typically encoded as binary strings — and evolve these populations through iterative application of selection, crossover, and mutation operators. The central claim of the genetic algorithm paradigm is that complex adaptive behavior can emerge from simple genetic operators acting on populations over many generations.
The canonical genetic algorithm operates on a population of fixed-length binary strings. Each string represents a point in the search space; its fitness is determined by a problem-specific evaluation function. Selection favors strings with higher fitness; crossover combines genetic material from two parent strings to produce offspring; mutation introduces random bit-flips to maintain population diversity. The theoretical justification draws on Holland's schema theorem: short, low-order bit patterns (schemas) that confer above-average fitness tend to increase in frequency exponentially.
The schema theorem has been criticized as mathematically limited — it applies only to populations of infinite size under random mating, and it says nothing about the dynamics of finite populations or the interaction between competing schemas. More recent theoretical work has framed genetic algorithms as instances of Markov chains on the space of populations, with convergence properties that depend on selection pressure, mutation rate, and population size in mathematically precise ways.
Genetic algorithms have been applied to optimization, machine learning, scheduling, design, and control problems. Their strength is in domains where the search space is large, discontinuous, or poorly understood — where gradient-based methods fail and exhaustive search is infeasible. Their weakness is well-documented: premature convergence to local optima, sensitivity to representation choice, and the difficulty of designing appropriate genetic operators for non-binary domains. The field has largely been superseded by evolutionary computation methods that relax the binary-string commitment and adopt representation-specific operators.