Главная > Информатика, программирование > Поняття лінгвістичної змінної. Мова програмування Prolog

Поняття лінгвістичної змінної. Мова програмування Prolog


25-01-2012, 11:04. Разместил: tester5

Зміст

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 намагається знайти прив'язки (значення) змінних, при яких цільової предикат приймає значення істинності.

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

У всіх інших відносинах Пролог не відрізняється від традиційних мов програмування. Як і у випадку програ...ми написаної на будь-якому іншому мовою, Пролог-програма призначена для вирішення окремої задачі.

Пролог (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 DH 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. sedok.narod.ru/fuzzy.html - Ключові поняття теорії нечітких множин.

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

3. .intuit.ru/department/ds/fuzzysets/9/

4. progopedia.ru/language/prolog/