Булева система (для C ++ / C # / Java) - PullRequest
2 голосов
/ 14 мая 2011

Как я могу программно разрешить этот тип системы:

A = !B
B = !C
D = !B
E = !A
E = !B

, чтобы я мог получить, подставив A = C = D (3) и E = B (2).Мне нужен только номер из 2 групп.Если невозможно получить 2 группы, я отображаю сообщение об ошибке.

Ответы [ 2 ]

3 голосов
/ 14 мая 2011

В случае, если это не закрыто как обман, из моего ответа в вашем предыдущем вопросе:

Для решения уравнений вида

X 1 = НЕ Х 3

X 5 = НЕ X 2

и т. Д.

Сформировать график с узлами в виде X i и соединением X i и X j в том случае, еслипоявляется уравнение X i = НЕ X j .

Теперь попробуйте 2-цветный график, используя поиск в ширину.

0 голосов
/ 14 мая 2011

Рассмотрим строку битов ABCDE.Для каждого подмножества этой строки установите для всех переменных этого подмножества значение true, а для всех переменных, не входящих в подмножество, - false.Посмотрите, какое подмножество соответствует вашим условиям.

Вы можете реализовать это, считая в двоичном виде от 0 до 2^(num variables) - 1.Для каждого числа его двоичное представление дает вам, какие переменные true, а какие false.Так что вам просто нужно получить все биты числа и выполнить ваши проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...