“Simple algorithms can create flying birds, seeing eyes and thinking brains…”
I would like to know how valid the above statement is in the context of modern evolutionary theory (N.B. this is not meant to be a GD thread about intelligent design!). I’m currently engaged in a bit of a debate over that statement, here is a snippet of the argument against me:
“There are no simple algorithms creating flying birds and seeing eyes. scientific and mathematical experimentations have stayed only at the level of hypothetical computer calculations that only simulate - not ‘create’ - models ‘resembling’ living organisms. (and i might add that many of these have only been done in the context of fractal/chaos theory that while useful in some cases, have proven completely irrelevant to social dynamics)”.
I thought evolutionary theory almost by definition is the playing-out of simple algorithims that tend to manifest neat complicated things like flying birds. Am I wrong?
On the crudest level, I’ve heard evolution described as:
*
Try everything.
Kill what doesn’t work.
Repeat.*
Now, I wouldn’t claim that algorithm has scientific rigor, but it boils things down to the essence.
We know that genetic variation is the basis for evolution, and that variation consists of rearangement of 4 types of bases on DNA/RNA molecules. Is that simple enough?
A quick google search on “definition algorithm” gives
So evolution is not an algorithm.
Genetic algorithms are - but the algorithm is how the decision is made and the methods of recombination - not the steps in finding the solution to the actual problem.
What’s the problem to be solved in evolution? I don’t there is one, since that implies a goal. But the process is simple enough. My take on it:
Shake up the genetic material.
Put the organism out there.
See if it reproduces.
Repeat.
There is, but only if the recursion is guaranteed in some manner to “bottom out” and quit after a finite (and preferably bounded) number of steps. So, for instance,
int func(void)
{
return(func());
}
is not an algorithm. On the other hand, you could have an algorithm like
The “dictionary” definition of an algorithm is of course an over-simplification. A lot of algorithms in use never stop (or are intended to never stop). E.g., the SDMB’s algorithm. I used to make fun of Don Knuth’s official definition in TAoCP Vol 1. Some of the algorithms I work with violate 3 of his 4 conditions!
Anyway, enough of this hijack.
All complicated things are just a lot of very simple things in very large numbers. E.g., The Universe. (Not just any universe, The Universe.) A few quark types, “4” basic forces (actually at most 2), some exchange particles, etc. Really not a whole lot of stuff to build on. But, look at what a whole lot of copies of something results in. Namely everything!
So, simple stuff created everything. Living and non-living.
And, BTW, the rules of The Universe are continuous, not discrete. So a lot of algorithmic concepts don’t apply.
No, it turns out that those which reproduce transmit their genes - but it is hard to imagine how that could be otherwise with our type of reproduction. I don’t understand how anything with no intelligence at all can have a purpose. Some animals can, but evolution itself cannot.
No, something that does not terminate is not an algorithm. The halting problem is not an algorithm. The SDMB is not an algorithm either - though the search function is.
You can compute the complexity of an algorithm in number of steps as a function of input data - tough to do for the SDMB or even an operating system.
All algorithms can be expressed as programs, but not all programs are algorithms.