Я пытаюсь реализовать очень-очень быстрый механизм логических выражений. Я использую его для представления состояний в очень больших пространствах состояний, поэтому мне нужно, чтобы он обрабатывал как можно больше операций в секунду. В основе этой машины лежит сумма произведений. Однако я столкнулся с проблемой оптимизации оператора NOT. Например, если у меня есть сумма продуктов с N minterms, где каждый minterm имеет около M переменных, то попытка инвертировать это создаст M^N minterms, которые затем будут упрощены с помощью алгоритма эспрессо. Я могу немного ускорить его и сэкономить немного памяти, если буду периодически запускать алгоритм эспрессо во время обратной операции, но этого недостаточно. Сомневаюсь, что я первый, кто столкнулся с этой проблемой, и я пытался провести исследование, но не могу найти эффективный способ сделать это.
Может ли кто-нибудь указать мне в правильном направлении?
(x1&y1)|(x2&y2)|...|(xn&yn)
. После отрицания это имеет длину 2^n. - person n. 1.8e9-where's-my-share m.   schedule 06.07.2014n
переменных, то есть2^n
записей в таблице истинности любой функции, которую вы пишете с этимиn
переменными. Я почти уверен, что если вы ограничите себя только выражением функции в форме суммы произведений, то всегда будет какое-то присвоение, которое форма суммы произведений обязательно должна иметь2^n
minterms. Однако что, если вы не ограничитесь формой суммы произведений? Возможно, это приведет к лучшей альтернативе. - person Apiwat Chantawibul   schedule 06.07.2014n
переменных, то мы можем провести тщательный анализ этого. Но если говорить о среднем случае булевой функции на практике, то я не знаю. Итак, какое дело вы хотите исследовать? - person Apiwat Chantawibul   schedule 06.07.2014