Исходное пространство поиска вашей проблемы содержит 2^N
записей.Путем фиксирования M
входных данных пространство поиска уменьшается в 2^M
раза и имеет 2^(N-M)
записей.
В зависимости от вашего выбора фиксированных M
входных значений, вы можете либо упростить поиск, либо слишком сильно сократить пространство поиска и в итоге не найти решения.
Ваш черный ящик - этокомбинаторная схема, где выход зависит исключительно от текущего состояния входов?В настройке RTL
(уровень / язык передачи регистров) вы также можете описать последовательный механизм, в котором выходные данные также зависят от предыдущих входных данных.
Для учета фиксированных входных данных называется Boolean ConstraintРаспространение .Это в основном упрощает вашу схему, так как могут быть удалены все элементы, которые имеют предопределенный выход.Примеры: AND
с одним или несколькими ложными входами имеет выход false .OR
с одним или несколькими входами true имеет выход true и т. Д.Другие упрощения включают в себя удаление двойных отрицаний и инвертированных входных пар в ворота XOR/XNOR
.
Вы могли бы взглянуть на bc2cnf , переводчик из логического формата списка соединений в усваиваемый SAT-решательФайл DIMACS / CNF .Аналогично ABC , bc2cnf будет распространять постоянные входы и выдавать довольно оптимизированный CNF .