Описание базы знаний "Родственные отношения.
Поиск путей в ориентированном графе.
Решение алгебраических задач
Составить ориентированный граф без циклов из 7−10 вершин, среди которых есть и изолированные вершины. Для получения графа составить программу, определяющую, существует ли путь между любой парой его вершин. Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования национальный исследовательский университет «мэи». Func (A, B, C… Читать ещё >
Описание базы знаний "Родственные отношения. Поиск путей в ориентированном графе. Решение алгебраических задач (реферат, курсовая, диплом, контрольная)
— 6 ;
ФИЛИАЛ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «МЭИ»
в г. Смоленске Кафедра Вычислительной техники Лабораторная работа № 1
По курсу «Основы логического программирования»
Тема: Описание базы знаний «Родственные отношения.
Поиск путей в ориентированном графе. Решение алгебраических задач" .
листинг программа логическая граф Выполнил: Старовойтов И.П.
Группа: ВМ-11з Преподаватель: Сухачев Н.И.
Смоленск 2014
Цель работы
Отработка начальных навыков работы в среде Турбо Пролога, ознакомление с основными принципами составления простейших логических программ на примере баз знаний «Родственные отношения», поиска путей в ориентированном графе и решения алгебраических задач, имеющих легко воспринимаемую внутреннюю логику.
Задание 1
Составить семантический граф из 9−12 вершин. Вершинам графа сопоставить имена родственников, а дугам — родственные отношения. Для полученного графа разработать логическую программу, которая выдает сведения о родственных отношениях между любой парой введенных имен.
— 6 ;
Мать
Отец
Дядя
Листинг программы:
domains
name=symbol
predicates
father (name, name)
mother (name, name)
brother (name, name)
grandfather (name, name)
grandmother (name, name)
uncle (name, name)
child (name, name)
dialog
vnuk (name, name)
otnoshenie (name, name)
clauses
father (stepan, lena).
father (stepan, valya).
mother (maria, lena).
mother (maria, valya).
mother (valya, denis).
mother (valya, kostya).
mother (lena, roma).
mother (lena, stas).
uncle (stas, sasha).
grandmother (X, Y): — mother (Z, Y), mother (X, Z).
grandfather (X, Y): — mother (Z, Y), father (X, Z).
brother (X, Y): — mother (Z, X), mother (Z, Y).
child (X, Y): — mother (Y, X); father (Y, X).
vnuk (X, Y): — mother (Z, X), father (Y, Z).
vnuk (X, Y): — mother (Z, X), mother (Y, Z).
dialog: — write («Введите 1-ое имя: «), readln (X), write («Введите 2-ое имя»), readln (Y), otnoshenie (X, Y).
otnoshenie (X, Y): — grandfather (X, Y), write (X," дедушка", Y).
otnoshenie (X, Y): — grandmother (X, Y), write (X," бабушка «, Y).
otnoshenie (X, Y): — brother (X, Y), write (X," брат «, Y).
otnoshenie (X, Y): — uncle (X, Y), write (X," дядя «, Y).
otnoshenie (X, Y): — mother (X, Y), write (X," мама «, Y).
otnoshenie (X, Y): — father (X, Y), write (X," папа «, Y).
otnoshenie (X, Y): — vnuk (X, Y), write (X," внук «, Y).
otnoshenie (X, Y): — child (X, Y), write (X," сын «, Y).
Задание 2
Составить ориентированный граф без циклов из 7−10 вершин, среди которых есть и изолированные вершины. Для получения графа составить программу, определяющую, существует ли путь между любой парой его вершин.
— 6 ;
domains
name=symbol
predicates
join (name, name).
path (name, name).
dialog
goal dialog.
clauses
join (x1,x4).
join (x1,x3).
join (x2,x4).
join (x2,x3).
join (x4,x3).
join (x3,x5).
join (x3,x7).
path (x1,x3): — join (x1,x4), join (x4,x3).
path (x1,x4).
path (x1,x3).
path (x2,x4).
path (x2,x3).
path (x4,x3).
path (x3,x5).
path (x3,x7).
path (x1,x5): — join (x1,x3), join (x3,x5).
path (x1,x7): — join (x1,x3), join (x3,x7).
path (x2,x5): — join (x2,x3), join (x3,x5).
path (x2,x7): — join (x2,x3), join (x3,x7).
path (x4,x5): — join (x4,x3), join (x3,x5).
path (x4,x7): — join (x4,x3), join (x3,x7).
dialog: — write («Vvedite 1 vershiny: «), readLn (X), write («Vvedite 2 vershiny: «), readLn (Y), path (X, Y).
Результаты:
Goal: Vvedite 1 vershiny: x1
Vvedite 2 vershiny: x5
YES
Goal: Vvedite 1 vershiny: x1
Vvedite 2 vershiny: x5
NO
Задание 3
Решить квадратное уравнение вида: a*x2+b*x+c=0
— 6 ;
Листинг программы:
domains
arg=real
predicates
func (arg, arg, arg)
clauses
func (A, B, C): — D=B*B-4*A*C, D>0,Y1= (-B+sqrt (B*B-4*A*C)) / (2*A), Y2= (-B-sqrt (B*B-4*A*C)) / (2*A), write (Y1), write («,»), write (Y2).
func (A, B, C): — D=B*B-4*A*C, D=0,Y= (-B) / (2*A), write (Y).
func (A, B, C): — D=B*B-4*A*C, D<0,write («Net korney»).
Задание 4
Вычислить значение функции вида:
где f1 (x), f2 (x), f3 (x) — некоторые функции от переменной x.
Вариант 8.
Листинг программы:
domains
arg=real
predicates
func (arg)
clauses
func (X): — 0<2,write («vvedite a: «), readreal (A), write («vvedite c: «), readreal ©, Y=A*X*X+C*X+sqrt (X), write («Y=», Y).
func (X): — 2<=X, X<4,Y=cos (X) +sin (X) *sin (X) *sin (X), write («Y=», Y).
func (X): — 4<=X, write («vvedite a: «), readreal (A), Y=A*A+2*ln (X) /ln (10), write («Y=», Y).
Блок-схема
— 6 ;