При объединении двух совместимых объектов HyperLogLog вы можете просто взять максимальный ковш для объединения без потерь, который не вводит никаких новых ошибок:Пересечение HyperLogLog: почему бы не использовать min?
Union.Bucket [i] = Max (A.Bucket [ я], B.Bucket [я])
При выполнении перекрестка, хотя, вы должны использовать принцип включения-исключения:
IntersectionCountEstimate = A.CountEstimate() + B.CountEstimate() - Союз. CountEstimate()
Почему это так, что использование минимального значения ведра не работает как эффект е пересечение?
Intersection.Bucket [I] = Min (A.Bucket [I], B.Bucket [I])