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

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

21.10.2012, 18:10. Показов 6841. Ответов 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
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 15:14
Студворк — интернет-сервис помощи студентам
В каком Лиспе работаете?
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
06.11.2012, 15:39  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
subseq
не в курсе как исправить?и почему он говорить что выхожу за пределы
в обычном лиспе XLISP то что установлено в комп классах

Добавлено через 4 минуты
я так понимаю, он каким то образом входит за пределы списка, но непонял каким образом туда вылезает

Добавлено через 9 минут
пытался уже менять цифры в subseq бесполезно при 2 дизъюнкта норм работает при 3 не хочет

Добавлено через 10 минут
и препод говорит что размер кнф не важна хоть 4 хоть 5 дизъюнктора то все равно должна работать
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 15:49
Сейчас попробую в XLisp-е...
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
06.11.2012, 16:15  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Сейчас попробую в XLisp-е...
у меня стоит 7ка 64бит я через эмулятор виртбокс сделал винду и там делаю все

Добавлено через 16 минут
эх.. осталось 30 минут... боюсь не успеть..
все перебрал в голову не лезет где он сечет список то..
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 16:32
Я нашел свою ошибку. У меня в HomeLisp неверно реализован subseq (в Common Lisp не так). Сейчас подработаю код, чтобы работал в XLisp.
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
06.11.2012, 16:36  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Я нашел свою ошибку. У меня в HomeLisp неверно реализован subseq (в Common Lisp не так). Сейчас подработаю код, чтобы работал в XLisp.
хорошо, жду, хотя написано в справочнике xlisp такая же сигнатура

Добавлено через 14 секунд
у меня осталось минут 10..
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 17:00
Вот, вроде получилось... (Проверено в LispWorks):

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
(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 ((AND (= 3 (length x)) (chk-var (car x)) (chk-var (caddr x)) (EQ 'v (cadr x))) t)
                         (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))))))
 
 
(chk-kon '((a v b) & (c v d)))
 
==> T
 
(chk-kon '((a v b) & (c v (~ d))))
 
==> T
 
(chk-kon '((a v b) & (c v d) & (w v z)))
 
==> T
 
(chk-kon '((a v b) & (c v d) & (w ~ z)))
 
==> Nil
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
06.11.2012, 19:13  [ТС]
добавлена одна строчка всего и все?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 19:19
Не только. Вызов subseq приведен к стандарту CL (в частности, будет работать в XLisp, где и тестировалось).
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
06.11.2012, 19:45  [ТС]
честно скажу, разницы вызова subseq что то не заметил, так же или я что т опутаю, прошу пояснить немного
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 19:54
Цитата Сообщение от Catstail Посмотреть сообщение
(t (AND (chk-kon (subseq x 0 3)) (EQ '& (car (subseq x 3 1))) (chk-kon (subseq x 4))))))
- сравните с последним вариантом (у среднего вызова после тройки нет единицы.

Дело в том, что в CL третий параметр subseq - это не длина подсписка (как я ошибочно полагал), а номер позиции первого отбрасываемого элемента. Поэтому вызов (subseq x 3 1) - в CL вызывает ошибку.

Добавлено через 1 минуту
Цитата Сообщение от eddilou Посмотреть сообщение
sequence out of bound - 1
- вот так эта ошибка выглядела.
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
06.11.2012, 20:11  [ТС]
а еще самое любопытное вот что
если subseq это функция которая берет список от до +1 то почему последний берет не от 3 а от 4
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 20:16
В subseq элементы нумеруются с нуля
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
06.11.2012, 20:29  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
В subseq элементы нумеруются с нуля
так это я понял, но видите ли в лиспе так понял написана позиция +1 т.е. цфиру которая написана она не включается например 0 3 соотв берется 0 1 2 элемент
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
06.11.2012, 20:44
Вот протокол трассировки (LispWorks). Может, поможет...
Миниатюры
Распознание логические формулы в конъюнктивной нормальной форме  
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
13.11.2012, 15:10  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Вот протокол трассировки (LispWorks). Может, поможет...
привет еще раз, попытался сдать прогу в итоге выявлены след ошибки..
не работает при других лучаях таких как допустим
(x v d) & (x v (~ c) v (~ a)) т.е. при тройном аргументе внутри скобки
не работает при случае когда куча скобок и один аргумент
x & (x v (~ c) v (~ a))
не срабатывает напрмиер на
(a v b v d) & (a v (~ d) v s) & (a v d v d)
т.е. двойной дизънкт

Добавлено через 7 минут
я понимаю так что1 и 3 случ обяз должен срабатываться, а вот второй как то под вопросом сомневаюсь что это кнф
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
13.11.2012, 15:10
Ладно, посмотрю...
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
13.11.2012, 16:11  [ТС]
как исправить подскажите плиз

Добавлено через 8 минут
Цитата Сообщение от Catstail Посмотреть сообщение
Ладно, посмотрю...
вы сейчас сможете это сделать? еще как бы есть у меня часок.. я на паре, пытаюсь сделать сам не получается, пытаюсь chk-diz сделать рекурсивную в случае если больше 3 элемента в списке

Добавлено через 12 минут
еще выяснил что если стоит (~x) & (a v b) тоже является кнф и тд главное чтоб не стояло ~ перед выраженим
x & (a v b) тоже кнф...

Добавлено через 39 минут
я так понимаю допустим
1 & 2 & 3
сначала проверяется на предмет отрицания т.е. литерал обычный а не выражение или просто переменная
затем 2 проверяется а затем 2 и 3 передается в рекурсию окончанием будет то что если после 2 нет ничего или null или я не правильно мыслю?
осталось 30 минут..
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
13.11.2012, 19:45
Увы - теперь только завтра...
0
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
13.11.2012, 20:23  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Увы - теперь только завтра...
хорошо, с нетерпением буду ждать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2012, 20:23

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
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