Skip to content

Recursive implementation of zdd_eval#35

Open
marek-zeleny wants to merge 3 commits intotrolando:masterfrom
marek-zeleny:zdd_eval_recursive
Open

Recursive implementation of zdd_eval#35
marek-zeleny wants to merge 3 commits intotrolando:masterfrom
marek-zeleny:zdd_eval_recursive

Conversation

@marek-zeleny
Copy link

I have re-implemented the zdd_eval() operator to work also in the general case, i.e. for variables that are not in the root of the evaluated ZDD. The algorithm is taken from the following paper, where it's called subset0, resp. subset1:

Shin-ichi Minato. 1993. Zero-suppressed BDDs for set manipulation in combinatorial problems. In Proceedings of the 30th international Design Automation Conference (DAC '93). Association for Computing Machinery, New York, NY, USA, 272–277. https://doi.org/10.1145/157485.164890

I have also added some test cases for this operation and have since used it as a subroutine in other algorithms, where it seems to be yielding correct results. I hope I have correctly used the library's internals (caching, protection from GC, ...).

@trolando trolando force-pushed the master branch 2 times, most recently from ba13229 to 74578fb Compare October 25, 2023 22:53
@trolando
Copy link
Owner

I'll check this out later, what is the purpose of this version? I.e. use case?

@trolando trolando force-pushed the master branch 4 times, most recently from 2afc4d7 to 4013c97 Compare August 5, 2025 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants