Мне пришлось решить аналогичную проблему, и я обнаружил, что использование суммы хэшей в качестве хэша приводит к слишком большому количеству коллизий. Распределение суммы хэшей просто недостаточно распределено.
Я обнаружил, что использование продукта хэшей приводит к гораздо меньшему количеству столкновений. Это, конечно, зависит от природы хэшей для отдельных вершин.
Установите тестовый стенд и протестируйте несколько симметричных хеш-функций, а затем выберите лучший на основе коллизий.
Вы можете попробовать
h(x,y) = x+y
h(x,y) = x*y
h(x,y) = x * y + (x ^ y)
h(x,y) = x *y + x + y
где x ^ y = min (x, y)