Our Method




Given a density function in the unit square, we generate a discrete representation of this function of sufficient resolution via e.g. rejection sampling. Our method then takes an arbitrary distribution of points (called 'sites') and tries to adapt them to the given density function as accurately as possible.







During initialization, the points of the underlying space are randomly assigned to the given sites with the sole constraint that each site gets the same number of points (our 'capacity constraint'). We then start our optimization which swaps the assignment of points between any two sites if and only if this swap is beneficial. Once each site's points have been compared to each other site's points, the sites are moved to the center of mass of their corresponding points (which are a discrete representation of the site's Voronoi region) and the iteration concludes. This process is repeated until some convergence criterion is met. The resulting sites now represent our final point distribution. Note that during this process none of the underlying points is ever moved. Instead, merely the assignment of points to sites is re-evaluated with each iteration.