Содержание
1. Нечеткая лингвистическая переменная
2. Пролог - язык программирования ЭС
Используемая литература
Вопрос 24. Нечеткая лингвистическая переменная
Понятие лингвистической переменной
Лингвистическая переменная отличается от числовой переменной тем, что ее значениями являются не числа, а слова или предложения в естественном или формальном языке. Поскольку слова, в общем, менее точны, чем числа, понятие лингвистической переменной дает возможность приближенно описывать явления, которые настолько сложны, что не поддаются описанию в общепринятых количественных терминах. В частности, нечеткое множество, которое представляет собой ограничение, связанное со значениями лингвистической переменной, можно рассматривать как совокупную характеристику различных подклассов элементов универсального множества. В этом смысле роль нечетких множеств аналогична той роли, которую играют слова и предложения в естественном языке. Например, прилагательное "КРАСИВЫЙ" отражает комплекс характеристик внешности индивидуума. Это прилагательное можно также рассматривать как название нечеткого множества, которое является ограничением, обусловленным нечеткой переменной "КРАСИВЫЙ". С этой точки зрения термины "ОЧЕНЬ КРАСИВЫЙ", "НЕКРАСИВЫЙ", "ЧЕРЕЗВЫЧАЙНО КРАСИВЫЙ", "ВПОЛНЕ КРАСИВЫЙ" и т.п. — названия нечетких множеств, образованных путем действия модификаторов "ОЧЕНЬ, НЕ, ЧЕРЕЗВЫЧАЙНО, ВПОЛНЕ" и т.п. на нечеткое множество "КРАСИВЫЙ". В сущности, эти нечеткие множества вместе с нечетким множеством "КРАСИВЫЙ" играют роль значений лингвистической переменной "ВНЕШНОСТЬ".
Важный аспект понятия лингвистической переменной состоит в том, что эта переменная более высокого порядка, чем нечеткая переменная, в том смысле, что значениями лингвистической переменной являются нечеткие переменные. Например, значениями лингвистической переменной "ВОЗРАСТ" могут быть: "МОЛОДОЙ, НЕМОЛОДОЙ, СТАРЫЙ, ОЧЕНЬ СТАРЫЙ, НЕ МОЛОДОЙ И НЕ СТАРЫЙ" и т.п. Каждое из этих значений является названием нечеткой переменной. Если
— название нечеткой переменной, то ограничение, обусловленное этим названием, можно интерпретировать как смысл нечеткой переменной .Другой важный аспект понятия лингвистической переменной состоит в том, что лингвистической переменной присущи два правила:
1. Cинтаксическое, которое может быть задано в форме грамматики, порождающей название значений переменной;
2. Cемантическое, которое определяет алгоритмическую процедуру для вычисления смысла каждого значения.
3. Лингвистическая переменная характеризуется набором свойств
, в котором:4.
— название переменной;5.
обозначает терм-множество переменной , т.е. множество названий лингвистических значений переменной , причем каждое из таких значений является нечеткой переменной со значениями из универсального множества с базовой переменной ;6.
— синтаксическое правило, порождающее названия значений переменной ;7.
— семантическое правило, которое ставит в соответствие каждой нечеткой переменной ее смысл , т.е. нечеткое подмножество универсального множества .8. Конкретное название
, порожденное синтаксическим правилом , называется термом. Терм, который состоит из одного слова или из нескольких слов, всегда фигурирующих вместе друг с другом, называется атомарным термом. Терм, который состоит из более чем одного атомарного терма, называется составным термом.К примеру, зададим лингвистическую переменную 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 пытается найти привязки (значения) переменных, при которых целевой предикат принимает значение истинности.
Структура программы на Прологе отличается от структуры программы, написанной на процедурном языке. Пролог-программа является собранием правил и фактов. Решение задачи достигается интерпретацией этих правил и фактов. При этом пользователю не требуется обеспечивать детальную последовательность инструкций, чтобы указать, каким образом осуществляется управление ходом вычислений на пути к результату. Вместо этого он только определяет возможные решения задачи и обеспечивает программу фактами и правилами, которые позволяют ей отыскать требуемое решение.
Во всех других отношениях Пролог не отличается от традиционных языков программирования. Как и в случае программы написанной на любом другом языке, Пролог-программа предназначена для решения отдельной задачи.