SSoelvsten / adiar

An I/O-efficient implementation of (Binary) Decision Diagrams
https://ssoelvsten.github.io/adiar/
MIT License
21 stars 13 forks source link

Multi-Terminal Binary Decision Diagrams #438

Open SSoelvsten opened 1 year ago

SSoelvsten commented 1 year ago

Right now, Adiar only supports diagrams, where the terminals (leaves) have boolean values. Of course, one can already use this to express non-boolean values by having b BDDs to represent each of the b bits individually. Yet, we can also extend the diagram itself to have non-boolean terminals, i.e. to make it a Multi-Terminal Binary Decision Diagrams (MTBDD) [Fujita97].

Of course, all of this ought to have some unit tests, such that we are sure we can trust the code.

References

Additional Context

SSoelvsten commented 9 months ago

Speaking with Andrew Miner, his implementation of MTBDDs use weights on each edge instead ( quite similar to QMDDs #443 ). Googling a little bit around, we may want to consider the following alternatives instead

This has the added benefit, that a lot of the meta data (e.g. cuts) does not need to be revised.