courses:knowledge_base_and_expert_system:lab2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
courses:knowledge_base_and_expert_system:lab2 [2019/09/09 06:49]
andrey.suchkov [Основные теоретические положения]
courses:knowledge_base_and_expert_system:lab2 [2022/12/10 09:08] (current)
Line 5: Line 5:
 Пролог (англ. Prolog) -- язык и система логического программирования,​ основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка. Пролог (англ. Prolog) -- язык и система логического программирования,​ основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
  
-Prolog является декларативным языком программирования:​ логика программы выражается в терминах отношений,​ представленных в виде фактов и правил. Для того чтобы инициировать вычисления,​ выполняется специальный запрос к базе знаний,​ на которые система логического программирования генерирует ответы ​«истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.+Prolog является декларативным языком программирования:​ логика программы выражается в терминах отношений,​ представленных в виде фактов и правил. Для того чтобы инициировать вычисления,​ выполняется специальный запрос к базе знаний,​ на которые система логического программирования генерирует ответы ​<<истина>> ​и <<ложь>>. Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.
  
 Иначе говоря,​ предикат можно определить как функцию,​ отображающую множество произвольной природы в множество булевых значений {ложно,​ истинно}. Задача пролог-программы заключается в том, чтобы доказать,​ является ли заданное целевое утверждение следствием из имеющихся фактов и правил. Иначе говоря,​ предикат можно определить как функцию,​ отображающую множество произвольной природы в множество булевых значений {ложно,​ истинно}. Задача пролог-программы заключается в том, чтобы доказать,​ является ли заданное целевое утверждение следствием из имеющихся фактов и правил.
Line 23: Line 23:
   parent(name,​ name)   parent(name,​ name)
 clauses clauses
-  dog(X) :- parent(X,​Y),​ dog(Y).+  dog(X) :- parent(X, Y), dog(Y).
   dog("​Rex"​).   dog("​Rex"​).
-  parent("​Jack","​Rex"​).+  parent("​Jack",​ "​Rex"​).
 goal goal
   dog(Who).   dog(Who).
Line 36: Line 36:
   - В среде отладчика включите окна просмотра переменных (**Local Variables**) и стека вызовов (**Call Stack**). Произведите пошаговую прокрутку программы,​ нажимая на кнопку **Trace Into** на панели инструментов.   - В среде отладчика включите окна просмотра переменных (**Local Variables**) и стека вызовов (**Call Stack**). Произведите пошаговую прокрутку программы,​ нажимая на кнопку **Trace Into** на панели инструментов.
   - Запишите и проанализируйте трассу выполнения программы по содержимому окон **Call Stack** и **Variables For Current Clause** для одного решения.   - Запишите и проанализируйте трассу выполнения программы по содержимому окон **Call Stack** и **Variables For Current Clause** для одного решения.
-  - Напишите на языке Visual Prolog программу //DOG1//, описывающую родственные связи собак в соответствии с вариантом задания. Программа должна использовать предикаты ​//dog// и //parent// из программы //DOG.PRO// и содержать не менее двух правил.+  - Напишите на языке Visual Prolog программу //DOG1//, описывающую родственные связи собак в соответствии с вариантом задания. Программа должна использовать предикаты ​''​dog'' ​и ''​parent'' ​из программы //DOG.PRO// и содержать не менее двух правил.
   - Произведите отладку программы в системе Visual Prolog на следующих запросах:​   - Произведите отладку программы в системе Visual Prolog на следующих запросах:​
     - Кто является собакой?​     - Кто является собакой?​
Line 45: Line 45:
     - Кому Balto является родителем?​     - Кому Balto является родителем?​
   - Постройте трассу выполнения программы для каждого запроса.   - Постройте трассу выполнения программы для каждого запроса.
-  - **//​Задание для самостоятельной работы.//​** Используя предикаты ''​parent(symbol,​symbol)'',​ ''​man(symbol)'',​ ''​woman(symbol)'',​ ''​married(symbol,​symbol)'',​ записать факты, описывающие Вашу семью. \\ Написать на языке Visual Prolog программу //FAMILY//, содержащую 8 правил вывода для любых родственных отношений в Вашей семье (например:​ мать, отец, сестра,​ брат, племянница,​ племянник,​ тетя, дядя, внучка,​ внук, бабушка,​ дедушка,​ двоюродная сестра,​ двоюродный брат и т.д.). \\ Отладить программу на 5-6 различных запросах.+  - **//​Задание для самостоятельной работы.//​** Используя предикаты ''​parent(symbol,​ symbol)'',​ ''​man(symbol)'',​ ''​woman(symbol)'',​ ''​married(symbol,​ symbol)'',​ записать факты, описывающие Вашу семью. \\ Написать на языке Visual Prolog программу //FAMILY//, содержащую ​не менее ​8 правил вывода для любых родственных отношений в Вашей семье (например:​ мать, отец, сестра,​ брат, племянница,​ племянник,​ тетя, дядя, внучка,​ внук, бабушка,​ дедушка,​ двоюродная сестра,​ двоюродный брат и т.д.). \\ Отладить программу на 5-6 различных запросах.
 ===== Варианты заданий ===== ===== Варианты заданий =====
 [[.lab2:​lab2_vars]] [[.lab2:​lab2_vars]]
courses/knowledge_base_and_expert_system/lab2.1568011762.txt.gz · Last modified: 2022/12/10 09:08 (external edit)