Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

7344

.pdf
Скачиваний:
0
Добавлен:
23.11.2023
Размер:
1.06 Mб
Скачать

3.Пошаговый вывод, полученный с помощью разработанной экспертной си-

стемы.

Задание 6. Обратная цепочка рассуждений Разработать экспертную систему, реализующую алгоритм обратной цепочки

рассуждений на основе базы знаний, разработанной в задании 3. Предусмотреть ав-

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

факты, которые были определены пользователем;

факты, которые были выведены из правил (с указанием номеров правил);

содержимое стека правил (при пошаговом выводе);

окончательный логический вывод, полученный экспертной системой.

Отчет о выполненной работе должен содержать:

1.Правила, составляющие базу знаний;

2.Общую схему алгоритма обратной цепочки рассуждений;

3.Пошаговый вывод, полученный с помощью разработанной экспертной систе-

мой.

Раздел 2: Основные элементы и приемы программирования языка ПРОЛОГ.

Методы построения программ в языке ПРОЛОГ.

1)Дана база данных «Родители и дети»:

родитель(полина, борис), родитель(анатолий, борис), роди-

тель(анатолий, лиза), родитель(борис, катя), родитель(борис, валентина), ро-

дитель(полина, евгений).

Сформулировать вопросы на Прологе: Кто является родителем Кати? Есть ли у Лизы ребенок? Кто дети Бориса? Кто чей родитель?

2)Дана база данных «Теремок»:

живет (муха, горюха), живет(комар, пискун), живет(мышка, погрызуха), жи-

вет(лягушка, квакушка), живет(заюнок, кривоног),

живет( лиса, краса), живет(волк, хватыш), не_живет(медведь, пригнетыш).

Указать ответы на следующие вопросы:

?-живет(мышка, погрызуха). ? -живет(волк, X).

51

?-живет(Х, кривоног). ?-не_живет(М,P).

Сформулировать вопросы на Прологе: Живет ли лягушка в теремке? Какое прозвище у лисы? Кто имеет прозвище горюха? Какой следует задать вопрос,

чтобы узнать обитателей теремка (без прозвищ)?

3)База данных «Рождение и хобби друзей»:

рождение(иванова, лена, 22, июнь, 1971), рождение(петров, сергей, 25, ок-

тябрь, 1973), рождение(сидорова, оля, 1, декабрь, 1974), любит(иванова, лена,

книги), любит(иванова, лена, танцы), любит(петров, сергей, видео), лю-

бит(сидорова, оля, кино).

Сформулировать вопросы на Прологе: Кто родился в 1971 году? Кто родился в октябре? Кто любит книги? Кто любит и книги и танцы?

4)База данных «Колобок»: ушел(колобок,дедушка), ушел(колобок, бабуш-

ка), ушел(колобок, заяц), ушел(колобок, волк), ушел(колобок, медведь),

не_ушел(колобок, лиса).

Сформулировать вопросы на Прологе: Кто ушел от волка? Кто не ушел от ли-

сы? Кто ушел от волка и от бабушки? Какой следует задать вопрос, чтобы узнать всех персонажей сказки?

5)База данных «Распорядок дня»:

занятие(0, 7, сон), занятие(7, 8, завтрак), занятие(8, 13, школа), занятие(13, 14,обед), занятие(14, 19, свобода), занятие(19, 20, ужин), занятие(20, 23, от-

дых), занятие(23, 24, сон).Сформулировать вопросы на Прологе: Когда бывает обед? Что бывает между 14 и 19 часами? Когда бывает сон? (сколько будет решений?)

6)Построить базу данных «Важнейшие события Древнего Мира» на осно-

ве установленных фактов, произошедших с 31 по 6 век до нашей эры.

Каждый факт приводить в виде событие(Х,Y,Z), где X – название госу-

дарства, где произошло событие, Y – в каком веке произошло событие, Z – ка-

кое произошло событие.

В 31-м веке до нашей эры возникли первые города-государства. Единое государство в Египте образовалось в 30 веке до нашей эры. В 27 веке до нашей эры в Индии появились первые древнейшие города, а в Египте постро-

52

ена пирамида Хеопса. Первые греческие государства появились в 18 веке до нашей эры. В этом же веке в Египте произошло крупное восстание бедняков и рабов. В 15 веке до нашей эры появились первые государства в Китае. Тутмос

III правил в Египте в 15 веке до нашей эры. Греция вела троянскую войну в 13

веке до нашей эры. Вторжение борийских племен в Грецию произошло в 11

веке до нашей эры. В 8 веке до нашей эры был основан город Рим. Олимпий-

ские игры стали проводиться в Греции в 8 веке до нашей эры. В 6 веке до нашей эры в Риме была установлена республика, а в Греции произошли ре-

формы Солона. В этом же веке персы взяли Вавилон в Междуречье и завоева-

ли Египет.

1.Составить 3 запроса к этой базе данных.

2.Какие события произошли в период с 15 до 7 в. до н.э.

7) В таблице даны некоторые характеристики движения планет Солнечной системы (числовые величины округлены):

Таблица. Характеристики движения планет солнечной системы

Планета

Расстояние до

Период обращения

Средние сол-

Солнца (у.е.)

нечные сутки

 

 

 

 

Меркурий

39

88

суток

176 суток

Венера

72

225

суток

117 суток

Земля

100

365

суток

24

часа

Марс

152

687

суток

25

часов

Юпитер

520

12

лет

10

часов

Сатурн

954

29

лет

10

часов

Уран

1920

84

года

24

часа

Нептун

3010

165

лет

22

часа

Плутон

3950

247

лет

6 суток

Составить базу данных, учитывая измерение по некоторым параметрам в раз-

ных единицах.

Ответить на вопросы: Какие планеты ближе к Солнцу, чем Земля? Какие пла-

неты дальше от Солнца, чем Земля? На каких планетах солнечные сутки меньше, чем земные? На каких планетах период обращения измеряется в го-

дах?

8)Построить базу знаний «Рабочая смена»:

53

Мария работает в дневную смену. Сергей работает в вечернюю смену. Борис работает в вечернюю смену. Валентина работает в вечернюю смену. Два слу-

жащих знают друг друга, если они работают в одну смену. Определить: Знает ли Сергей Бориса? Кого знает Валентина? Кого знает Мария?

9)Даны результаты сдачи экзаменов для группы из пяти учеников:

Таблица. Успеваемость

Фамилия

Алгебра

Геометрия

История

 

 

 

 

Бобров

5

3

2

 

 

 

 

Вяткин

5

5

5

 

 

 

 

Кротов

2

3

3

 

 

 

 

Соснин

4

4

4

 

 

 

 

Вавилов

4

2

1

 

 

 

 

Построить базу знаний о результатах экзаменов, определив в ней следу-

ющие правила:

отличник – человек, у которого по всем предметам пятерки;

двоечник – есть хотя бы одна двойка;

математик – по алгебре и по геометрии учится на 4 и 5;

введите предикаты алгебра, геометрия, история для определения оценки Y для ученика X.

Получить ответы на следующие вопросы: Является ли Вяткин отличником?

Определить всех отличников. Является ли Соснин математиком? Определить всех неуспевающих по истории.

10) Сформировать базу знаний «Квартет» из следующих фактов и правил:

Мартышка играет на скрипке. Осел играет на альте. Козел играет на виолон-

чели. Мишка играет на контрабасе. Четверо музыкантов X, Y, Z и W могут образовать квартет, если один из них играет на скрипке, другой – на альте,

третий – на виолончели и четвертый – на контрабасе.

Ответить на вопросы: Кто играет на альте? На чем играет мартышка? Образу-

ют ли квартет Мартышка, Осел, Козел и Мишка? Кто из музыкантов данной базы знаний может образовать квартет?

54

11) База знаний «Воинская служба»:

возраст(борис, 18), возраст(андрей, 17), возраст(михаил, 18), возраст(анна, 8),

возраст(юлия ,17), мужчина(андрей), мужчина(борис), мужчина(михаил),

женщина(анна), женщина(юлия).

Определить правило подлежит призыву, не_подлежит_призыву.

Сформулировать вопросы: Кто подлежит призыву? Подлежит ли призыву Ан-

на?

12) База знаний «Семья»:

мать(екатерина, юлия), мать(екатерина, мария), мать(анна, екатерина),

отец(петр, юлия), отец(виктор,петр), отец(андрей, екатерина).

Дополните базу данных предикатом мужчина, женщина. Определите правила дед, бабушка, внук, внучка, тетя, дядя.

Сформулировать вопросы на Прологе:

Кто является ребенком Екатерины и Петра? Кто является дедом Юлии? Кто является бабкой Юлии?

13) Построить базу знаний и сформулировать к ней вопросы, основываясь на следующих утверждениях: Резвый – это собака. Рекс – это собака. Белка – это кошка. Быстрая – это лошадь. Резвый – черная. Белка – белая. Рекс – ры-

жая. Быстрая – белая. Домашние животные – это собака или кошка. Живот-

ные – это либо лошадь, либо домашние животные. Том владеет тем, кто со-

бака и не черного цвета. Кейт владеет тем, кто либо черного цвета, либо ло-

шадь.

14) Построить базу знаний. Муська – коричневая кошка, Стрелка – черная кошка, Мурка – рыжая кошка. Рекс, Дружок и Мухтар – собаки. Дружок – рыжая, Мухтар – белая. Все животные, которыми владеют Анатолий и Ни-

колай, имеют родословные. Анатолий владеет всеми черными и коричневы-

ми животными, а Николай владеет всеми собаками небелого цвета, которые не являются собственностью Анатолия. Иван владеет Муркой, если Николай не владеет Муськой и, если Мухтар не имеет родословной. Рекс – пятнистая собака. Определить, какие животные не имеют хозяев.

15) Составить базу знаний «Знакомства» из следующих фактов и правил:

55

Мери прелестна. Джон добрый. Джон мужественный. Джон сильный. Некто счастлив, если богатый или нравится женщинам. Мужчина нравится женщине,

если женщина нравится мужчине, и он добрый, либо мужчина добрый и силь-

ный. Мужчине нравится женщина, если она прелестна.

Сформулировать вопрос: счастлив ли Джон ? Найти мужчин, которые могут нравиться женщинам.

16)Ответьте на вопрос «Что ест моя кошка ?», если:

Птицам нравятся червяки. Кошкам нравятся рыбы. Друзья нравятся друг дру-

гу. Моя кошка мой друг. Моя кошка ест все, что ей нравится.

17)Запрограммируйте утверждения.

Число четное. Число не четное. Ни одно число не является четным и нечет-

ным одновременно. Число не четное, если следующее за ним четное. Число,

следующее за данным числом нечетное, если данное число четное, число, сле-

дующее за данным числом четное, если данное число нечетное.

.

Раздел 3. Основные конструкции языка LISP. Управляющие структуры язы-

ка LISP.

Задание 1.

Описать неименованную функцию для объединения голов трех списков в один список, исходные данные взять из Таблицы 1.2.

Задание 2.

Описать именованную функцию для создания нового списка из элементов не-

скольких исходных списков. В качестве исходных списков использовать списки Таблицы 1.2. Номера элементов списков взять в Таблице 1.3.

Таблица 1.2. Исходные списки.

Вариант

Исходные списки

 

 

1

2

3

 

 

 

 

 

1

(Y U I)

(G1 G2 G3)

(KK LL MM JJJ)

2

(G55 G66 G777)

(9 (F G) I)

(N I L T D J (II JJ))

3

((PI) V (H J K))

(R YU (H KJ KL)

(U II OO LL PP (3 4

 

 

5))

 

 

 

4

(T (U U1 U2) (U4 U6

(4 6 (7 8 9))

(78 89 90 67 45)

U8))

 

 

 

 

 

 

 

 

 

 

 

56

 

 

5

(9 (() 8 88 888))

(H (J K L) (UJN))

(C B (N M I) (T Y

 

 

 

 

 

 

U))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

(T Y D E F (NL KM

(+ 2 3)

(*(+ 6 8) (- 70 8))

 

LM) JL)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

(TYPE PRINT DEL)

(H (H J O) (UJ N))

(READ

SAVE

 

 

 

 

 

 

LOAD (TXT))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(GOAL

FUNCTOR

(2 5(5 4 6)8)

(L (K (K I)U))

 

 

8

CLAUSE

(DATA

 

 

 

 

 

 

 

BASE))

 

 

 

 

 

 

 

9

(DOG (CAT) FOX ())

(RET GET PUT

(MOV ADD (MUL

 

 

 

 

OUT IN)

DEV))

 

 

 

 

 

 

 

 

10

(FIR SED (1 2 3) (5) ())

(H J U K (L M N) (D E

(4 5(6 7))

 

 

 

 

 

L))

 

 

 

 

 

 

 

 

 

 

 

 

11

(PRIM SD

FLAG ()

(1 56 98 52)

(T 2 3 4 Y H)

 

 

(GHG))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

(H G (U J) (T R))

(2 1 (+ 4 5))

(TYPE

CHAR

 

 

 

 

 

 

REAL (H G))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вариант

Исходные списки

 

 

 

 

 

 

 

1

 

 

2

 

3

 

 

 

 

 

 

 

 

 

 

 

13

(REM FFG HHJ (H )J G

(2 34 56 78 (7 8))

(UN Y LOOP)

 

 

D)

 

 

 

 

 

 

 

14

(T (HJ (JH KL)) K)

(67 54 (8 9 0)(4 6))

(K F G H)

 

 

15

(3 (3 4 5 Y U)((T Y))

(G H (6 7 8) 8 9 0 7 6)

((5 T 7 Y H) U)

 

 

 

 

 

 

 

 

 

16

(Z X C S A D F)

((R)(30)(3) 23))

(U I 8 9 6 5 4 3 (1 2

 

 

 

 

 

 

 

3))

 

 

 

 

 

 

 

 

 

 

 

17

(V B N J H )

 

((Y U I)(H J K) (8) 78)

(df FG HJ K L (O 0 9))

 

 

 

 

 

 

 

 

 

18

(D F G H J K)

(1 2 3 4 5 6 (4 5) 4)

(ER RT TY 5 6 6 5)

 

19

(H G (2 3) 8 7 (T R))

(2 1(+ 4 5))

(TY PE CH AR RE

 

 

 

 

 

 

 

AL (H G))

 

 

 

 

 

 

 

 

 

 

20

(RM F G H J (J G D))

(2 3 4 5 6 (7 8))

(U N Y L O O P)

 

21

(T HJ JH K L (K)

(6 7 5 4 (8 9 0)(4 6))

(K 2 T F G H)

 

 

 

 

 

 

 

 

 

 

 

22

(3 3 4 5 Y U)

 

(G (6 8) 8 9 7 6)

((5) T () 7 Y H U)

 

23

(Z 2 A D F)

 

((R) (30) 3 4 23)

(U I 8 9 6 5 4 3 (1 2

 

 

 

 

 

 

 

3))

 

 

24

(V B N J H )

 

(Y U I H (J K) (8) 78)

(df F K L (O 0 9))

 

 

 

 

 

 

 

 

 

 

25

(DF GH JK)

 

(1 2 5 6 (4 5) 4)

(ER RT TY 5 6 6 5)

Таблица 1.3. Номера элементов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вариант

 

Список 1

 

Список 2

 

Список 3

 

 

1

 

2

 

 

2

 

3

 

 

 

 

 

 

57

 

 

 

2

3

2

6

 

 

 

 

3

1

3

6

4

2

3

4

5

2

3

3

 

 

 

 

6

6

2

2

7

3

2

3

8

4

3

2

9

3

4

3

10

4

4

3

11

5

3

2

12

3

3

3

13

4

4

2

 

 

 

 

14

2

3

3

15

2

3

2

16

5

4

7

17

3

4

6

18

5

3

2

19

3

3

3

20

4

6

2

21

2

6

3

 

 

 

 

22

2

3

2

23

5

4

7

24

3

4

6

25

6

6

6

Задание 3.

Описать именованную функцию в соответствии с вариантом индивиду-

ального задания в Таблице 1.4.

Таблица 1.4. Варианты индивидуального задания.

Вариант.

Задача.

 

 

1.

Есть два списка. Если первый элемент списка есть натуральное

 

число, то возвратить второй список, иначе возвратить список из

 

головы второго и хвоста первого.

2.

Написать функцию, которая возвращает квадратный корень из

 

аргумента, если аргумент является числом, последний элемент

 

аргумента-списка, если аргумент – список, аргумент – иначе.

3.

Есть пять чисел. Написать функцию, формирующую список из

 

максимального и минимального по модулю чисел, если мини-

 

мальное и максимальное числа – целые, среднее арифметиче-

 

ское минимального и максимального чисел - иначе.

4.

Написать функцию, которая для аргумента-числа проверяет, явля-

 

ется ли оно степенью двойки.

 

58

5.

Написать функцию, которая для заданных координат X1,Y1 и

 

X2,Y2 возвращает расстояние между ними. Координаты могут

 

иметь отрицательное значение.

6.

Написать функцию, которая по заданному вещественному числу

 

формирует список из трех элементов. Первый элемент – знак

 

числа, второй – модуль числа, третий – ближайшее к нему целое

 

число.

7.

Написать функцию, которая для трех аргументов-чисел прове-

 

ряет, является ли третье число результатом возведения в степень

 

первого числа с показателем, равным второму числу.

8.

Есть список. Найти сумму первого, третьего и седьмого элемен-

 

тов списка, если указанные элементы – числа, возвратить по-

 

следний элемент списка – иначе.

9.

Написать функцию вычисления дискриминанта квадратного

 

уравнения.

10.

Написать функцию, которая для аргумента-списка формирует

 

список-результат по правилу : если первый и последний элемен-

 

ты списка-аргумента есть четные натуральные числа, то вклю-

 

чить в список-результат первым элементом – квадрат последне-

 

го элемента исходного списка, вторым – четвертую степень пер-

 

вого; в противном случае сформировать список из первого и по-

 

следнего элементов.

11.

Написать функцию, которая для аргумента-списка формирует

 

список-результат по правилу : если первый и последний элемен-

 

ты списка-аргумента –символы, то сформировать список из пер-

 

вого и последнего элементов, в противном случае возвратить

 

исходный список, из которого удален второй элемент.

12.

Есть два списка. Написать функцию формирующую список из

 

трех подсписков. Первый подсписок содержит голову первого

 

списка и третий элемент второго. Второй подсписок содержит

 

второй элемент второго списка и последний элемент первого.

13.

Есть списки, к примеру, '(1 2 3 4 5) '(7 6 5 7 ). Если произведение

 

первых элементов исходных списков есть положительное число,

 

то объединить в результирующий список последние элементы. В

 

противном случае построить список из последнего элемента

 

первого списка и хвоста второго.

14.

Есть три числа. Построить список из кубов этих чисел, если все

 

три числа – нечетные, возвратить сумму чисел – иначе.

15.

Есть список и некоторый объект. Написать функцию, возвраща-

 

ющую новый список, в котором объект замещает первый

 

элемент списка, если первый элемент списка и объект являются

 

атомами, последний элемент списка - иначе.

16.

Дан список чисел. Написать функцию, возвращающую в случае

 

первого четного элемента исходный список, в котором первые

 

три числа возведены в квадрат, иначе - исходный список, в ко-

 

тором первые три числа возведены в куб.

 

59

17.

Даны два произвольных лисповских объекта. Написать функ-

 

цию, которая возвращает список из суммы и произведения объ-

 

ектов, если оба объекта – числа, список из результатов проверки

 

объектов на атомарность – иначе.

18.

Дан список. Написать функцию, которая в случае атомарности

 

первого и последнего элементов списка возвращает список из

 

указанных элементов, результат проверки третьего элемента на

 

принадлежность к списочным объектам – иначе.

19.

Дан список lst. Написать функцию, которая для случая, когда

 

первый элемент lst является списком, возвращает список из по-

 

следнего элемента lst в качестве головы и первого элемента lst в

 

качестве хвоста, список lst, из которого удален второй элемент –

 

иначе.

 

20.

Написать функцию, которая возвращает квадрат аргументачет-

 

ного

числа, натуральный логарифм аргумента-нечетного

 

числа и результат проверки аргумента на принадлежность к спи-

 

сочному типу – иначе.

21.

Есть список lst, описывающий вызов арифметической функции.

 

Написать функцию, которая а случае четности результата вы-

 

числения lst производит его проверку на положительность, а в

 

противном случае выдает сам lst. Вычисление lst производить с

 

помощью встроенной функции eval.

22.

Есть две лисповские формы: expr1 и expr2. Написать функцию,

 

которая сравнивает результаты вычисления форм и в случае эк-

 

вивалентности результатов вычисления формирует список из

 

этих форм. В противном случае формируется список из резуль-

 

татов вычисления форм. Вычисление форм производить с по-

 

мощью встроенной функции eval.

23.

Написать функцию, которая по заданному целому числу форми-

 

рует список двух элементов. Первый элемент списка – это сим-

 

вольный атом, обозначающий знак числа, второй элемент – ос-

 

таток от деления числа на 2.

24.

Написать функцию, которая для заданных списков lst1 и lst2 воз-

 

вращает список, содержащий их первые и последние элементы.

 

Порядок следования элементов в результирующем списке опре-

 

деляется вторым элементом lst2 : если это число, то вначале

 

идут первый и последний элементы lst1, иначе – первый и по-

 

следний элементы lst2.

25.

Написать функцию, которая по двум числам формирует список

 

из трех элементов. Первый элемент – это результат целочислен-

 

ного деления чисел, второй есть результат умножения чисел,

 

третий элемент есть символьный атом, обозначающий знак чис-

 

ла.

 

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]