Пересечение BDD / ZDD с использованием CUDD - PullRequest
1 голос
/ 20 января 2020

У меня есть несколько наборов комбинаций , и я хочу выяснить функцию пересечения между двумя из них. Затем я хочу представить пересеченные результаты в ZDD.

Я думаю об использовании пакета CUDD для этого.

Пример:

Все 4-битные строки, имеющие расстояние Хэмминга> = 2 с 1100 =

{0001, 0010, 0011,0101, 0110, 0111, 1001 , 1010, 1011}

Все 4-битные строки, имеющие расстояние Хэмминга> = 2 с 0000 =

{0011, 0101, 0110, 1001, 1010, 0111, 1011, 1101, 1110}

Пересекающиеся элементы множества (что я хочу):

{0011, 0101, 0110, 1010, 1001}

Насколько я понимаю, мне нужно уметь express этих наборов комбинаций сначала, с булевыми функциями, например (f = ab c d), чтобы представить их соответствующие BDD, преобразовать их в ZDD и затем найти пересечение? Кто-то сталкивался с пакетом CUDD , пожалуйста, помогите.

1 Ответ

1 голос
/ 20 января 2020

Ваши рассуждения верны. Сначала вы можете построить BDD, соответствующие двум наборам строк, преобразовать их в ZDD, а затем построить пересечение (логическое И).

Однако вы также можете сначала вычислить пересечение (логическое И), а затем перевести результат для ZDD.

Однако неясно, что вы подразумеваете под «узнайте перекресток» - что вы хотите с ним сделать? Распечатать все элементы? Подсчитать количество элементов? В зависимости от вашей цели, перевод на ZDD может быть ненужным (или использование CUDD в целом).

...