Neustar Research has a good article on this which may be of interest to you. However, I think the approach they took was still based on the inclusion-exclusion principle (still a good read though).
Another approach if you have the flexibility of changing your implementation, is to use a different type of data-sketch that is more amenable to set expressions. There is some discussion (and references) here:
* https://research.neustar.biz/2012/12/17/hll-intersections-2/
Another approach if you have the flexibility of changing your implementation, is to use a different type of data-sketch that is more amenable to set expressions. There is some discussion (and references) here:
* https://datasketches.github.io/docs/Theta/ThetaSketchFramewo...
* https://datasketches.github.io/docs/Tuple/TupleOverview.html