Враховуючи булеву ланцюг на змінних (яка використовує лише ворота NOT, AND і OR), який найефективніший спосіб отримати булеву формулу, представлену схемою? Чи існує алгоритм багаточастоти для цієї проблеми?н
Враховуючи булеву ланцюг на змінних (яка використовує лише ворота NOT, AND і OR), який найефективніший спосіб отримати булеву формулу, представлену схемою? Чи існує алгоритм багаточастоти для цієї проблеми?н
Відповіді:
Якщо я правильно розумію ваше запитання, я б сказав, що ви можете використати стандартне скорочення від CIRCUIT-SAT до SAT: представляйте кожен затвор як нову змінну, а потім представляйте всю схему у формі CNF, при цьому кожен пункт має форму , де - нова змінна, а формула для заходу задається , використовуючи змінні для інших воріт для представлення входів. Це можна зробити за допомогою простого обходу (за лінійним часом, що явно оптимально).v ϕ
Наприклад, якщо у вас є три входи, , і , з воротами AND, що пов'язують і , а також і , і затвором, що пов'язує їхні виходи, ви можете ввести три змінні для представлення воріт - , і відповідно - і перепишіть формулу вЗауважте, що вихідна змінна включена явно.x 2 x 3 x 1 x 2 x 2 x 3 v 1 v 2 v 3 ( v 1 ↔ ( x 1 ∧ x 2 ) ) ∧ ( v 2 ↔ ( x 2 ∧ x 3 ) ) ∧ ( v 3 ↔ ( v 1 ∨ v 2 ) ) ∧ v 3
Вступ до алгоритмів Cormen et al. детально пояснює це в главі про NP-повноту.