Привет!
У меня интересная курсовая, думаю, есть что обсудить. На самом деле, пишу с целью именно поразмышлять, а не получить помощь.
Необходимо избавиться от
внешнего квантора существования в формулах вида
В качестве условий могут быть только
линейные уравнения
Например, для формулы
программа должна выводить
Более сложная:
Если необходимо, могу привести еще несколько примеров. Понятно, что для больших формул на выходе будут получатся страшнейшие
ДНФ.
Выполнить программу необходимо на одном из диалектов Пролога.
Здесь предлагаю обсуждать алгоритм в целом, не зацикливаясь на конкретных технических средствах. С другой стороны, пролог - мощное средство для решения такого рода задач, так что целиком абстрагироваться не получится.
Мои размышления:
Необходимо хранить некую базу знаний про переменные и константы, уметь объединять базы знаний (or, and), уметь
умно добавлять значения в базу. Например: в БЗ хранится информация, что
. Тогда, при попытке добавить факт
, эта ветка должна обрываться. Еще, видимо, надо постоянно поддерживать ДНФ.
Необходимо обрабатывать такие ситуации:
БЗ:
при добавлении
, ветка должна обрываться. Как это делать не совсем понятно, первое что приходит в голову - при добавлении
просматривать уже известные факты про а и дописывать избыточное условие
. Но это едва ли хороший тон.
Для начала предлагаю обсудить алгоритм работы описанного аппарата БЗ, или предложить что-нибудь взамен.
Кто-нибудь сталкивался с подобными задачами? Есть какие-нибудь классические алгоритмы?
Заранее спасибо, надеюсь на конструктивный диалог.
-- Сб апр 09, 2011 12:40:36 --Это, очевидно, программа тоже должна уметь делать...