# Welcome!

The purpose of this site is to provide an informative introduction to Genetic Algorithms: what they are, how they work, who pioneered the field, what kind of problems these algorithms can solve, and current applications of these algorithms. There even is an interactive example of a simplified Genetic Algorithm, which attempts to reformat a picture to 32 colors while maximizing the picture quality, that can be found here. Look to the toolbar on the right to find out more about Genetic Algorithms!

## What Are Genetic Algorithms?

To try to understand what a "Genetic Algorithm" is in its entirety, we will dissect this term, and consider each individual word separately: Genetic and Algorithm.

### Genetic

The world genetic may bring to mind an image of a miniscule strand of DNA, a double helix carrying the information that makes each of us human and unique. DNA, or deoxyribonucleic acid, is the medium through with we receive hereditary traits from our biological parents. It is the reason why we look similar to our parents, why we grow to a height similar to our parents, and why we are who we are in general. DNA is also the basis of evolution, which is the theory that, by survival of the fittest, the most "valuable" genetic code and is passed down to the next generation, which causes a species to adapt as a whole to it's environment. This is the connotation of genetic that is used in "Genetic Algorithms."

### Algorithm

An algorithm is as defined by Microsoft Encarta Dictionary, is "a logical sequence of steps for solving a problem, often written out as a flow chart, that can be translated into a computer program." In other words, it is like a very precise instruction manual to do some kind of task (very precise because a computer can only follow instructions, it can't figure out any assumed steps). For example, lets take the task of making a peanut butter and jelly sandwich. An algorithm for this task would be something along these lines:

First, place a paper plate on the kitchen counter. Then, get a loaf of white bread and a jar of peanut butter from the pantry, as well as a jar of grape jelly from the refrigerator, and place all of these things on the kitchen counter. Next, take two slices of white bread out of the bread bag, and put them on the paper plate. Take a butter knife out of the kitchen drawer, and place it on the paper plate as well. Open the peanut butter jar, and use the butter knife to remove some peanut butter; proceed to butter one slice of bread. Afterwards, open the jelly jar, take some jelly out with the knife, and smear some jelly onto the other slice. Place one slice of bread onto the other, so that the two sides with condiments are facing each other. Enjoy your peanut butter and jelly sandwhich!

Of course, a computer algorithm is a little different from the algorithm presented above, as computers cannot understand instructions in English. A programmer will write an algorithm, or program, in some programming language(for example C++ or Java), which will then be "translated" into machine code by a compilier, which can be understood by the computer.

From these two individual words, it can be inferred that a genetic algorithm is an algorithm that makes use of evolutionary principles, by with a computer solves problems.