Algorithm
restart: set s to a randomly selected initial state;
if s is a solution then return s;
else if s is a strict local-minimum then goto restart;
else s:= a neighbor that has the best evaluation value
(ties are broken in deterministic, unfair way)