I am looking at the applications of BDD to figure out if it's possible to implement the x,y concept there.
Let me explain.
Let's say I have z of something to distribute in an x,y coordinate plane. The constraints are:
- All the z items have to be placed in the x,y coordinate plane.
- Some of the z items have to be a certain distance away from each other.
I think integer linear programming can sort this out. For example, with a set of equations, I can represent the constraints above and do linear programming to solve for the exact locations.
But what I am asking is if BDD can help with this?
In other words, can Binary Decision Diagram represent x,y coordinates and can I represent the above constraints with Boolean functions (equivalent to the set of equations above) and BDDs be manipulated to sort out the above constraints for exact locations just like linear programming?
I do not have any concrete examples to show but I think representing x,y coordinates equivalent in Binary is a place to start?
Yes, it is possible to encode the given integer-valued problem of placement over a plane using binary decision diagrams, and thus compute answers (as satisfying assignments). For example, using the Python package
omega(which uses the Python packageddfor BDD computations):Using BDDs with distance constraints as above can lead to BDDs that are exponential in size in the number of variables. The reason is that representing multiplication can lead to exponentially-sized BDDs, as proved in https://doi.org/10.1109/12.73590 .
If the constraints are not distance between points, but distance along each axis (i.e., an inequality or equality constraint on the absolute value of
x1 - x2ory1 - y2, or on both), then exponential complexity is avoided.The above solves the placement problem over a mesh. This is a discrete placement problem. The continuous placement problem cannot be solved with binary decision diagrams, because it requires floating-point arithmetic.
The program above prints: