Сохранение BDD в файле с использованием пакета CUDD / DDDMP? - PullRequest
1 голос
/ 26 января 2020

Я успешно создал BDD с использованием пакета CUDD. Я также могу визуализировать это, используя какой-то уже созданный инструмент. Я заинтересован в хранении BDD в файле, используя пакет DDDMP CUDD. Я читал, что Dddmp_cuddBddStore () делает это для нас. Я не могу найти никаких примеров использования этой функции. Его аргументы немного сложны. Любой небольшой пример, использующий эту функцию, очень поможет.

1 Ответ

0 голосов
/ 23 февраля 2020

Интерфейс для пакета DDDMP доступен с привязками Cython к CUDD пакета Python dd. Пример, который создает BDD логической функции, сохраняет ее в файл DDDMP и затем загружает его из этого файла, следующий:

from dd import cudd as _bdd

bdd = _bdd.BDD()
bdd.declare('x', 'y')

# The BDD node for the conjunction of variables x and y
u = bdd.add_expr('x /\ y')

# save to a DDDMP file (the file extension matters,
# for example a PDF extension would result in plotting
# a diagram using GraphViz)
bdd.dump('storage.dddmp', [u])

# load the BDD from the DDDMP file
u_ = bdd.load('storage.dddmp')
assert u == u_, (u, u_)

Исходный код модуля Cython dd/cudd.pyx включает пример использования функций Dddmp_cuddBddStore и Dddmp_cuddBddLoad

https://github.com/tulip-control/dd/blob/b625dd46120e2e1f5a12190332e6191d07681ee8/dd/cudd.pyx#L1157 -L1222

Установка dd с модулем dd.cudd описан здесь и может быть обобщен как

pip download dd --no-deps
tar -xzf dd-*.tar.gz
cd dd-*/
python setup.py install --fetch --cudd

Это загрузит и соберет CUDD, а также создаст и установит привязки Cython dd к CUDD.

...