[CLIP]
> Given the following fitness landscape, where higher points on the
> vertical axis represents higher levels of fitness:
> 
>                      B
>            A        /\
>           /\       /  \---------
>          /  \-----/    
> --------/               
> --------------------------------
> 0                              N
> 
> A replicator (or algorithim, or whatever) is "stuck" if it
> gets fooled into thinking that some point other than B is
> maximum fitness.  A replicator (or algorithm, or whatever)
> is _not_ "stuck" when it reaches B, even if it stays at B
> forever.  At B, no further improvements are possible.
[No interest in STUCK algorithm]
> Here's the basic idea behind evolution's "algorithm":
> 
> BEGIN EVOLVE
> Begin at a random location.
> Select a random location and move there.
> Repeat EVOLVE
> END EVOLVE
> 
> Notice that even if the replicator reaches B, evolution will move
> it off B and back again.
Let me try this C++ pseudocode fragment [trying to understand this]:
Species::Evolve(Environment& CurrEnv)
{
// Begin at a random location with nonzero survival function; this should 
// be handled by the constructor
ApplyMutationRules() // defines legal types of mutations, and applies 
                     // them 'randomly' when generating next time-slice's 
                     // population from this time-slice's population;
                     // also subsumes any replicative activity
ApplySurvivalFunction(CurrEnv)  // requires every population member in the 
                                // next time-slice to pass a survival 
                                // check or be eliminated
UpdateTime()	     // makes the latest time-slice generated current
}
"Species" is an abstract class here.  All three functions referred to 
above would have to be implemented for any concrete use of "Species"; 
ideally, we aren't allowed to construct objects of type Species.  
[Compiler error!]
> EVOLVE is a simplified version of evolution.  Evolution doesn't
> move beings around the fitness landscape, rather it moves their
> descendents around.  Also, it kills off critters that land in
> an area too low on the vertical axis.
> Kenneth Boyd presented the problem where the fitness landscape was
> such that a jump from A to any other point with acceptable fitness
> was too big to make with a single mutation.  My point was that
> evolution can make a big jump by what's equivlent to combining
> several jumps at once.  
I.e., several mutations may define a 'plateau' at A [this is actually 
fairly common in practice], and B may be accessible from one 'corner' of 
plateau A, which may take some time to fill.
[CLIP]
//////////////////////////////////////////////////////////////////////////
/   Towards the conversion of data into information....
/
/   Kenneth Boyd
//////////////////////////////////////////////////////////////////////////