Laslo, just a comment from the outside.
if i read get_connection_to_drop_candidate() correctly, your algorithm selects the first, in terms of location in 'connection' array, "best" (lowest state) candidate to drop. you might think of, when finding an *equally* "best" candidate, flipping some (weighted, by?) coin, and either taking your current candidate, or taking the newly discovered "best". as someone's e-mail tag says, "when in doubt, randomize" :). (as a *research* experiment, in some other life, i might flip a coin for *every* element in the array, based maybe on the relative states?) cheers, Greg
