Edge addition is only valid if the edge does not create
a cycle in the graph. There is no check for this! All
it does is look at whether the edge already exists or
not! This is horrible! As a consequence, Hill
climbing generates moves that are illegal and then gets
stuck in infinite loops.