Учебная работа. Курсовая работа: Интеллектуальные информационные системы 6

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Интеллектуальные информационные системы 6

Министерство высшего образования и науки РФ (Российская Федерация — Муниципального образовательного учреждения

Высшего проф образования

Тихоокеанского муниципального института

Институт экономики и управления

Специальность «Прикладная информатика в экономике»

Кафедра «Финансовая продажная девка империализма»

Курсовая работа по дисциплине:

«Умственные информационные системы»

Выполнила: Махонина Анна

Владимировна

Специальность ПИЭ З/У

№ зач. книги070440328

Проверила: Серебрикова Татьяна

Александровна

Хабаровск 2009 г.

Задание на курсовую работу

РАБОТА С СИСТЕМОЙ Пролог-Д


Ва- риант
Тема1
Тема2
Тема2
Тема2
Тема2

Факты и правила.



Математика и остальные интегрированные предикаты

Рекурсия



Графические способности системы

Обработка списков




№ задания
№ задания
№ задания
№ задания
№ задания

8
1.1.2., 2.1.2
2.2.4., 2.2.5
2.3.2., 2.3.1.
2.4.1
2.5.4.

1.1.2. Опишите на языке ЛОГИКИ ПЕРВОГО ПОРЯДКА характеристики дела равенство.

2.1.2. Опишите на языке Пролог-Д состав собственной семьи.

2.2.4. На языке Пролог-Д напишите БАЗУ ЗНАНИЙ, в какой определяется функция, данная соотношением:

ìx, если x <-1,

F(x)= í x+1, если -1<x<1,

îx, если x >1.

2.2.5. Какие трудности могут появиться в базе познаний о мамах, если у 2-ух мам малыши будут тезками? Напишите программку на Прологе-Д, которая находит имя матери мальчугана Петя второго по порядку в базе познаний. Его маму зовут Оля, а не Саша.

2.3.2. Написать на языке Пролог-Д базу познаний, описывающую ВЫЧИСЛЕНИЕ СУММЫ ЧИСЕЛ НАТУРАЛЬНОГО РЯДА.

2.3.1. Написать на языке Пролог-Д базу познаний, описывающую вычисление ФАКТОРИАЛА.

2.4.1. Напишите на языке Пролог-Д базу познаний, описывающую прямоугольный треугольник.

2.5.4. Напишите базу познаний, описывающую удаление n-oго элемента перечня.

Управляющий:

(подпись)

Реферат

Объяснительная записка к курсовой работе содержит 34 листов формата А4, 1 набросок, 1 таблица, 6 использованных источников.

база ЗНАНИЙ — центральная часть экспертной системы. Она содержит факты, правила и эвристики, представляющие экспертные познания о предметной области. Можно представлять базу познаний состоящей из фактических познаний и познаний, которые употребляются для вывода остальных познаний.

ИСКУСТВЕННЫЙ ИНТЕЛЕКТ, ЭКСПЕРНЫЕ системы, ТЕРМ, ПРЕДИКАТ, ФОРМУЛА, ПРЕДЛОЖЕНИЕ, ВОПРОС, ДАННЫЕ, база ДАННЫХ, ФАКТЫ И ПРАВИЛА, АРИФМЕТИКА И ДРУГИЕ ВСТРОЕННЫЕ ПРЕДИКАТЫ, РЕКУРСИЯ, ГРАФИЧЕСКИЕ способности СИСТЕМЫ ПРОЛОГ-Д, ОБРАБОТКА СПИСКОВ

Объектом исследования курсовой работе являются базы познаний, которые могут применяться в экономике. Цель работы – закрепление познаний, приобретенных в процессе исследования дисциплины «Умственные информационные системы», также формирование целостной системы этих познаний о предмете; практическая реализация баз познаний при помощи языка логического программирования ПРОЛОГ-Д; раскрытие связи всех понятий и их внутренней логики; привитие способностей формирования задач логического программирования; расширение знаний о умственных информационных системах и значимость их внедрения в экономике.

В процессе выполнения курсовой работы были рассмотрены: способы составления баз познаний с внедрением фактов и правил, освоение графических способностей языка Пролог, применение математики и остальных интегрированных предикатов, составление рекурсивных алгоритмов, работа со перечнями.

Курсовая работа выполнена с внедрением особых программ PROLOG-D и MicrosoftWord.

СОДЕРЖАНИЕ

Введение………………………………………………………………………………………………….5

1. Предназначение и область внедрения программки Пролог-Д………………6

2.Логические базы работы системы Пролог-Д. ……………………………7

3. Построение базы познаний……………………………………………………………..12

4. Математика и остальные интегрированные предикаты в Прологе-Д………….. 15

5. Рекурсия…………………………………………………………………………………….19

6. Графические способности системы Пролог-Д …………………………….23

7. Обработка списков……………………………………………………………………..27

8. Задания…………………………………………………………………………………….

Перечень применяемой литературы………………………………………….

Введение

Умственная система
— это система искусственного ума, созданная для решения плохо формализованных и слабо структурированных задач в определенных проблемных областях, на базе заложенных в ней познаний специалистов-экспертов.

По определению Комитета по Экспертным Системам Английского Компьютерного Общества, под экспертной системой
понимается «воплощение в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) компонента опыта профессионала, основанного на знании, в таковой форме, что машинка может отдать умственный совет
либо принять умственное решение
относительно обрабатываемой функции». Предпочтительная доборная черта (которую почти все считают главной) — способность системы по просьбе разъяснить ход собственных рассуждений понятным для спрашивающего образом.

Итак, экспертная система способна производить советы, какие бы отдал эксперт-человек, запрашивая по мере необходимости доп информацию. Экспертные системы могут работать на том же уровне что и специалисты, а в неких вариантах они лучше, поэтому что в нее вложен коллективный опыт их создателей.

В истинное время ЭС внедряются в разные виды людской деятель, где внедрение четких математических способов и моделей проблемно либо совершенно нереально. К ним относятся: медицина, обучение (педагогический процесс, в результате которого учащиеся под руководством учителя овладевают знаниями, умениями и навыками), поддержка принятия решений и управление в сложных ситуациях, разные деловые приложения и т. д.

Предметом теории экспертных систем служат способы и приемы конструирования систем, компетентных в некой узкоспециальной области. Эта компетентность состоит из познания определенной области, осознания задач из данной для нас области и из умения решать некие такие задачки. Познания, относящиеся к хоть какой специальности, обычно есть в 2-ух видах: общедоступные и личные. Общедоступные познания — это факты, определения и теории, которые обычно изложены в учебниках и справочниках по данной области. Но, обычно, компетентность значит нечто большее, чем владение таковыми общедоступными сведениями. Спецы почти всегда владеют ещё и персональными познаниями, которые отсутствуют в размещенной литературе. Эти личные познания в значимой степени состоят из эмпирических правил — эвристик, которые разрешают профессионалам по мере необходимости выдвигать разумные догадки, отыскивать многообещающие подходы к задачкам и отлично работать при зашумленных либо неполных данных. Центральной задачей при построении экспертных систем является выявление и проигрывание таковых познаний.

1.Н
азначение и область внедрения программки Пролог-Д.

Смена поколений вычислительной техники приводится к очередной научно технической революции. С возникновением новейшего поколения ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) не только лишь стал решаться принципно новейший класс задач во всех отраслях науки и техники, да и значительно расширяются способности при решении прежних обычных задач на новеньком, наиболее высококачественном, уровне.

Наиболее высочайший высококачественный уровень в решении задач подразумевает обеспечение нужной и достаточной умственной поддержкой. Интеллектуализация информационно-вычислительных систем это внедрение не только лишь новейшего поколения инструментальных средств, да и новейшего поколения математического, алгоритмического и программного обеспечения для решения сложных задач.

Искусственный ум (ИИ) – это программная система, имитирующая на компе мышление человека. Для сотворения таковой системы нужно учить процесс мышления человека, решающего определенные задачки либо принимающего решения в определенной области, выделить главные шаги этого процесса и создать программные средства, воспроизводящие их на компе.

Умственная система – это информационно-вычислительная система с умственной поддержкой при решении задач без роли оператора.

Система искусственного ума, сделанная для решения задач в определенной проблемной области, именуется экспертной системой. Источником познаний для заполнения экспертных систем служат специалисты, работающие в соответственной предметной области.

В течение крайних десятилетий в рамках исследовательских работ по искусственному уму (ИИ) сформировалось новое самостоятельное направление – экспертные системы (ЭС), либо инженерия познаний (ИЗ).

Экспертная система (ЭС)- это система искусственного ума (умственная система), созданная для решения плохо формализованных и слабо структурированных задач в определенных проблемных областях, на базе заложенных в ней познаний специалистов-экспертов.

В задачку этого направления входят исследование и разработка программ, использующих познания и процедуры вывода для решения задач, являющихся тяжелыми для людей-экспертов. В отличие от специализированных систем ИИ экспертные системы могут быть отнесены к системам ИИ общего предназначения – системам, которые не только лишь исполняют данные процедуры, но на базе метапроцедур поиска генерируют и употребляют процедуры решения новейших определенных задач.

2.
Логические базы работы системы Пролог-Д.

В крайнее время к разработке экспертных систем все почаще стал привлекаться спец языка искусственного ума Пролог. Свое заглавие Пролог получи от сокращения «Программирование логики». Математической основой языка программирования Пролог являются исчисления предикатов в большей степени первого порядка, способ резолюции, теория рекурсивных функций. В истинное время сотворено огромное число разных по эффективности и мощности Пролог-систем, любая из которых дает собственный синтаксис языка и собственный набор интегрированных предикатов.

Математическая работы с системой Пролог-Д.

Интерпритатор языка Пролог предназначен для проведения практикума на индивидуальных компах с базами познаний, экспертными системами и исследованием принципов логического вывода в системах искусственного ума.

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

Описание познаний может быть выполнить при помощи совокупы дискретных объектов и отношений меж ними. Объекты, если их сопоставить с решаемой задачей, образуют ее предметную область. к примеру, если задачка состоит в описании схожих отношений, то предметная область-множество людей, а если задачка вычислительная, то предметной областью будет огромное количество целых чисел.

Объекты, при описании их средствами математической логики, обязаны иметь имена. За определением имен следует описание соотношений меж объектами и выражение параметров этих отношений. Построение решения задачки делается на базе логического вывода, манипуляцией предложениями, описывающими данную задачку.

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

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

Терм — это переменные, константы и функции вида

f(t1
,t2
,…,tn
),(t1
,t2
,…,tn
),(2.1)

где каждое ti
– терм;

f — n-арный многофункциональный знак либо функтор.

Арностью именуют число аргументов. Изюминка функции (2.1) в том, что она воспринимает области в элемент области.

Дела, определяемые над объектами, различаются от функций. Отношение описывает совокупа частей из предметной области и представляет собой отображение из D n
в огромное количество {ИСТИНА, ЛОЖЬ}. к примеру, отношение мать(x, y) описывает совокупа пар (x, y), таковых, что элементы огромного количества людей x и y находятся в отношении родства мать. Огромное количество пар (x, y) это огромное количество матерей и малышей. В математической логике отношениям даются имена, именуемые предикатными знаками, а сами дела именуются предикатами в крайнем примере предикатный символ-мать.

Дадим наиболее серьезное понятие предиката.

Предикат — это выражение вида

P(t1
,t2
,…,tm
), (2.2)

где каждое ti
– терм;

P — m-арный предикатный знак.

Формально предикат (2.2) можно читать или как «m — ка (t1
,t2
,…,tm
) принадлежит отношению Р», или как выражение Р справедливо для m-ки (t1
,t2
,…,tm
).

В логике имеется набор связок.

Пример

&, , ¬, <- , <->, которые читаются как «и», «либо», «не», «если», «и тогда лишь тогда».

Связки можно применить для образования логических формул, объединяя предикаты и остальные формулы.

Пример

нужно отметить, что логические связки: &, , ¬, <- , <-> могут быть выражены друг через друга при помощи последующих соотношений, именуемых формулами сокращения

(AB) значит ¬(A<-B),

(A/B) значит (¬A)<-B,

(A<->B) значит (A<-B)(B<-A),

где А и В — сущность формулы.

Наряду со связками есть кванторы общности () и существования (). Кванторы определяют пределы конфигурации переменных. Формула, стоящая опосля квантора именуется областью деяния этого квантора. Для кванторов тоже есть формулы сокращения

xА значит (¬(x(¬А))), (2.6)

где х — переменная;

А- формула.

Пример

Приведем примеры формул

мать(x, y)мать(y, z);

F1F2F3¬F4, если F1,F2,F3,F4 — формулы.

Q(F1,F2), если F1 и F2 — формулы, а Q — квантор существования () либо общности ().

Формула
— это или предикат, или выражение, составленное из формул при помощи логических связок и кванторов.

Предложение
— это формула, в какой любая переменная находится в области деяния квантора общности.

В целях краткости записи предложений, наружные кванторы общности в записи предложения будут опускаться.

Предложения, построенные в согласовании с введенными выше правилами, образуют язык логики первого порядка. В этом языке термы представляют собой объекты, а предикаты дела меж объектами. При помощи этого языка можно обрисовать все задачки, решаемые на ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач). На базе языка логики первого порядка можно выстроить разные языки логического программирования, различающиеся по правилам формирования предложения. Посреди огромного количества различных предложений особенное предложения именуются дизъюнктами. Дизъюнкт — это предложение вида

A1
A2
…Ak
B1
B2
…Bn
, (2.7)

где A1
,A2
,…,Ak
,B1
,B2
,…,Bn
— предикаты либо литеры;

 — связка «и»;

<- — связка «если».

Особенное

Дизъюнктом Хорна именуется таковой дизъюнкт, у которого k равно 0 либо k равно 1. При k равно n равно 0 выходит пустой дизъюнкт, обозначаемый эмблемой Л.

Если k равно 0, то из формулы (2.7) выходит дизъюнкт

B1
B2
…Bn
, (2.8)

Этот дизъюнкт именуется вопросцем.

Посреди огромного количества всех дизъюнктов необыкновенную роль играют те, для которых k равно 1. Если при всем этом к тому же n равно 0, то таковой дизъюнкт именуется фактом A1
.

Если же n больше0, дизъюнкт именуется правилом

A1
<-B1
B2
…Bn
, (2.9)

где A – голова;

B1
B2
…Bn
, — цели, образующие тело правила.

Нужно отметить свойство формул (2.7). Если пользоваться, приведенными выше формулами сокращения, связывающими логические связки, то оказывается, что хоть какой дизъюнкт можно конвертировать к таковой формуле, что в записи ее будут применены лишь связки (либо),(не).

Базой познаний (БЗ) будет называться всякое (непустое) огромное количество фактов и правил.

Записанная в базе познаний информация представлена в некой формально — логической системе и создана для исследования инфы средством внедрения определенного процесса рассуждений, базирующегося на логическом выводе. Эти рассуждения основаны на понятии логического следствия. Понятно, что логическое следствие из данной совокупы допущений либо догадок поистине, если истинны эти догадки. Но одна и та же формула быть может настоящей либо неверной зависимо от ее содержательного значения. К примеру, логическая формула

(x>y)<-(|x|>|y|), (2.10)

где символ x>y — значит отношение «x больше y»;

символ |x| — абсолютную величину x, истинна, если x и y принадлежат огромному количеству положительных чисел и неверна, если x и y принадлежат огромному количеству отрицательных чисел.

В математической логике существует понятие интерпретации, а в различных интерпретациях одна и та же формула может принимать различные значения.

Для интерпретации огромного количества предложений S выбирается огромное количество объектов D, называемое областью интерпретации.

Интерпретация огромного количества предложений S над D состоит из последующих 3-х соответствий.

Пример

а) каждой константе (числовой либо литеральной) ставится в соответствие некий элемент из D.

б) любому n-арному функтору из S сопоставляется отображение n-ки из Dn
в D.

в) любому n-арному предикатному символу из S сопоставляется отображение n-ки из области Dn
в огромное количество {ИСТИНА, ЛОЖЬ}.

База познаний и последующий за ней вопросец представляют собой программку на Прологе-Д.

Независимо от решаемой задачки программка постоянно производится по одной и той же схеме, определяемой способом резолюции — тем способом поиска решения, который употребляет система логического программирования Пролог.

Поиск решения осуществляется последующим образом. Посреди всех частей огромного количества предложений S отыскивается 1-ое предложение, которого имеет такое же имя, как и 1-ая цель в данном вопросце.

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

Так система находит 1-ое решение. Отличительной индивидуальностью системы Пролог-Д будет то, что она автоматом ищет все вероятные решения.

Пример

Разглядим программки логических основ в Прологе с внедрением формул сокращения, написать базу данных о городках стран, используя связки «не» и «либо».

Представим базу познаний, она содержат информацию о заглавиях стран и городках, которые принадлежат сиим государствам. Используя связки «не» и «либо» запишем два правила (строчка 5 и 6), характеризующие принадлежность страны к российскому либо зарубежному и зададим вопросец, используя связку «либо», к базе

?ИЛИ(русское(x),зарубежное(x));

Таковым образом, при запуске Пролога будет найден русский либо зарубежный город, при этом чтоб он принадлежал континенту Наша родина.

3.
Построение базы познаний.

Факты и правила.

Индивидуальностью языка Пролог-Д, отличающей его от остальных языков, применяемых для работы на ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), является его применение не только лишь для программирования, но, основным образом, для описания данных и правил их обработки. Построение базы познаний на Пролог-Д значит выявление огромного количества исследуемых объектов и связей меж ними, совокупа которых обрисовывает явление либо процесс.

Другими словами, создание информационно-логической модели описываемого на языке Пролог-Д этого явления либо процесса. Основное предназначение данного раздела состоит в описании методики разработки баз познаний, на примерах довольно обычных, взятых из классической практики. 1-ый шаг в направлении построения базы познаний состоит в выявлении объектов и соотношений меж ними, отвечающих на вопросец: «Что дано?». Такую информацию целенаправлено представлять в виде совокупы фактов. Традиционным примером фактографии служит англо-русский словарь. Записанный средствами Пролога-Д он смотрится так:

русангл(мать, mammy);

русангл(небо, sky);

русангл(солнце, sun);

русангл(мальчишка, boy);

русангл(круг, ring);

русангл(вокруг, arоund);,

и так дальше. Последовательность фактов можно и продолжить, но уже на данный момент довольно слов, чтоб перевести на британский известную детскую песню. Подобные дела представляют собой грамматическую систему Пролога-Д, именуемую фактом
. Факт задается в виде функционалa: имя, и совокупа аргументов. В данном примере «русангл» — это имя факта оно описывает информацию, записываемую в нем. Российские и английские слова: мать, mammy, небо, sky, солнце, sky, мальчишка, boy представляют собой аргументы факта, определяющего взаимно однозначное соответствие меж русскими и английскими словами. Необязательно, чтоб факт имел два аргумента. к примеру, факт: мужик(Николай); имеет один аргумент — Николай и имя — мужик, а факт родился(Петров,Иван,10,сентябрь,1979); имеет 5 аргументов — Петров, Иван, 10, сентябрь, 1979 и имя родился. Но, исходя из убеждений синтаксиса языка Пролог-Д, нужен хотя бы один аргумент. Если факт в базе познаний имеет имя и не имеет аргументов, то система выдаст сообщение о синтаксической ошибке. Приведенный пример, на самом деле дела, уже является базой познаний на языке Пролог-Д. К данной для нас базе познаний можно задавать разные вопросцы:

?русангл(y,x); — если нужно выяснить, все слова, хранящиеся в базе познаний,

?русангл(мать, x); — если нужно выяснить как по английски мать?

?русангл(x, sky); — если нужно выяснить, что значит слово sky?

Для описания всего огромного количества инфы, совершенно говоря, довольно фактов. Но если может быть задать некие связи и дела меж объектами, то удается уменьшить число фактов, и тем создать базу познаний наиболее лаконичной. Связи и дела меж объектами задаются правилами
. При построении правил выделяется совокупа отношений, отвечающих на вопросец «Что понятно?».

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

к примеру, в задачке о построении схожих отношений можно найти последующие правила:

Глубина процесса декомпозиции в данном случае автоматом устанавливается. Она определена понятиями «мать«, «папа».

процесс декомпозиции не непременно однозначен. Даже обычный пример о родственниках допускает и иную трактовку. Если ввести правило, определяющее понятие «родитель (один из ближайших родственников человека, составляющий основу семьи)»

родитель (один из ближайших родственников человека, составляющий основу семьи)(x,y)<-мать(x,y);

родитель (один из ближайших родственников человека, составляющий основу семьи)(x,y)<-папа(x,y);,

то бабушку и дедушку можно найти проще:

бабушка(x,y)<-мать(x,z),родитель (один из ближайших родственников человека, составляющий основу семьи)(z,y);

дедушка(x,y)<-папа(x,z),родитель (один из ближайших родственников человека, составляющий основу семьи)(z,y);.

Если, к лишь, что записанным правилам добавить несколько фактов, определяющих мам и пап, то выходит база познаний, которая именуется «семья»:

мать(Саша,Петя);

папа(Сережа,Петя);

мать(Оля,Саша);

папа(Коля,Саша);

мать(Люда,Сережа);

папа(Петя,Сережа);

родитель (один из ближайших родственников человека, составляющий основу семьи)(x,y)<-мать(x,y);

родитель (один из ближайших родственников человека, составляющий основу семьи)(x,y)<-папа(x,y);

бабушка(x,y)<-мама(x,z),родитель (один из ближайших родственников человека, составляющий основу семьи)(z,y);

дедушка(x,y)<-папа(x,z),родитель (один из ближайших родственников человека, составляющий основу семьи)(z,y);.

В данном примере для определения понятия родитель (один из ближайших родственников человека, составляющий основу семьи)(x,y) потребовалось наиболее 1-го правила. На самом деле дела тут применено недетерминированное ветвление, дающее другое определение этого дела и применяемое системой опосля того, как было использовано 1-ое отношение. Следует выделить, что в определении участвуют оба правила. В общем случае число правил не ограничено.

4.
Математика и остальные интегрированные предикаты в Прологе-Д.

системы логического программирования, к числу которых относится и Пролог-Д, не предусмотрены для вычислений. Обычный для Пролога-Д подход при выполнении арифметических действий описан в упражнении 5 из предшествующего раздела. Но для определения таковым образом всех математических действий памяти компа будет недостаточно. Потому классические деяния, связанные с выполнением арифметических операций осуществляются средством особых интегрированных предикатов. В системе Пролог-Д для выполнения арифметических действий предусмотрен один интегрированный арифметический предикат: УМНОЖЕНИЕ(Арг1,Арг2,Арг3,Арг4) Интегрированный предикат УМНОЖЕНИЕ имеет четыре аргумента: целых, переменных, конкретизированных целыми, не конкретизированных переменных, допускает обратимость всех аргументов, но, он быть может применен лишь в качестве цели в предложении. Предикат УМНОЖЕНИЕ предугадывает реализацию формулы: Арг1*Арг2+Арг3=Арг4.

Предикат предугадывает обратимость аргументов и вполне покрывает арифметические операции в области целых чисел, предусмотренных синтаксисом входного языка ( -32767 <число> 32767). Последующая база познаний на языке Пролог-Д указывает, что при помощи данного предиката можно обрисовать любые арифметические операции:

СЛОЖЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(1,X,Y,Z);

ВЫЧИТАНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(1,X,Z,Y);

УМНОЖЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(X,Y,0,Z);

ДЕЛЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(Y,Z,0,X);

Во всех 4 вариантах X,Y — сущность операнды операций, а Z — итог. к примеру, СЛОЖЕНИЕ(X,Y,Z) реализует арифметическую операцию сложение: Z=X+Y. Наиболее подробное описание синтаксиса встроенного предиката УМНОЖЕНИЕ приведено в описании синтаксиса. Предикат УМНОЖЕНИЕ дозволяет обрисовывать вычислительные задачки.

Пример 1. На Прологе-Д нужно обрисовать вычисление площади прямоугольника, имеющего стороны длиной a и b. Известна формула определяющая площадь прямоугольника Sпр. Sпр=a*b.

Предикат, который будет выполнен, если вычислена площадь прямоугольника должен иметь три аргумента-Длины сторон и величину площади. Имя предиката обязано отражать его предназначение, возможно этому аспекту удовлетворит имя площадь:

УМНОЖЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(X,Y,0,Z);

площадь(a,b,S)<-УМНОЖЕНИЕ(a,b,S);.

1-ый предикат УМНОЖЕНИЕ потребовалось найти для наглядности записи. нужно отметить, что предикат площадь обратим, это значит, что, пользуясь сиим описанием можно вычислить не только лишь площадь по данным сторонам, да и всякую (одну) сторону по иной стороне и площади. К базе познаний можно задать вопросцы:

?площадь(10,20,S);

ответ системы Пролог-Д: S=200,

?площадь(a,20,100);

ответ системы Пролог-Д: a = 5. Наиболее непростая задачка представлена в нижеследующем примере.

Пример 2. На Прологе-Д нужно обрисовать вычисление размера параллелепипеда высотой h, в основании которого прямоугольник, имеющий стороны длиной a и b. Известна формула определяющая размера параллелепипеда Vпар. Vпар=a*b*h. Предикат, который будет выполнен, если будет вычислен размер параллелепипеда должен иметь четыре аргумента — длины сторон a, b, высоту h и величину размера. имя предиката обязано отражать его предназначение, возможно, этому аспекту удовлетворит имя размер:

УМНОЖЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(X,Y,0,Z);

размер(a,b,h,V)<-УМНОЖЕНИЕ(a,b,S), УМНОЖЕНИЕ (S, h, V);

Как и до этого предикат размер обратим, это значит, что, используя это описание можно вычислить, не только лишь размер по данным сторонам и высоте, да и всякую (одну) сторону либо высоту по высоте, стороне и размеру. В качестве кандидатуры, можно по другому записать размер, если пользоваться формулой:

Vпар=Sосн*h.

Эту базу познаний предлагается написать без помощи других.

К базе познаний можно задать вопросцы:

?размер(10,20,5,V);

ответ системы Пролог-Д: V=200. Вместе с арифметическим предикатом есть два предиката больше и НЕ. Интегрированный предикат БОЛЬШЕ(Арг1,Арг2) предназначен для сопоставления 2-ух целых либо переменных. Он имеет два аргумента: целых либо переменных, конкретизированных целыми. Оба аргумента к моменту выполнения должны быть определены. Если эти требования не выполнены, то покажется сообщение о ошибке: «Функция не быть может выполнена.». Предикат выполнен, если Арг1 > Арг2, по другому — не выполнен. Невзирая на то, что предикат больше один, его довольно для описания всех вероятных предикатов для сопоставления числовой инфы: равенство — РАВНО; меньше — МЕНЬШЕ; меньше и равно — мир и так дальше. Это указывает база познаний, приведенная ниже:

РАВНО(X,X);

МЕНЬШЕ(X,Y)<-больше(Y,X);

МИР(X,Y)<-НЕ(БОЛЬШЕ(X,Y);

В крайнем предложении применен интегрированный предикат НЕ, его синтаксис: НЕ(Арг1); Этот интегрированный предикат имеет один аргумент, он непременно должен быть предикатом. Предикат НЕ выполнен и тогда лишь тогда, когда предикат — аргумент не выполнен. А сейчас легкий пример, иллюстрирующий применение больше и НЕ.

Пример 3. Опишите на языке Пролог-Д вычисление функции Хевисайда, определяемую формулой:

ì 0, если x<0;

h(x) = í 0, если x=0;

î 1, если x>0.

база познаний обязана содержать описание предиката меньше и равно, который выше уже был описаны, предикат, выполняющийся при вычислении функции Хевисайда, будет называться ХЕВИСАЙД. Этот предикат будет иметь два аргумента, 1-ый это аргумент функции, а 2-ой ее значение. Предикат ХЕВИСАЙД определяется через два других описания для всех значений x

мир(X,Y)<-НЕ(БОЛЬШЕ(X,Y);

ХЕВИСАЙД(X,0)<-МИР(X,0);

ХЕВИСАЙД(X,1)<-больше(X,0);

К данной для нас базе познаний можно задать разные вопросцы.

?ХЕВИСАЙД(20,X);

ответ системы Пролог-Д: X=1. И, в конце концов, крайний интегрированный предикат — это предикат — «отсечение», созданный для управления логическим выводом. Этот предикат будет нужно для решения последующих заморочек:

1. Ограничение количества отысканных решений.

2. Нахождение некого особого решения задачки.

3. Ограничение размера поиска, с целью увеличения эффективности работы компа. Предикат «отсечение» обозначается знаком восклицания — (!).

нужно отметить, что это обычное обозначение отсечения в системах логического программирования. Если данный предикат употреблять в качестве цели в предложении, то приобретенный при всем этом эффект можно проиллюстрировать дверью, через которую можно пройти лишь слева вправо, но недозволено возвратиться вспять через эту дверь. Роль двери делает знак !. Как понятно система Пролог-Д будет пробовать делать цели в предложении порядке просмотра слева вправо, начиная от знака <- от первой до крайней цели. Если какая-либо цель оказывается не выполненной, то осуществляется возврат и делается попытка отыскать другие решения. Отсечение ограничивает возможность поиска альтернатив с того момента, как была просмотрена цель, обозначенная эмблемой !. По данной для нас причине, если не выполнены цели А,Б,В, возврат для нахождения других решений в предложении пример<-А,Б,В,!,Г,Д,Е; вероятен, а, если не выполнены цели Г,Д либо Е, то уже нет. Рубикон при движении слева вправо перейден. нужно отметить значимость этого предиката в особенности при описании задач, допускающих множественные решения. Иллюстрация предиката отсечение на примере базы познаний мать. Вправду, у всякого человека не быть может две мамы, потому, определив для данного человека имя мамы, нужно закончить последующие поиски.

мать(Саша,Петя)<-!;

мать(Наташа,Ваня)<-!;

мать(Оля,Петя)<-!;

мать(Катя,Даша)<-!;

мать(Люда,Сережа)<-!;

мать(Петя,Костя)<-!;

к базе познаний быть может задан вопросец

?мать(x,Даша); ответ системы Пролог-Д:

x=Kатя ДРУГИХ РЕШЕНИЙ НЕТ.

Опосля нахождения первого решения поиск альтернатив не делается.

5. Рекурсия.

Существует большущее количество задач, в каких дела меж объектами можно найти, лишь используя сами определяемые соотношения. При всем этом получаются правила, именуемые рекурсивными.
Применение рекурсии для описания задач при работе с системами логического программирования обширно всераспространенный прием. Рекурсия будет проиллюстрирована несколькими примерами построения программ, как вычислительных, так и логических. Первым примером будет пример вычисления большего общего делителя (НОД) 2-ух чисел. Предикат, который производится, если найден НОД 2-ух данных чисел будет иметь имя нод и три аргумента: числа a,b и значение НОД — c. Для описания вычисления НОД употребляются последующие суждения. Во-1-х, если, а=b, то c=a=b; Во-2-х, если, а>b, то нужно вычислить НОД для чисел b и a-b; В-3-х, если b>a, то нужно вычислить НОД для чисел a и b-a. Эти три утверждения естественным образом могут быть записаны на Прологе-Д.:

нод(а,а,а);

нод(а,b,c)<-больше(а,b),ВЫЧИТАНИЕ(a,b,d),нод(b,d,c);

нод(а,b,c)<-БОЛЬШЕ(b,а),ВЫЧИТАНИЕ(b,a,d),нод(a,d,c);

ВЫЧИТАНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(1,X,Z,Y);

Если к данной для нас базе познаний задать вопросец:

?нод(10,15,x);

ответ системы Пролог-Д:

x=5 ДРУГИХ РЕШЕНИЙ НЕТ

Предикат нод, определенный выше оказывается обратимым. В качестве второго примера рассматривается задачка о вычислении частей последовательности: 0, 1, 1, 2, 3, 5, 8, 13, 21 ,34, 55, 89, 144,… , известной как последовательность Фибоначчи. Любой элемент ее определяется последующими правилами:

f0 =0,

f1 =1,

fn =fn-1+fn-2, при n>1

1-ая формула соответствует утверждению о том, что

Фиб(N,X)<-больше(N,1),ВЫЧИТАНИЕ(N,1,М),

ВЫЧИТАНИЕ(N,2,К), Фиб(М,Y), Фиб(K,Z),

СЛОЖЕНИЕ(Y,Z,X);

ВЫЧИТАНИЕ и СЛОЖЕНИЕ — имена предикатов вычитание и сложение, определяемых при помощи правил:

СЛОЖЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(1,X,Y,Z);

ВЫЧИТАНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(1,X,Z,Y);.

Данные предложения представляют собой базу данных на языке Пролог-Д, позволяющую вычислять значения частей последовательности. B ответ на вопросец:

?Фиб(10,X);

ответ системы Пролог-Д:

x=55 ДРУГИХ РЕШЕНИЙ НЕТ

нужно сказать, что таковой путь решения данной задачки не самый наилучший. Для нахождения N+1 числа Фибоначчи требуется 2* (N+1)-1 рекурсивное воззвание. Но этого реально избежать, если перейти к иной базе познаний, в какой предикат с именованием «Фиб» определен как трехарный, другими словами имеющий три аргумента, включающий в себя в качестве аргумента значения N-ого и N-1- ого частей последовательности. Таковая база познаний выходит в итоге перевода на язык Пролог-Д утверждений.

1. 0-ой элемент последовательности есть 0, а (-1) -ый элемент не определен. Фиб(0,x,0);.

2-ой аргумент обозначен x. В этом случае значение x быть может хоть каким.

2. 1-й элемент последовательности есть 1, а нулевой-0. Фиб(1,0,1);. 3. N -й член последовательности Фибоначчи определяется через (N-1) -Й член последовательности.

Фиб(N,F,f)<-больше(N,1),ВЫЧИТАНИЕ(N,1,M),Фиб (M,Ф,F), СЛОЖЕНИЕ (Ф, F, f);.

Воззвание к данной для нас базе познаний будет иметь вид:

?Фиб(10,F,f);.

ответ системы Пролог-Д:

F=55, f=34 ДРУГИХ РЕШЕНИЙ НЕТ

При работе с данной для нас базой познаний для вычисления N — го числа Фибоначчи нужно всего только N рекурсивных воззваний. Для системы Пролог-Д свойственна изюминка, проявляющаяся при работе с рекурсивными программками. В общем случае, порядок предложений в базе познаний не имеет значения. Но, в нижеследующем примере это не так

родитель (один из ближайших родственников человека, составляющий основу семьи)(X)<- родитель (один из ближайших родственников человека, составляющий основу семьи)(Y),отец(Y,Z);

родитель (один из ближайших родственников человека, составляющий основу семьи)(Коля);

отец(Коля, Петя);

родитель (один из ближайших родственников человека, составляющий основу семьи)(Петя);

В первом предложении голова имеет то же имя, что и одна из целей — «родитель (один из ближайших родственников человека, составляющий основу семьи)«. В процессе поиска ответа в данной для нас базе познаний будет использовано правило: предложение, стоящее первым, будет и использовано первым — известное как принцип поиска в глубину. Это приведет к тому, что система будет обращаться лишь к первому предложению базы познаний и ответ на вопросец ?родитель (один из ближайших родственников человека, составляющий основу семьи)(Петя); не будет найден никогда. вкупе с тем, маленькое изменение базы познаний, перестановка 2-ух предложений местами, приводит к удачному поиску решения:

родитель (один из ближайших родственников человека, составляющий основу семьи)(Коля);

родитель (один из ближайших родственников человека, составляющий основу семьи)(X)<-родитель(Y), отец(Y,X);

отец(Коля, Петя);

?родитель (один из ближайших родственников человека, составляющий основу семьи)(Петя);.

Неограниченно-повторное воззвание к предложению быть может и наиболее замаскированным так, как это выходит в примере:

ВЫШЕ(А,В)<-НИЖЕ(В,А);

НИЖЕ(В,А)<-ВЫШЕ(А,В);

ВЫШЕ(Коля, Петя);

?НИЖЕ(Петя, Коля);.

Но если третье предложение стоит на первом месте, то повторного воззвания не произойдет и ответ будет найден. Таковая ситуация именуется петля
. При вычислении частей последовательности Фибоначчи, может появляться нескончаемая петля при выполнении программки. По правде, если вопросец имеет вид:

?Фиб(0,x,y);,

то 1-ый вероятный итог x =_0, y =1. Дальше в попытке найти последующее решение возникает нескончаемая петля, потому что будет отыскиваться Фиб(-1,x,y), Фиб(-2,…),… . Для контроля за схожей ситуацией нужна модификация базы познаний. 1-ые два предложения должны быть записаны в виде:

Фиб(0,x,1)<-!;

Фиб(1,1,1)<-!;,

тогда при поиске альтернативного решения опосля получения ответа на вопросец:

?Фиб(0,x,y); x=_0, y =1

будет получен итог:

ДРУГИХ РЕШЕНИЙ НЕТ.

Данный пример иллюстрирует 1-ое вероятное внедрение предиката «отсечение». И очередное чисто Эстетическое предложение. База познаний на Прологе-Д будет смотреться лучше, если предложения с схожими именами размещены в одном месте. Для сопоставления приводится две базы познаний:

1. 2.

мать(Таня, Надя); мать(Таня, Надя);

бабушка(X,Y)<-мать(X,Z), мать(Надя, Катя);

мать(Z,Y), бабушка(X,Y)<-мать(X,Z),

мать(Надя, Катя); мать(Z,Y);.

6. Графические способности системы Пролог-Д.

Когда идет речь о компьютерной графике, построение изображения на дисплее интерпретируется серией установок. Таковым образом, всякое изображение ассоциируется с методом его построения. Но, эта теория не укладывается в принципы декларативного программирования, принятые в системе Пролог-Д. Если последовать данной для нас концепции то нужным становится описание частей рисунка в виде совокупы графических объектов, соотношений и связей меж ними. В этом случае описание последовательности действий художника — исполнителя становится лишним. В системе Пролог-Д определен набор графических примитивов, отображающих графические объекты и построенных таковым образом, что исходя из убеждений синтаксиса любой из их быть может лишь целью, и воспринимает ТОЧКА, ЛИНИЯ, ОКРУЖНОСТЬ, ЗАКРАСКА
крайний параметр задает цвет. Обычно, если на этом месте стоит не конкретизированная переменная, то также выводится сообщение о ошибке. Для обозначения цвета при использовании графического адаптера VGA принята шифровка цветов, изображенная в таблице 3.4.1. В системе Пролог-Д имеет пространство изюминка использования интегрированных предикатов, обусловленная специфичностью графических средств системы IBM-PC. Для использования графики нужно открыть графический файл при помощи предиката ЗАПИСЬ_В(“grp:”). Опосля окончания работы нужно открыть файл для вывода текста ЗАПИСЬ_В(“con:”).


0
темный
8
мрачно сероватый

1
голубий
9
светло голубий

2
зеленоватый
10
светло зеленоватый

3
голубой
11
светло голубой

4
карий
12
красноватый

5
фиолетовый
13
сиреневый

6
мрачно желтоватый
14
желтоватый

7
сероватый
15
белоснежный

Таблица 1. Таблица кодировки цвета в системе Пролог-Д.

В системе Пролог-Д предусмотрены последующие интегрированные графические предикаты:

1. ТОЧКА.

Синтаксис: ТОЧКА(Арг1,Арг2,Арг3)

Интегрированный предикат ТОЧКА имеет три аргумента. Ниже приведены результаты выполнения зависимо от типа аргумента.

ТОЧКА(ц1,ц2,ц3) Установить точку с координатами (ц1,ц2) и цветом ц3;

ТОЧКА(ц1,ц2,П3) П3 := цвет_точки(ц1,ц2);

ТОЧКА(ц1,П2,ц3) Отрисовывать линию с исходной точкой (ц1,0), конечной — (ц1,211) цветом ц3;

ТОЧКА(П1,ц2,ц3) Отрисовывать линию с исходной точкой (0,ц2), конечной — (255,ц2) цветом ц3;

ТОЧКА(П1,П2,ц3) Заполнить экран цветом ц3. В этих 5 вариантах предикат истинен, по другому — выполнение программки прекращается и выводится сообщение о ошибке: «Неосуществимый предикат ТОЧКА».

2. ЛИНИЯ.

Синтаксис: ЛИНИЯ(Арг1,Арг2,Арг3,Арг4,Арг5).

Этот интегрированный предикат имеет 5 аргументов. 5-ый аргумент постоянно должен быть целым, арифметическим выражением либо переменной, конкретизированной целым. Результаты выполнения приведены ниже:

ЛИНИЯ(ц1,ц2,ц3,ц4,ц) Отрисовывать линию с исходной точкой (ц1,ц2), конечной — (ц3,ц4), цветом ц

ЛИНИЯ(ц1,ц2,ц3,П4,ц) Отрисовывать закрашенный треугольник с верхушками (ц1,ц2), (ц3,0), (ц3,211) и цветом ц;

ЛИНИЯ(ц1,ц2,П3,ц4,ц) Отрисовывать закрашенный треугольник с верхушками (ц1,ц2), (0,ц4), (255,ц4) и цветом ц;

ЛИНИЯ(ц1,П2,ц3,ц4,ц) Отрисовывать закрашенный треугольник с верхушками (ц1,0), (ц1,211), (ц3,ц4) и цветом ц;

ЛИНИЯ(П1,ц2,ц3,ц4,ц) Отрисовывать закрашенный треугольник с верхушками (0,ц2), (255,ц3), (ц3,ц4) и цветом ц;

ЛИНИЯ(П1,П2,ц3,ц4,ц) | ЛИНИЯ(ц1,ц2,П3,П4,ц) |

ЛИНИЯ(ц1,П2,П3,П4,ц) | ЛИНИЯ(П1,ц2,П3,П4,ц) — Наполнение экрана цветом ц

ЛИНИЯ(П1,П2,ц3,П4,ц) | ЛИНИЯ(П1,П2,П3,ц4,ц) |

ЛИНИЯ(П1,П2,П3,П4,ц) | ЛИНИЯ(ц1,П2,ц3,П4,ц) — Вертикальный, закрашенный цветом ц прямоугольник, с верхушками (ц1,0), (ц1,211), (ц2,0), (ц2,211);

ЛИНИЯ(П1,ц2,П3,ц4,ц) Горизонтальный закрашенный цветом ц прямоугольник с верхушками (0,ц2), (255,ц2), (0,ц4), (255,ц4);

ЛИНИЯ(ц1,П2,П3,ц4,ц) Четырехугольник цветом ц с верхушками (ц1,0), (ц1,211), (0,ц4), (255,ц4);

ЛИНИЯ(П1,ц2,ц3,П4,ц) Четырехугольник цветом ц с верхушками (0,ц2), (255,ц2), (ц3,0), (ц3,211).

В этих шестнадцати вариантах предикат истинен, по другому выполнение программки прекращается и выдается сообщение о ошибке.

3. ОКРУЖНОСТЬ.

Синтаксис: ОКРУЖНОСТЬ(Арг1,Арг2,Арг3,Арг4).

Интегрированный предикат ОКРУЖНОСТЬ имеет четыре аргумента. Четвертым аргументом постоянно обязано быть целое, арифметическое выражение либо переменная, конкретизированная целым. Ниже приведены результаты выполнения зависимо от типов аргументов.

ОКРУЖНОСТЬ(ц1,ц2,ц3,ц) Окружность с центром (ц1,ц2), радиусом ц3, цветом ц;

ОКРУЖНОСТЬ(ц1,ц2,П3,ц) | ОКРУЖНОСТЬ(ц1,П2,П3,ц) |

ОКРУЖНОСТЬ(П1,ц2,П3,ц) Наполнение экрана цветом ц

ОКРУЖНОСТЬ(П1,П2,П3,ц) | ОКРУЖНОСТЬ(П1,П2,ц3,ц) |

ОКРУЖНОСТЬ(ц1,П2,ц3,ц) Вертикальный закрашенный цветом ц прямоугольник с верхушками: (ц1-ц3,0), (ц1-ц3,211), (ц1+ц3,0), (ц1+ц3,211);

ОКРУЖНОСТЬ(П1,ц2,ц3,ц) Горизонтальный закрашенный цветом ц прямоугольник с верхушками: (0,ц2-ц3), (255,ц2-ц3), (0,ц2+ц3), (255,ц2+ц3); В этих восьми вариантах предикат истинен, по другому выполнение программки прекращается и выводится сообщение о ошибке: «Неосуществимый предикат ОКРУЖНОСТЬ»

4. ЗАКРАСКА
.

Синтаксис: ЗАКРАСКА(Арг1,Арг2,Арг3,Арг4).

Интегрированный предикат ЗАКРАСКА имеет четыре аргумента. Процедурно этот предикат значит закрасить цветом Арг3 снутри контура с граничным цветом Арг4 начиная с точки (Арг1,Арг2). Предикат постоянно истинен. Все аргументы должны быть целыми, арифметическими выражениями либо переменными, конкретизированными целыми. Если это условие не производится, то выполнение программки прекращается и выводится сообщение о ошибке: «Неосуществимый предикат ЗАКРАСКА».

Пример: закрашенный квадрат

рамка(x1′,y1′,x2′,y2′,цвет‘)<-ЛИНИЯ(x1′,y1′,x1′,y2′,цвет’);

ЛИНИЯ(x1′,y1′,x2′,y1′,цвет’);ЛИНИЯ(x1′,y2′,x2′,y2′,цвет‘);

ЛИНИЯ(x2′,y1′,x2′,y2′,цвет’);

пример <- рамка(50,50,150,150,8),ЗАКРАСКА(100,100,15,8);

?пример;.

В качестве примера приводится описание угла, верхушка которого находится в точке (x,y):

угол(x,y)<-ЛИНИЯ(x,y,10,10,1),ЛИНИЯ(x,y,150,50,1);

?угол(100,100);.

Поначалу будет нарисован отрезок, соединяющий точки (100,100) и (10,10), а потом отрезок, соединяющий точки (100,100) и (50,50). Если б пятым аргументом предикатов ЛИНИЯ было бы число равное нулю, то точки отрезков могли быть не видимы. Не непременно, чтоб описание всей рисунки было записано в одном предложении. часть описания быть может выделена в виде отдельного предложения. Программку предшествующего примера можно видоизменять:

угол(x,y)<-ЛИНИЯ(x,y,10,10,1),продолжение(x,y);

продолжение(x,y)<-ЛИНИЯ(x,y,50,50,1); ?угол(100,100);.

Новенькая программка будет делать те же самые функции, хотя и записывается в два предложения. Система Пролог -Д допускает возможность использования переменных в графических примитивах. В качестве примера приводится описание вектора, выходящего из точки A с кoординатами (x, y) в точку B координатами (s,t):

вектор(A(x,y),B(s,t))<-ЛИНИЯ(x,y,s,t,1);

нужно отметить изюминка графических объектов, описываемых при помощи переменных. В процессе работы системы может оказаться, что какая-то переменная в описании графического примитива не определена. В этом случае графический примитив все равно будет выполнен, но переменная воспринимает все допустимые для нее значения. Другими словами на дисплее покажется геометрическое пространство точек, задаваемое уравнением графического объекта.

В качестве примера приводится вопросец:

?ЛИНИЯ(0,0,x,0,1);.

В итоге ответа на этот вопросец на дисплее покажется треугольник белоснежного цвета. В данном ситуации все просто. Причина возникновения белоснежного треугольника в том, что величина абциссы 2-ой точки не определена, в этом случае абцисса обязана быть хоть каким числом, в допустимых границах. Как правило, область допустимых значений ограничена размерами экрана. Языковые средства Пролога-Д обеспечивают возможность увеличивать определения, естественным методом поддерживают структурность описания объекта. В качестве примера приводится описание построения домика. Домик можно найти как треугольник и квадрат, совмещенные одной стороной. Квадрат можно найти средством 4 отрезков формально это смотрится так:

квадр(x,y,z,t)<-ЛИНИЯ(x,y,x,t,1),ЛИНИЯ(x,y,z,y,1),

ЛИНИЯ(x,t,z,t,1), ЛИНИЯ(z,y,z,t,1);.

7. Обработка списков

На практике нередко встречаются задачки, связанные с перечислением объектов. Для описания таковых объектов употребляются списки. к примеру, перечень учеников первого класса: [Саша,Петя,Дима,Ксюша,Лена,Оля,Катя].

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

[Челябинск(0),Миасс(2),Златоуст(5),Вязовая(5),Усть-Катав(2), Аша(2), Уфа(20),Абдулино(3),Самара(20),Сызрань(2),Инза(2),

Рузаевка(10), Потьма(2), Рязань(5), Москва(0)].

Примером перечня, состоящего из списков, может служить прямоугольная таблица (матрица), представляющая собой перечень строк, любая из которых перечень частей в данной строке. к примеру, таблица: 23 45 56 2 78 89 66 45 56 12 3 75 2 3 6 5 2 1 56 2 5 8 9 22 23 22 33 5 6 9 1 33 быть может представлена последующим перечнем, состоящим из списков:

[[23,45,56,2,78,89,66,45],[56,12,3,75,2,3,6,5],

[2,1,56,2,5,8,9,22],[2,1,56,2,5,8,9,22],[23,22,33,5,6,9,1,33]].

Во всех примерах квадратные скобки означают, что данный объект представляет собой перечень. Перечень быть может определен 2-мя методами: перечислением частей перечня, другими словами так, как это было изготовлено выше и определением головы и хвоста перечня. к примеру, перечень [X|Y] определен конкретно таковым методом. X — это голова перечня, а Y — его хвост. Разные шаблоны определяют различное внутреннее СПИСОК

/

x СПИСОК

/

y [ ]

Шаблону [x|y] соответствует внутреннее СПИСОК

/

x y

Различные шаблоны — различные внутренние представления — обуславливают различия в унификации. Используя Решение

задачка 1.1.2

1.1.2. Опишите на языке логики первого порядка характеристики дела равенство.

задачка 2.1.2

2.1.2. Опишите на языке Пролог-Д состав собственной семьи.

Я обрисую некую, выдуманную мной семью, состоящую из матери, папы, дедушки (отца матери) и бабушки. Схожие дела описываются предикатами мать, ПАПА, ДЕДУШКА, БАБУШКА.

Ниже приведен текст программки (файл v8_212.prw)

%2.1.2.

МАМА(Оля,Петя);

ПАПА(Сергей,Катя);

мать(Елена,Сергей);

ПАПА(Толя,Оля);

БАБУШКА(X,Y)<-мать(X,Z),МАМА(Z,Y);

БАБУШКА(X,Y)<-МАМА(X,Z),ПАПА(Z,Y);

ДЕДУШКА(X,Y)<-ПАПА(X,Z),ПАПА(Z,Y);

ДЕДУШКА(X,Y)<-ПАПА(X,Z),мать(Z,Y);

Дальше разглядим применение программки. Программка отвечает на вопросцы о составе семьи.

Приведем примеры запросов:

? ДЕДУШКА(X,Петя);

? мать(X,Y);

Итог работы программки:

X=Коля

X=Оля

Y=Катя

X=Елена

Y=Сергей

задачка 2.2.4

2.2.4. На языке Пролог-Д напишите базу познаний, в какой определяется функция, данная соотношением:

ìx, если x <-1,

F(x)= í x+1, если -1<x<1,

îx, если x >1.

Разрабатываемая программка создана для вычисления значений функции, обозначенной в задании. программка вычисляет значения функции для аргументов, задаваемых юзером.

Ниже приведен текст программки (файл v8_224.prw)

%2.2.4

ЗНАЧЕНИЕ(X,F)<-МЕНЬШЕ(X,-1),РАВНО(-1,F);

Приведем примеры запросов:

%Примеры вычислений

?

?

?ЗНАЧЕНИЕ(0.2,F);

Итог работы программки:

F=2

F=-1

F=1.2

Несложно убедиться, что вычисления выполненны правильно.

Чтоб работать с программкой нужно созодать запросы: ЗНАЧЕНИЕ(аргумент,F);

Опосля выполнения запроса в F будет содержатся

Задачка 2.2.5

2.2.5. Какие трудности могут появиться в базе познаний о мамах, если у 2-ух мам малыши будут тезками? Напишите программку на Прологе-Д, которая находит имя матери мальчугана Петя второго по порядку в базе познаний. Его маму зовут Оля, а не Саша.

Если в базе познаний о мамах, 2-ух мам малыши будут тезками, могут появиться трудности с конкретным определением имени мамы.

Разрабатываемая программка предназначенна для того, чтоб определять имена матерей по именам их малышей.

Ниже приведен текст программки (файл v8_225.prw)

%2.2.5.

%база мам и малышей

мама(1,Наташа,Катя);

мать(2,Саша,Петя);

мама(3,Света,Ваня);

мать(4,Елена,Катя);

Пример запроса в ситуации, когда у матерей малыши – тезки

%Какие трудности могут появиться в базе познаний о мамах, если у 2-ух мам малыши будут тезками?

? мать(_,X,Катя);

X=Наташа

X=Елена

Итак, для малыша мы получили 2-х матерей.

Последующая часть задания:

%Поиск имя матери мальчугана Петя второго по порядку в базе познаний. Его маму зовут Оля, а не Саша.

? МАМА(2,X,Петя),РАВНО(X,Саша),НЕ(РАВНО(X,Оля));

Итог работы:

X=Саша

Итак, мы обусловили имя матери мальчугана Петя второго по порядку в базе познаний. Его маму зовут Оля, а не Саша.

Задачка 2.3.2

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

Разрабатываемая программка создана для вычисления суммы ряда натуральных чисел. Для выполнения задания воспользуемся последующим рекурсивным определением разыскиваемой cуммы:

1)S(0)=0

2)S(n)=n+S(n-1)

Ниже приведен текст программки (файл v8_232.prw)

%2.3.2.

%унификация вычисленного значения с выходной переменной

Сумма(0,S,S);

%рекурсивный вызов процедуры поиска суммы пока N>0

Сумма(N,P,S)<-СЛОЖЕНИЕ(N,P,L),СЛОЖЕНИЕ(M,1,N),Сумма(M,L,S),!;

Пример использования программки:

%пример вызова предиката

? Сумма(10,S);

Итог:

S=55

Легкая проверка указывает корректность сделанных вычислениий.

Для использования программки, нужно вызывать предикат Сумма(X,S), подставляя заместо X число, до которого нужно отыскать сумму.

задачка 2.3.1

2.3.1. Написать на языке Пролог-Д базу познаний, описывающую вычисление факториала
.

программка предназначенна для вычисления факториала числа n!=1*2*3…*n.

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

1)0!=1

2)n!=n*(n-1)!

Итак, будем рекурсивно вызывать факториал, пока аргумент не станет равным – 0.

Программка подобна программке для поиска суммы натуральных чисел.

Ниже приведен текст программки (файл v8_231.prw)

%2.3.1.

Факториал(N,F)<-Факториал(N,1,F);

%унификация вычисленного значения с выходной переменной

Факториал(0,F,F);

%рекурсивный вызов процедуры вычисления факториала, N*(N-1)*(N-2)…..2*1 пока N>0

Факториал(N,P,F)<-УМНОЖЕНИЕ(N,P,S),СЛОЖЕНИЕ(M,1,N),Факториал(M,S,F),!;

Пример использования программки:

%пример вызова предиката

? Факториал(5,F);

Итог:

F=120

Легкая проверка указывает корректность сделанных вычислениий.

Для использования программки, нужно вызывать предикат Факториал(X,F), подставляя заместо X число, факториал которого нужно отыскать . Следует учитывать, что факториал вырастает весьма стремительно и не задавать огромных значений аргумента.

задачка 2.4.1

2.4.1. Напишите на языке Пролог-Д базу познаний, описывающую прямоугольный треугольник
.

Разрабатываемая программка создана для рисования прямоугольного треугольника по его катетам. задачка состоит в том, чтоб по катетам отыскать координаты вершин и соединить их прямыми линиями.

Ниже приведен текст программки (файл v8_241.prw)

%2.4.1.

%рисуем прямоугольный треугольник с катетами a и b

ПрямоугТреуг(a,b)<-ЗАПИСЬ_В(«grp:»),СЛОЖЕНИЕ(10,a,c),СЛОЖЕНИЕ(10,b,d),

ЛИНИЯ(10,10,c,10,1),ЛИНИЯ(c,10,10,d,1),ЛИНИЯ(10,d,10,10,1);

Пример использования программки:

%Пример

? ПрямоугТреуг(100,150);

Для того, чтоб выстроить треугольник с требуемыми катетами, довольно вызвать предикат ПрямоугТреуг, задав характеристики.

Итог выполнения примера:

задачка 2.5.4

2.5.4. Напишите базу познаний, описывающую удаление n-oго элемента перечня

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

Для реализации решения нам будет нужно один раз прочесть перечень и записать все элементы, кроме удаляемого, в иной в оборотном порядке. Опосля чего же будет нужно переписать перечень, с удаленным данным элементом, в прямом порядке.

Ниже приведен текст программки (файл v8_254.prw)

% 2.5.4

%Предикат удаления N-ого знака из перечня L и помещение результата в перечень S

%1-ый вызов DELNEL(L,N,1,[],Z) — удаляет знак и записывает итог в оборотном порядке

% 2-ой вызов DELNEL(L,0,1,[],S) — направляет назад

DELNEL(L,N,S)<-DELNEL(L,N,1,[],Z),DELNEL(Z,0,1,[],S);

DELNEL([],_,_,S,S);

%если не N-ный знак

DELNEL([X|T],N,I,Y,S)<- НЕ(РАВНО(N,I)),ДОБАВИТЬ(X,Y,Z),СЛОЖЕНИЕ(1,I,J),DELNEL(T,N,J,Z,S);

%если N-ный знак

DELNEL([X|T],N,I,Y,S)<-РАВНО(N,I),СЛОЖЕНИЕ(I,1,J),DELNEL(T,N,J,Y,S);

%добавление элемента X в начало перечня Y

ДОБАВИТЬ(X,Y,[X|Y]);

Пример использования программки, удалим 3-й элемент из перечня:

%пример работы.

? DELNEL([1,8,9,7,5],3,S);

Итог выполнения примера:

S=[1,8,7,5]

Для того, чтоб удалить элемент из перечня нужно вызвать предикат DELNEL, задав в качестве характеристик, перечень, номер удаляемого элемента и имя результирующего перечня.

Перечень литературы

1. Абдикеев Н.М. Проектирование умственных систем в экономике. Учебник / М.: Экзамен, 2004 – 526с.

2. Алексеев М.Н., Бешенков С.А., Гейн А.Г., Григорьев С.Г. Информатика и информационные технологии: практические работы / Миасс, 2000 — 42 с.

3. Бешенков С.А., Гейн А.Г., Григорьев С.Г. Информатика и информационные технологии. Екатеринбург: Уральский рабочий, 1995 — 134 с.

4. Бешенков С.А. Школьная информатика: новейший взор, новейший курс// Педагогическая информатика. N2. 1993 с. 5-10

5. Гаврилова Т.А., Хорошевский В.Ф., Базы познаний умственных систем. Учебник/ Санкт-Петербург:Питер, 2000- 382 с.

6. Григорьев С.Г., Морозова Е.В. Информатика и информационные технологии: Сборник задач / ЛБЛ-Балтика. Санкт-Петербург, 1996 – 32 с.

]]>