Кстати, вместо эвристики по рангу можно просто случайно выбирать, кого к кому подвешивать. Пишется проще, а работает хорошо. Есть подозрение, что в среднем рандомизация работает так же хорошо, как и ранги, но я не знаю.