Главная      Учебники - Разные     Лекции (разные) - часть 23

 

Поиск            

 

Указания методические по лабораторным занятиям По дисциплине Базы данных Для специальности 080801. 65 «Прикладная информатика в экономике»

 

             

Указания методические по лабораторным занятиям По дисциплине Базы данных Для специальности 080801. 65 «Прикладная информатика в экономике»

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение

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

Тихоокеанский государственный университет

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

Кафедра Экономической кибернетики

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

По дисциплине Базы данных

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

Методические указания разработаны в соответствии с составом УМКД

Методические указания разработала Серебрякова Т.А._____________

Методические указания утверждены на заседании кафедры,

протокол № ______ от «___» _______________ 2010г.

Зав. кафедрой _________ «___» ______________ 2010г. Пазюк К.Т.


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

Методические указания рассмотрены и утверждены на заседании УМКС и рекомендованы к изданию

протокол № ______ от «___» _______________ 2010г.

Председатель УМКС _______ «___» ______________ 2010г. Пазюк К.Т.

Директор института _________ «___» ____________ 2010г. Зубарев А.Е.


Введение

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

Данная дисциплина обеспечивает приобретение студентами знаний, умений и навыков по "Интеллектуальные информационные системы" в соответствии с государственным образовательным стандартом (ГОС) высшего профессионального образования по специальности 351400 "Прикладная информатика (по областям)". Она входит в цикл специальных дисциплин специальности.

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

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

К основным задачам , дисциплины следует отнести:

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

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

Завершается изучение дисциплины " Интеллектуальные информационные системы" защитой курсовой работы и сдачей зачета.

Тема 1: Факты и правила.

Содержание лекции

Содержание лабораторного занятия

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

Представление знаний на основе формальных систем Представление знаний с помощью логики предикатов. Выводы в естественной дедуктивной системе. Получение выводов и операции со знаниями на основе принципа резолюции. Модели представления знаний. Начальные понятия математической логики, необходимые для изложения принципов работы с системой Пролог-Д. Описание знаний с помощью совокупности дискретных объектов и отношений между ними. Терм, функтор, предикат, предикатный символ, формула, предложение. Языки логики первого порядка.Факты и правила. База знаний.

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

Задание: Составить базу знаний для своего варианта используя факты и правила. Написать программу, описывающую данные и правил их обработки.

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

Лабораторная установка: Персональный компьютер с ОС Windows, MS Office, языке Пролог-Д, являющемся учебной версией классического Пролога.

Оценка: Рассматривают содержание нового направления информатики (базы знаний) и особенности его реализации.

Время выполнения работы: 2 часа.

Методические указания

В рамках настоящей темы рассматриваются следующие вопросы: Проблема представления знаний. Необходимые условия представления знаний. Общая схема процесса извлечения и представления знаний. Классификация моделей представления знаний. Общая характеристика подходов к формализации знаний. Языки представления знаний. Одно из актуальных направлений информатики – интеллектуализация информационных технологий. Это означает, что пользователь, применяя компьютерные технологии, сможет не только получать сведения на основе обработки данных, но и использовать по интересующей его проблеме накопленный опыт и знания профессионалов. Интеллектуальные системы и технологии применяются для тиражирования профессионального опыта и решения сложных научных, производственных и экономических задач, например, анализ инвестиций, планирование рекламной кампании, прогнозирование рынка. Для обработки и моделирования знаний применяются специальные модели и создаются так называемые базы знаний.

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

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

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

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

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

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

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

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


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

?русангл(y,x); - если необходимо узнать, все слова, хранящиеся в базе знаний,

?русангл(мама, x); - если необходимо узнать как по английски мама?

?русангл(x, sky); - если необходимо узнать, что означает слово sky?

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

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

Контрольные вопросы и задания

Задание: 1Составьте словарь синонимов русского языка.

Задание: 2. Составьте словарь синонимов английского языка.

Задание: 3. Составьте англо-русский словарь

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

Задание: 5. Как вы считаете, что означает, тот факт, что вы не нашли синоним для данного слова?

Тема2: Арифметика и другие встроенные предикаты

Содержание лекции

Содержание лабораторного занятия

Базы знаний ИИС

Понятие базы знаний, ее отличие от базы данных. Принципы организации баз знаний. Основные этапы разработки базы знаний. Базовые понятия. Методика построения. Этап-1 синтеза ЭС: "Идентификация". Этап-2 синтеза ЭС: "Концептуализация". Этап-3 синтеза ЭС: "Формализация". Этап-4 синтеза ЭС: "Разработка прототипа". Этап-5 синтеза ЭС: "Экспериментальная эксплуатация". Этап-6 синтеза ЭС: "Разработка продукта". Этап-7 синтеза ЭС: "Промышленная эксплуатация".

Понятие базы знаний, ее отличие от базы данных. Принципы организации баз знаний. Основные этапы разработки базы знаний. Базовые понятия. Методика построения. Начальные понятия математической логики, необходимые для изложения принципов работы с системой Пролог-Д. Описание знаний с помощью совокупности дискретных объектов и отношений между ними. Терм, функтор, предикат, предикатный символ, формула, предложение. Языки логики первого порядка.База знаний.

Задание: Составить базу знаний для своего варианта используя функции выполнения арифметических операций. Написать программу реализующую функции выполнения арифметических операций посредством специальных встроенных предикатов.

Исполнение: Освоение принципов работы со встроенными арифметическими предикатами и встроенными предикатами сравнения.

Лабораторная установка: Персональный компьютер с ОС Windows, MS Office, языке Пролог-Д, являющемся учебной версией классического Пролога.

Оценка: Рассматривают содержание нового направления информатики (базы знаний) и особенности его реализации.

Время выполнения работы: 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);

Во всех четырех случаях 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);.

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

?площадь(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) предназначен для сравнения двух целых или переменных. Он имеет два аргумента: целых или переменных, конкретизированных целыми. Оба аргумента к моменту выполнения должны быть определены. Если эти требования не выполнены, то появится сообщение об ошибке: "Функция не может быть выполнена.". Предикат выполнен, если Арг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.

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

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

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

ХЕВИСАЙД(X,1)<-БОЛЬШЕ(X,0);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Контрольные вопросы и задания

Задание: 1. Составьте базу знаний о своих родственниках с указанием родственных отношений и возраста.

Задание: 2. Составьте программу, которая подсчитывает число людей с одинаковыми именами - тезок среди ваших родственников.

Задание: 3. Составьте программу, которая определит имя самого молодого и самого старого человека среди вашей родни.

Тема3: Рекурсия.

Содержание лекции

Содержание лабораторного занятия

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

Стратегия управления и механизм вывода в ИИС. Дедуктивные методы поиска решений: на основе логики предикатов первого порядка, методом Эрбрана и методом резолюций. Методы поиска решений в больших пространствах состояний. Методы поиска решений в условиях нечеткости: недетерминированность управления выводом. Рекурсивные правила. Применение рекурсии для описания задач при работе с системами логического программирования

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

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

Лабораторная установка: Персональный компьютер с ОС Windows, MS Office, языке Пролог-Д, являющемся учебной версией классического Пролога.

Оценка: Рассматривают содержание нового направления информатики (базы знаний) и особенности его реализации.

Время выполнения работы: 4 часа.

Методические указания

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

Первая формула соответствует утверждению о том, что значение нулевого элемента последовательности равно нулю. Это можно записать в виде факта: Фиб(0,0);. Вторая строка соответствует утверждению: первый элемент равен 1. На Прологе-Д это можно записать так: Фиб(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);.

Второй аргумент обозначен 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);

родитель(Коля);

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

родитель(Петя);

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

родитель(Коля);

родитель(X)<-родитель(Y), отец(Y,X);

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

?родитель(Петя);.

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

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

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

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

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

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

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

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

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

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

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

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

будет получен результат:

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

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

1. 2.

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

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

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

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

Контрольные вопросы и задания

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

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

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

Задание:4. Описать вычисление наименьшего общего кратного.

Задание:5. Описать на Прологе-Д сказку про попа, у которого была собака.

Тема4: Графические возможности. Графика образов.

Содержание лекции

Содержание лабораторного занятия

Трехкомпонентная (зрительная, лингвистическая и сценарная) организация интерфейса пользователя (ИП) ИИС. Влияние новых информационных технологий на реализацию интеллектуального сервиса ИП. Объяснение и обоснование решений в ИИС. Объектный подход к проектированию ИП. Основные этапы технологии проектирования интеллектуальных ИП. Интерфейс эксперта и пользователя.

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

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

Исполнение: Освоение принципов графики в системе Пролог-Д.

Лабораторная установка: Персональный компьютер с ОС Windows, MS Office, языке Пролог-Д, являющемся учебной версией классического Пролога.

Оценка: Рассматривают содержание нового направления информатики (базы знаний) и особенности его реализации.

Время выполнения работы: 3 часа.

Методические указания

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

0

черный

8

темно серый

1

синий

9

светло синий

2

зеленый

10

светло зеленый

3

голубой

11

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

4

коричневый

12

красный

5

фиолетовый

13

сиреневый

6

темно желтый

14

желтый

7

серый

15

белый

Таблица 3.4.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. В этих пяти случаях предикат истинен, иначе - выполнение программы прекращается и выводится сообщение об ошибке: "Невыполнимый предикат ТОЧКА".

2. ЛИНИЯ.

Синтаксис: ЛИНИЯ(Арг1,Арг2,Арг3,Арг4,Арг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);.

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

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

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

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

треуг(x,y,z,t)<-ЛИНИЯ(x,y,t,y,1),СЛОЖЕНИЕ(x,t,r),

ДЕЛЕНИЕ(r,2,f), ЛИНИЯ(x,y,f,z,1), ЛИНИЯ(f,z,t,y,1);

(Предикат с именем ДЕЛЕНИЕ - предикат деления первого аргумента на второй, частное в третьем, а предикат с именем СЛОЖЕНИЕ есть сложение первого аргумента со вторым, результат в третьем аргументе.) Oпределение дома длиной 20 единиц, высотой этажа 10 единиц и высотой крыши 20 единиц имеет вид:

дом(x,y)<-крыша(x,y,r,f),этаж(x,y,f);

этаж(x,y,f)<-СЛОЖЕНИЕ(y,20,z),квадр(x,y,f,z);

крыша(x,y,r,f)<-СЛОЖЕНИЕ(r,10,y),СЛОЖЕНИЕ(x,20,f),

треуг(x,y,r,f);

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

птица(x,y)<-взмах(x,y),птица(x,y);

взмах(x,y)<-вниз(x,y,1),вниз(x,y,0), вверх(x,y,1), вверх(x,y,0);

вниз(x,y,c)<-сдв(x,y,z,t,u,v), ЛИНИЯ(z,y,u,y,1);

вверх(x,y)<-сдв(x,y,z,t,u,v),ЛИНИЯ(x,y,z,t,1), ЛИНИЯ(x,y,u,v,1);

сдв(x,y,z,t,u,v)<-сдп(x,y,z,t),сдл(x,y,u,v);

сдп(x,y,z,t)<-СЛОЖЕНИЕ(x,5,z),СЛОЖЕНИЕ(t,5,y);

сдл(x,y,z,t)<-СЛОЖЕНИЕ(z,5,x),СЛОЖЕНИЕ(t,5,y);

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

дом(x,y)<-крыша(x,y,r,f), этаж(x,y,f);

этаж(x,y,f)<-СЛОЖЕНИЕ(y,20,z),квадр(x,y,f,z);

крыша(x,y,r,f)<-СЛОЖЕНИЕ(r,10,y),СЛОЖЕНИЕ(x,20,f),

треуг(x,y,r,f);

треуг(x,y,z,t)<-ЛИНИЯ(x,y,t,y,1),ДЕЛЕНИЕ2(x,t,f),угол(x,y,z,t,f);

угол(x,y,z,t,f)<-ЛИНИЯ(x,y,f,z,1),ЛИНИЯ(f,z,t,y,1);

ДЕЛЕНИЕ2(x,t,f)<-СЛОЖЕНИЕ(x,t,r),ДЕЛЕНИЕ(r,2,f);

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

ч2(x,y,z,t)<-ЛИНИЯ(x,t,z,t,1),ЛИНИЯ(z,y,z,t,1);.

птица(x,y)<-взмах(x,y),птица(x,y);

взмах(x,y)<-вниз(x,y,1),вниз(x,y,0),вверх(x,y,1),вверх(x,y,0);

вниз(x,y,c)<-сдв(x,y,z,t,u,v),ЛИНИЯ(z,y,u,y,1);

вверх(x,y)<-сдв(x,y,z,t,u,v),

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

сдв(x,y,z,t,u,v)<-сдп(x,y,z,t),сдл(x,y,u,v);

сдп(x,y,z,t)<-СЛОЖЕНИЕ(x,5,z),СЛОЖЕНИЕ(t,5,y);

сдл(x,y,z,t)<-СЛОЖЕНИЕ(z,5,x),СЛОЖЕНИЕ(t,5,y);

В ответ на вопрос:

?дом(70,110),птица(120,50);

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

Контрольные вопросы и задания

Задание:1. Используя рекурсивное определение, напишите базу знаний, описывающую многоэтажный дом.

Задание:2. Опишите на языке Пролог-Д построение улицы без учета и с учетом перспективы.

Тема5: Обработка списков.

Содержание лекции

Содержание лабораторного занятия

Программные средства разработки и реализации ИИС: универсальные языки программирования, универсальные языки представления знаний и программные оболочки. Краткая характеристика программных средств Лисп, Пролог, FRL, Rule-Master, Expert-Easy, ЭКО и др. Технические средства разработки и реализации ИИС: Лисп и Пролог- процессоры.

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

Задание: Составить базу знаний для своего варианта используя обработку списков.

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

Лабораторная установка: Персональный компьютер с ОС Windows, MS Office, языке Пролог-Д, являющемся учебной версией классического Пролога.

Оценка: Рассматривают содержание нового направления информатики (базы знаний) и особенности его реализации.

Время выполнения работы: 4 часа.

Методические указания

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

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

[Челябинск(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]].

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

Шаблону [x,y] соответствует внутреннее представление

СПИСОК

/ \

x СПИСОК

/ \

y [ ]

Шаблону [x|y] соответствует внутреннее представление:

СПИСОК

/ \

x y

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

1. Принадлежность элемента списку.

Эту задачу можно описать с помощью следующих выражений:

а). Основной случай можно сформулировать следующим образом:

терм Р принадлежит списку [X..Y], если P=X..

б). Рекурсивная ситуация описывается с помощью высказывания "терм Р принадлежит списку [X..Y], если Р принадлежит Y". На языке Пролог-Д эти два высказывания можно записать в виде двух предложений:

принадлежит(P,L)<- равно(L,[X|Y]),равно(P,X);

принадлежит(P,L)<- равно(L,[X|Y]),принадлежит(P,Y);.

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

элемент(P,[P|T]);

элемент(P,[X|Y])<- элемент(P,Y);.

2. Склеивание двух списков.

Эту задачу можно описать с помощью следующих выражений:

а). основная ситуация состоит в том, что если к пустому списку [ ] добавить список Р, то в результате получится Р.

б). рекурсивная ситуация состоит в том, что можно список Р добавить к концу списка С, если Р будет добавлен к хвосту С и затем присоединен к голове В. На Прологе-Д эти предикаты можно записать так:

добавить([],[P],[P]);

добавить(C,P,B)<- равно(C,[X,Y]),добавить(Y,P,Z), равно(B,[T,Z]);.

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

присоединить([],[P],[P]);

присоединить([X|Y],P,[X|T])<-присоединить(Y,P,T);.

Например, если задан вопрос к этой базе знаний:

?присоединить(L,[Джим |R],[Джек, Билл, Джим, Тим, Джим, Боб];,

то будут получены ответы:

L=[Джек, Билл] R=[Тим, Джим, Боб] L=[Джек, Билл, Джим, Тим] R=[Боб].

Контрольные вопросы и задания

Задание:1. Напишите базу знаний, описывающую сортировку списка, элементы которого целые, по убыванию.

Задание:2. Напишите базу знаний, описывающую удаление элемента списка.

Рекомендуемая литература

а) основная литература:

1. Алие Р.А., Абдикеев Н.М., Шахназаров М.М. Производственные системы с искусственным интеллектом. М.: Радио и связь, 1990. – 264с.

2. Боровиков В.П. Прогнозирование в системе STATISTICA® в среде Windows. Основы теории и интенсивная практика на компьютере: Учеб. пособие. – М.: Финансы и статистика, 2000. – 384с.

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

4. Дюк В.А. Компьютерная психодиагностика. - СПб: Братство, 2005 - 365с.

5. Дюк В.А. Обработка данных на ПК в примерах. – СПб: Питер, 2000. – 240с.

  1. Змитрович А.И. Интеллектуальные информационные системы. - Мн.: НТООО "ТетраСистемс", 2004- 368 с.
  2. Нечеткие множества в моделях управления и искусственного интеллекта / Под ред. Д.А. Поспелова. - М.: Наука, 1999.- 312 с.

8. Попов Э.В. Экспертные системы: Решение неформализованных задач в диалоге с ЭВМ. - М.: Наука, 2008. – 286с.

9. Поспелов Г.С. Искусственный интеллект – основа новой информационной технологии. – М.: Наука, 2008. – 280с.

10. Представление и использование знаний: Пер. с японского/ Х. Уэно, Т. Кояма, Т. Окамото и др. – М.: Мир, 2009. – 220с.

11. Приобретение знаний: Пер. с япон./Под ред. С. Осуга, Ю. Саэки. – М.: Мир, 1990. – 218с.

12. Райков А.Н. Интеллектуальные информационные технологии: Учебное пособие. – М.: МГИРЭА(ТУ), 2000. - 96с.

13. Романов А.Н., Одинцов Б.Е. Советующие информационные системы в экономике: Учеб. пособие для вузов. М.: ЮНИТИ-ДАНА, 2000. – 487с.

14. Советов Б.Я. Информационная технология: Учеб. для вузов по спец. “Автоматизир. Системы обработки информ. и упр.”. – М.: Высш. шк., 2004 – 368с.

15. Сотник С. Л., Конспект лекций по курсу "Основы проектирования систем искусственного интеллекта". 2008. –187 с.

  1. Таусенд К., Фохт Д. Проектирование и программная реализация экспертных систем на персональных ЭВМ /Пер с англ. В.А. Кондратенко. - М.: Финансы и статистика, 2000, 420с.

17. Терехов С.А. Лекции по теории и приложениям искусственных нейронных сетей. Лаборатория Искусственных Нейронных Сетей НТО-2, ВНИИТФ: –Снежинск. 2004. -200 с.

  1. Уотермен Д. Руководство по экспертным системам. - М.: Мир, 1989, 153 с.

б) дополнительная литература:

1. И. Б. Фёдоров, Левин Р., Дранг Д., Эделсон Б. Практическое введение в технологию искусственного интеллекта и экспертных систем с иллюстрациями на Бейсике. Пер. с англ. – М.: Финансы и статистика, 1990. – 239с.

2. Луценко Е.В. Интеллектуальные информационные системы: Учебное пособие для студентов специальности: 351400 "Прикладная информатика (по отраслям)". – Краснодар: КубГАУ. 2004. – 633 с.