Genetic programming evolves mathematical expressions to fit noisy data. A population of expression trees undergoes selection, crossover, and mutation — searching for the best symbolic formula.
Koza's genetic programming (1992) treats programs as trees that can be bred. Selection pressure favors lower RMSE. Crossover swaps subtrees; mutation replaces nodes. The search space is vast — programs can be infinite — but evolution navigates it effectively.