Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Приведение к КНФ


Автор: Lonley 30.7.2004, 00:15
Привет!!!
Вот блин не получается точне получается ДНФ , а КНФ нет

(a > b)V((c > d) & p)
после преобразов получ ДНФ
~a V b V ~cp V dp а как получить КНФ ни как не могу получить sad.gif
---------
если кто может объясните как

Автор: e-moe 3.8.2004, 23:03
как я понял '\/' это '+'
'&' это 'И'

А что такое '>' и '~' ?

Автор: p0s0l 3.8.2004, 23:18
~ - отрицание
> - следование (из a следует b)

Автор: p0s0l 4.8.2004, 00:23
Построим таблицу истинности:
Код
abcdp  F
0****  1
11***  1
10**0  0 <- идёт в КНФ
100*1  1
10101  0 <- идёт в КНФ
10111  1


Из неё следует КНФ такая:
(~a V b V p)(~a V b V ~c V d V ~p)

хотя давно это было... может и попутался...

Автор: e-moe 4.8.2004, 21:13
Цитата(p0s0l @ 3.8.2004, 22:18)
> - следование (из a следует b)

Следование? А это как?
Когда я учил ПТЦА(Прикладн. Теор. Цифров. Автоматов), у нас такого небыло.... Или это название какой-то логич. операции?

Автор: p0s0l 4.8.2004, 21:54
Следование - это вроде называется "импликация" (в голове это слово всплывает, но может это вообще не из той области smile.gif...)
Но суть такова: из истины не может следовать ложь...
Т.е. a > b = 0 в случае, если a=1, b=0, в других случах результат = 1...
И если приглядишься к приведенному в первом посте приводу к ДНФ, заметишь, что:
(a > b) = (~a V b) = ~(a & ~b)

Автор: e-moe 4.8.2004, 22:03
Ясн...
Спасибо!

Автор: KuzZzya 11.12.2007, 17:40
а может есть у кого-нить реализованный КНФ? всё-равно на каком языке, но хотелось бы html файлик, очень надо

Автор: nworm 16.12.2007, 03:29
Не совсем понятно, что конкретно надо

http://www.puz.com/sw/karnaugh/karnaugh_12.htm

Автор: KuzZzya 25.12.2007, 14:09
Необходимо реализовать алгоритм преобразования формулы в КНФ. Примерно как описано и показано на рисунках тут: http://blaga.ru/Javascriptbook/book/gl20/gl20.html#24

Автор: KuzZzya 25.12.2007, 15:16
Т.е. В текстовое поле вводится формула, после щелчка по кнопке, формируется эквивалентная формула, находящаяся в КНФ. 

Автор: Smskaaa 7.10.2009, 21:17
((( помогите пожалуйста к КНФ привести пример:
((R->P)->(|(QvR)->P))
-> это импликация
| это отрицание
v это дизъюнкция
срочно нужно очень

Автор: dengalf 8.10.2009, 05:06
((R->P)->(|(QvR)->P))
если память не изменяет будет примерно так:
((|RvP)->(QvRvP))=R|PvQvRvP=(RvP)(|PvP)vQvR=RvPvQvR=PvQvRесли таблицей - то также получится
Или Вам это программно для общего случая реализовать надо?

А насчет основной темы  - если ДНФ получается, то, помниться, она как-то элементарно в КНФ переводиться. То ли ее сначала надо до СДНФ дополнить, а уже потом в КНФ, точнее СКНФ(чего-то там с отрицаниями поколдовать)

Автор: nworm 8.10.2009, 14:21
СДНФ -> СКНФ
за два хода напрашивается вариант
1) строим по СДНФ таблицу
2) строим по таблице СКНФ.

Автор: dengalf 8.10.2009, 14:47
Чего-то там помнится хитрее было, а вот чего - хоть убей не помню smile . Хотя вариант по таблице наверное действительно будет самый "незамороченный" и легко реализуемый

Автор: Smskaaa 13.10.2009, 16:46
с помощью каких команд в Maple проверку уравнения делать?(знаю,что тема не по разделу,но здесь наиболее часто ответа дождёшься)

Автор: maxim1000 14.10.2009, 00:11
Модератор: 
всё-таки лучше создать отдельную тему...

Автор: Nikituki 15.10.2009, 21:42
Цитата(dengalf @  8.10.2009,  14:47 Найти цитируемый пост)
Чего-то там помнится хитрее было


Если не ошибаюсь, то СДНФ и СКНФ - это двойственные функции, то есть если СДНФ - это f(x1,...,xn), то СКНФ - это |f(|x1,...,|xn), где | - отрицание.

Автор: akma 17.10.2010, 15:39
(a->)&(c->d)&b
может кто-то подскажет как кнф и днф сделать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)