Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/32: Рейтинг темы: голосов - 32, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194

Распознание логические формулы в конъюнктивной нормальной форме

21.10.2012, 18:10. Показов 6829. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, помогите пож-та, не очень силен в Lisp но очень нужно, стоит интерпретатор XLISP, пишется под чистым лиспом т.е. Common Lisp, здание заключ в следующем:
Булева формула есть терм, определяемый следующим образом: константы true и false -булевы формулы; если X и Y - булевы формулы, то и списки (X v Y), (X & Y), (~ X) -булевы формулы, здесь v и & - бинарные инфиксные операторы дизъюнкции и конъюнкции, а ~ - унарный оператор отрицания. Напишите функцию, распознающую логические формулы в конъюнктивной нормальной форме, т.е. формулы, являющиеся конъюнкцией дизъюнкций литералов, где литерал - атомарная формула или ее отрицание.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2012, 18:10
Ответы с готовыми решениями:

Составьте программу нахождения совершенной конъюнктивной нормальной формы
Составьте программу нахождения совершенной конъюнктивной нормальной формы (с.к.н.ф.) на любом известном вам алгоритмическом языке и найдите...

Приведите к предваренной нормальной форме следующие формулы логики предикатов
Приведите к предваренной нормальной форме следующие формулы логики предикатов.

Привести формулы к предваренной нормальной форме. Не уверена в правильности решения(+)
1. \overline{\forall xP(x)}\vee \exist x Q(x,y)= \exist x\overline{P(x)}\vee\exist xQ(x,y)= \exist aP(a)\vee\exist x Q(x,y)= \exist a...

50
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
15.11.2012, 21:53  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Catstail Посмотреть сообщение
Увы - теперь только завтра...
у меня что то не получается никак решить данную задачи видимо не оч хорошо понимаю лисп, вы нашли решение данной проблемы? помогите пож-та
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
15.11.2012, 23:01
Постараюсь.
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
16.11.2012, 08:57  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Постараюсь.
к понедельнику сможете? а то пробовал методом поочередного перебора по спсику как описывал выше не получается...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
16.11.2012, 11:58
Да, очень постараюсь к понедельнику
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
18.11.2012, 18:40  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Да, очень постараюсь к понедельнику
что то придумали по этому поводу? как можно решить данную проблему?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
18.11.2012, 20:10
Взял первый неудачный пример и сразу убедился, что просто пропущена скобка...
Если поставить скобку, то ошибка исчезает и выдается верный ответ - Nil (поскольку форма не есть КНФ)
Миниатюры
Распознание логические формулы в конъюнктивной нормальной форме  
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
18.11.2012, 20:20  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Взял первый неудачный пример и сразу убедился, что просто пропущена скобка...
Если поставить скобку, то ошибка исчезает и выдается верный ответ - Nil (поскольку форма не есть КНФ)
как понять не кнф??
если это реально то что писал как препод сказал это кнф типа там q & (a v b)
и тд вообще по сути двойной внутри типа (q v a v b) & (c v d v s) кнф является не так ли?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
18.11.2012, 20:33
1) я нашел еще одну свою ошибку. Вот вариант:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun neq (x y) (not (eq x y)))
 
(defun chk-var (x) (cond ((atom x) 
                          (AND (NOT (NULL x)) (NEQ x '&) (NEQ x 'v) (NEQ x '~) (Not (numberp x))))
                         (t (AND (= (length x) 2)
                                 (EQ  '~ (car x))
                                 (NEQ '& (cadr x))
                                 (NEQ 'V (cadr x))
                                 (NOT (numberp x))))))
 
(defun chk-diz (x) (cond ((atom x) nil)
                         ((= 3 (length x)) (AND  (chk-var (car x)) (chk-var (caddr x)) (EQ 'v (cadr x)))) 
                         (t nil)))
 
(defun chk-kon (x) 
    (cond ((null x) t)
          ((chk-diz x) t)
          ((= 1 (length x)) (chk-diz (car x))) 
          ((= 2 (length x)) nil)
          ((= 3 (length x)) (AND (chk-diz (car x)) (chk-diz (caddr x)) (EQ '& (cadr x))))
          (t (AND (chk-kon (subseq x 0 3)) (EQ '& (car (subseq x 3))) (chk-kon (subseq x 4))))))
2. Да, я ошибся и в том, что дизъюнкции могут быть множественными. Сейчас занимаюсь...
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
18.11.2012, 21:07  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
1) я нашел еще одну свою ошибку. Вот вариант:

Да, я ошибся и в том, что дизъюнкции могут быть множественными. Сейчас занимаюсь...
интересно а в чем была ошибка, то что небыло дополнительной проверки? эта прога теперь любые проверяет? или только множественные?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
18.11.2012, 21:26
Цитата Сообщение от Catstail Посмотреть сообщение
((atom x) nil)
- у функции chk-diz не хватало этой строки. Вторую ошибку будет исправить сложнее.
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
20.11.2012, 19:41  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- у функции chk-diz не хватало этой строки. Вторую ошибку будет исправить сложнее.
почему? и в чем же заключается сложность?

Добавлено через 20 часов 34 минуты
Цитата Сообщение от Catstail Посмотреть сообщение
- у функции chk-diz не хватало этой строки. Вторую ошибку будет исправить сложнее.
в чем заключается вторая ошибка и как ее можно было бы исправить?

Добавлено через 16 часов 30 минут
кстати не работает chk-diz на двойной т.е. (a v b v s) не работает

Добавлено через 24 минуты
исправил, в функции chk-diz вместо
Lisp
1
2
                         ((= 3 (length x)) (AND  (chk-var (car x)) (chk-var (caddr x)) (EQ 'v (cadr x)))) 
                         (t nil)))
исправил на
Lisp
1
2
((= 3 (length x)) (AND  (chk-var (car x)) (chk-var (caddr x)) (EQ 'v (cadr x)))) 
         (t (AND  (chk-var (car x)) (chk-var (caddr x)) (EQ 'v (cadr x)) (chk-diz (cddr x))))))
работает на больше чем 2 переменныхх в дизъ
верно ли сделано вопрос спорный дабы признак конца нету наверно
теперь не знаю как сделать чтоб просто переменную проверяла если есть в кнф формуле например
(a & (a v b))и тд...
может кто подскажет??

Добавлено через 8 часов 4 минуты
окончательная программа такова
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
(defun neq (x y) (not (eq x y)))
 
;; проверка переменной
(defun chk-var (x) (cond ((atom x) 
                          (AND (NOT (NULL x)) (NEQ x '&) (NEQ x 'v) (NEQ x '~) (Not (numberp x))))
                         (t (AND (= (length x) 2)
                                 (EQ  '~ (car x))
                                 (NEQ '& (cadr x))
                                 (NEQ 'V (cadr x))
                                 (NOT (numberp x))))))
 
;; проверка элементарной дизъюнкции 
(defun chk-diz (x) (cond ((atom x) nil)
                         ((= 3 (length x)) (AND  (chk-var (car x)) (chk-var (caddr x)) (EQ 'v (cadr x))))
                        (t (AND  (chk-var (car x)) (chk-var (caddr x)) (EQ 'v (cadr x)) (chk-diz (cddr x))))))
 
;; как проверять            
(defun chk-as (x) (cond ((atom x) (chk-var x))
                         ((= 2 (length x)) (chk-var x))
                        (t (chk-diz x))))
 
;; собственно проверка КНФ:
(defun chk-kon (x) 
    (cond ((null x) t)  ;; пустая КНФ
          ((chk-diz x) t) ;; отдельно стоящая дизъюнкция
          ((= 1 (length x)) (chk-kon (car x)))  ;; КНФ в скобках
          ((= 2 (length x)) nil) ;; в списке 2 терма либо ((a v b) &) либо 2 дизъюнкта
          ;; Если длина =3, то первый терм должен быть дизъюнкцией;
          ;; Второй - символом &;
          ;; третий терм должен быть дизъюнкцией;
          ((= 3 (length x)) (AND (chk-as (car x)) (chk-as (caddr x)) (EQ '& (cadr x))))
          ;; отрезаем первые 3 терма и проверяем на КНФ
          ;; следующий символ - &
          ;; хвост - тоже проверяем на КНФ
          (t (AND (chk-kon (subseq x 0 3)) (EQ '& (car (subseq x 3))) (chk-kon (subseq x 4))))))    
 
;;не верные       
( print (chk-kon '((a v b) & (c v d) & (~ (w v x)))))   
( print (chk-kon '(~(c v d))))
( print (chk-kon '((a v b) v (c v d) & ((~ w) & x))))
( print (chk-kon '((a v b) & (c & d) & ((~ w) & x))))
 
;;верные    
( print (chk-kon '((a v b) & (c v d) & ((~ w) v x))))
( print (chk-kon '((a v b) & (c v d) & ((~ w) & x))))
( print (chk-kon '((c v d) & ((~ w) v (~ x) v z))))
( print (chk-kon '((d v a) & (c v d v a) & (c v d v a))))
( print (chk-kon '(d & (c v d) & (c v a))))
( print (chk-kon '((~ d) & (c v d) & (c v a v s))))
( print (chk-kon '((x v y v (~ z)) & (x v z) & (y v (~ z)))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2012, 19:41

Приведите к предваренной нормальной форме следующие формулы логики предикатов
Добрый день\вечер, не могли ли вы мне пожалуйста помочь с данной задачей потому что я тупой и не знаю как её делать и решать. Я буду очень...

Привести к предваренной нормальной форме (ПНФ) и к сколемовской нормальной форме (СНФ)
Привести к предваренной нормальной форме (ПНФ) и к сколемовской нормальной форме (СНФ). \ \forall x \forall y ] Напомните как...

логические формулы
Помогите пожалуйста написать программу, распознающую логические формулы в конъюнктивной нормальной форме, т.е. формулы, являющиеся...

Логические формулы
Как записать логическими формулами следующие высказывание: Если медиана треугольника, проведенная к основанию является биссектрисой и...

Логические формулы
Подскажите, как в столбце Размер штрафа при помощи функции из категории Логические рассчитать размер штрафа на следующих условиях: более...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru