Контрольная работа: Понятие лингвистической переменной. Язык программирования Prolog

Содержание

1.  Нечеткая лингвистическая переменная

2.  Пролог - язык программирования ЭС

Используемая литература


Вопрос 24. Нечеткая лингвистическая переменная

Понятие лингвистической переменной

Лингвистическая переменная отличается от числовой переменной тем, что ее значениями являются не числа, а слова или предложения в естественном или формальном языке. Поскольку слова, в общем, менее точны, чем числа, понятие лингвистической переменной дает возможность приближенно описывать явления, которые настолько сложны, что не поддаются описанию в общепринятых количественных терминах. В частности, нечеткое множество, которое представляет собой ограничение, связанное со значениями лингвистической переменной, можно рассматривать как совокупную характеристику различных подклассов элементов универсального множества. В этом смысле роль нечетких множеств аналогична той роли, которую играют слова и предложения в естественном языке. Например, прилагательное "КРАСИВЫЙ" отражает комплекс характеристик внешности индивидуума. Это прилагательное можно также рассматривать как название нечеткого множества, которое является ограничением, обусловленным нечеткой переменной "КРАСИВЫЙ". С этой точки зрения термины "ОЧЕНЬ КРАСИВЫЙ", "НЕКРАСИВЫЙ", "ЧЕРЕЗВЫЧАЙНО КРАСИВЫЙ", "ВПОЛНЕ КРАСИВЫЙ" и т.п. — названия нечетких множеств, образованных путем действия модификаторов "ОЧЕНЬ, НЕ, ЧЕРЕЗВЫЧАЙНО, ВПОЛНЕ" и т.п. на нечеткое множество "КРАСИВЫЙ". В сущности, эти нечеткие множества вместе с нечетким множеством "КРАСИВЫЙ" играют роль значений лингвистической переменной "ВНЕШНОСТЬ".

Важный аспект понятия лингвистической переменной состоит в том, что эта переменная более высокого порядка, чем нечеткая переменная, в том смысле, что значениями лингвистической переменной являются нечеткие переменные. Например, значениями лингвистической переменной "ВОЗРАСТ" могут быть: "МОЛОДОЙ, НЕМОЛОДОЙ, СТАРЫЙ, ОЧЕНЬ СТАРЫЙ, НЕ МОЛОДОЙ И НЕ СТАРЫЙ" и т.п. Каждое из этих значений является названием нечеткой переменной. Если Описание: \(\tilde x\)— название нечеткой переменной, то ограничение, обусловленное этим названием, можно интерпретировать как смысл нечеткой переменной Описание: \(\tilde x\).

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

1.  Cинтаксическое, которое может быть задано в форме грамматики, порождающей название значений переменной;

2.  Cемантическое, которое определяет алгоритмическую процедуру для вычисления смысла каждого значения.

3.  Лингвистическая переменная характеризуется набором свойств Описание: (X, T(X), U,G, M), в котором:

4.  Описание: X— название переменной;

5.  Описание: T(X)обозначает терм-множество переменной Описание: X, т.е. множество названий лингвистических значений переменной Описание: X, причем каждое из таких значений является нечеткой переменной Описание: \(\tilde x\)со значениями из универсального множества Описание: Uс базовой переменной Описание: u;

6.  Описание: G— синтаксическое правило, порождающее названия Описание: \(\tilde x\)значений переменной Описание: X;

7.  Описание: M— семантическое правило, которое ставит в соответствие каждой нечеткой переменной Описание: \(\tilde x\)ее смысл Описание: \(M(\tilde x)\), т.е. нечеткое подмножество Описание: \(M(\tilde x)\)универсального множества Описание: U.

8.  Конкретное название Описание: \(\tilde x\), порожденное синтаксическим правилом Описание: G, называется термом. Терм, который состоит из одного слова или из нескольких слов, всегда фигурирующих вместе друг с другом, называется атомарным термом. Терм, который состоит из более чем одного атомарного терма, называется составным термом.

К примеру, зададим лингвистическую переменную W = «Возраст работника». Определим синтаксическое правило G как определение «оптимальный», налагаемое на переменную W. Тогда полное терм-множество значений T = { T1 = Оптимальный возраст работника, T2 = Неоптимальный возраст работника }. Носителем U выступает отрезок [20, 70], измеряемый в годах человеческой жизни. И на этом носителе определены две функции принадлежности: для значения T1 - mT1(u), она изображена на рис. 2.2, для T1 - mT2(u), причем первая из них отвечает нечеткому подмножеству M1, а вторая – M2. Таким образом, конструктивное описание лингвистической переменной завершено.

prolog программирование язык лингвистический переменный

Вопрос 54.           Пролог - язык программирования ЭС

Prolog (от “PROgramming in LOGic”) — декларативный язык программирования общего назначения. Prolog был создан в 1972 с целью сочетать использование логики с представлением знаний. С тех пор у него появился ряд диалектов, расширяющих основу языка различными возможностями. Стандарт языка дан в ISO/IEC 13211-1 (1995 год).

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

Prolog был создан под влиянием более раннего языка Planner и позаимствовал из него следующие идеи:

·  обратный логический вывод (вызов процедур по шаблону, исходя из целей);

·  построение структура управляющей логики в виде вычислений с откатами;

·  принцип “отрицание как неудача”;

·  использование разных имен для разных сущностей и т.д.

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

Prolog использует один тип данных, терм, который бывает нескольких типов:

·  атом — имя без особого смысла, используемое для построения составных термов;

·  числа и строки такие же, как и в других языках;

·  переменная обозначается именем, начинающимся с прописной буквы, и используется как символ-заполнитель для любого другого терма;

·  составной терм состоит из атома-функтора, за которым следует несколько аргументов, каждый из которых в свою очередь является атомом.

Программы, написанные на чистом Prolog, описывают отношения между обрабатываемыми сущностями при помощи клауз Хорна. Клауза — это формула вида Голова :- Тело., которая читается как “чтобы доказать/решить Голову, следует доказать/решить Тело”. Тело клаузы состоит из нескольких предикатов (целей клаузы), скомбинированных с помощью конъюнкции и дизъюнкции. Клаузы с пустым телом называются фактами и эквивалентны клаузам вида Голова :- true. (true — не атом, как в других языках, а встроенный предикат).

Другой важной частью Prolog являются предикаты. Унарные предикаты выражают свойства их аргументов, тогда как предикаты с несколькими аргументами выражают отношения между ними. Ряд встроенных предикатов языка выполняют ту же роль, что и функции в других языках, например, …. Предикаты с несколькими аргументами могут действовать в нескольких направлениях в зависимости от того, какие из аргументов уже связаны, а какие — нет. Наконец, для того, чтобы быть языком общего назначения, Prolog должен предоставлять ряд сервисных функций, например, процедур ввода/вывода. Они реализованы как предикаты без специального логического смысла, которые всегда оцениваются как истинные и выполняют свои сервисные функции как побочный эффект оценивания.

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

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

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

Пролог (Prolog) — язык логического программирования, основанный на логике дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка. Начало истории языка относится к 70-м годам XX века. Будучи декларативным языком программирования, Пролог воспринимает в качестве программы некоторое описание задачи, и сам производит поиск решения, пользуясь механизмом бэктрекинга и унификацией.

Пролог относится к так называемым декларативным языкам, требующим от автора умения составить формальное описание ситуации. Поэтому программа на Прологе не является таковой в традиционном понимании, так как не содержит управляющих конструкций типа if … then, while … do; нет даже оператора присваивания. В Прологе задействованы другие механизмы. Задача описывается в терминах фактов и правил, а поиск решения Пролог берет на себя посредством встроенного механизма логического вывода.

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

Пролог реализован практически для всех известных операционных систем и платформ. В число операционных систем входят OS для мэйнфреймов, всё семейство Unix, Windows, OS для мобильных платформ. Многие современные реализации языка имеют внутреннее расширение за счет ООП-архитектуры. Кроме проприетарных решений, существуют свободные реализации Пролог. Пролог критикуется в первую очередь за свою недостаточную гибкость, отчего решения на обычных языках программирования (типа C++, Java) в сочетании с базами данных оказываются более технологичными, чем аналогичные решения на Прологе. Негибкость заключается в трудности изучения языка, более высоких требованиях к квалификации программиста на Прологе, трудности отладки программы, неразвитости технологии программирования, плохой контролируемости промежуточных результатов.

Основные вехи развития языка Prolog

Prolog стал воплощением идеи использования логики в качестве языка программирования, которая зародилась в начале 1970-х годов, и само его название является сокращением от слов “programming in logic” (программирование в терминах логики). Первыми исследователями, которые занялись разработкой этой идеи, были Роберт Ковальски (Robert Kowalski) из Эдинбурга (теоретические основы), Маартен ван Эмден (Maarten van Emden) из Эдинбурга (экспериментальная демонстрационная система) и Ален Колмероэ (Alain Colmerauer) из Марселя (реализация). Популяризации языка Prolog во многом способствовала эффективная реализация этого языка в середине 1970-х годов Дэвидом Д. Г. Уорреном (David D.H. Warren) из Эдинбурга. К числу новейших достижений в этой области относятся средства программирования на основе логики ограничений (Constraint Logic Programming — CLP), которые обычно реализуются в составе системы Prolog. Средства CLP показали себя на практике как исключительно гибкий инструмент для решения задач составления расписаний и планирования материально-технического снабжения. А в 1996 году был опубликован официальный стандарт ISO языка Prolog.

Наиболее заметные тенденции в истории развития языка Prolog

В развитии языка Prolog наблюдаются очень интересные тенденции. Этот язык быстро приобрел популярность в Европе как инструмент практического программирования. В Японии вокруг языка Prolog были сосредоточены все разработки компьютеров пятого поколения. С другой стороны, в США этот язык в целом был принят с небольшим опозданием в связи с некоторыми историческими причинами. Одна из них состояла в том, что Соединенные Штаты вначале познакомились с языком Microplanner, который также был близок к идее логического программирования, но неэффективно реализован. Определенная доля низкой популярности Prolog в этой стране объясняется также реакцией на существовавшую вначале “ортодоксальную школу” логического программирования, представители которой настаивали на использовании чистой логики и требовали, чтобы логический подход не был “запятнан” практическими средствами, не относящимися к логике. В прошлом это привело к широкому распространению неверных взглядов на язык Prolog. Например, некоторые считали, что на этом языке можно программировать только рассуждения с выводом от целей к фактам. Но истина заключается в том, что Prolog — универсальный язык программирования и на нем может быть реализован любой алгоритм. Далекая от реальности позиция “ортодоксальной школы” была преодолена практиками языка Prolog, которые приняли более прагматический подход, воспользовавшись плодотворным объединением нового, декларативного подхода с традиционным, процедурным.

Элементы синтаксиса:

Комментарий до конца строки %
Регистрозависимость да
Регулярное выражение идентификатора переменной [_A-Z][_a-zA-Z0-9]*
Регулярное выражение идентификатора функции [_a-z][_a-zA-Z0-9]*
Группировка выражений ( ... )

Список используемой литературы

1.  http://sedok.narod.ru/fuzzy.php - Ключевые понятия теории нечетких множеств .

2.  http://ru.wikipedia.org/wiki/Лингвистическая_переменная

3.  http://www.intuit.ru/department/ds/fuzzysets/9/

4.  http://progopedia.ru/language/prolog/

Программирование
ЗАМОК ДРАКОНА Математика делает то, что можно, так, как нужно, тогда как информатика делает то, что нужно, так, как можно. Программистский фольклор ...
Третий подход, логический, базируется на использовании предикатов - функций, аргументами которых могут быть значения различных типов, а результатами которых являются логические ...
Такой подход к разработке ПС поддерживается большинством используемых языков программирования, начиная от языков ассемблеров и процедурных языков (ФОРТРАН, Паскаль) до ...
Раздел: Рефераты по информатике, программированию
Тип: учебное пособие
Теория искусственного интеллекта
Создание высокоавтоматизированных производств предполагает автоматизацию не только физического, но и умственного труда человека. В последние ...
Введя затем понятие лингвистической переменной и допустив, что в качестве ее значений (термов) выступают нечеткие множества, Л.Заде создал аппарат для описания процессов ...
Так как результатом нечеткого логического вывода может быть несколько термов выходной переменной, то правило дефаззификации должно определить, какой из термов выбрать.
Раздел: Рефераты по информатике, программированию
Тип: учебное пособие
Семантические типы предикатов, выраженных глаголами эмоционально ...
Башкирский государственный педагогический университет Факультет иностранных языков Кафедра английского языка Специальность: английский язык Курс V ...
Отсюда и множество классификаций предикатов по ролевой семантике.
Мы приводим лишь некоторые свойства данного типа предикатов которые, как мы полагаем, наиболее ярко отражают семантическую сущность лингвистических гештальтов, а именно: понятие ...
Раздел: Топики по английскому языку
Тип: топик
Интерпретатор языка Пролог
Аннотация В рамках данного дипломного проекта разработан интерпретатор языка Пролог с визуальным вводом программы и возможностью работы с ...
Настоящая пояснительная записка включает в себя описание механизма вывода в языке Пролог и роли логического программирования в развитии вычислительной техники.
В общем случае любую подстановку можно представить в виде множества упорядоченных пар Пара означает, что повсюду переменная заменяется термом .
Раздел: Рефераты по информатике, программированию
Тип: дипломная работа
Системное автоматизированное проектирование
Радиотехники, Электроники и Автоматики Московский Государственный Институт(Технический Университет) С.А.Шишов Лекции по дисциплине: "Системное ...
Многие продукционные модели представления знаний опираются на аппарат нечетких множеств и нечеткой логики Л.Заде с лингвистическими, а не числовыми значениями истинности.
Посылки к правилам формируются с помощью нечетких множеств, причем допускается использование нечетких чисел и лингвистических переменных.
Раздел: Рефераты по информатике, программированию
Тип: реферат