Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пролог.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
34 Кб
Скачать
☆

Предикат классификации list.

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

List(L):- L=[].

List(L):-L=[H|T], List(T).

Или

List([]).

List([_|T]):-list(T).

Принадлежность элемента списку. Member(el,list).

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

Member(X,[X|_]).

Member(X,[_|T]) :-member(X,T).

Member([b,c],[a,[b,c]]).

X=[b,c]

[X,_]=[a,[b,c]]

X=[b,c]!=a

X=[b,c]=[[b,c]]. – true

Member(a,[b,c]).

X=a!=b

X=a!=c

X=a!=[].- нельзя применить ни первое ни второе правило.

Есть ли какое то X, которое является элементом списка – member(X,[a,b]).

Вычисление длинны списка.

List_length(list,length).

Декларативная трактовка. Для любого непустого списка L его длина на 1 больше длины хвоста. Длина пустого списка равна 0. Процедурная трактовка. Для того чтобы вычислить длину непустого списка необходимо вычислить длину хвоста и прибавить единицу.

List_length([],0).

List_ length ([_|T]):-list_length(T,NN),N is NN+1.

Слияние списков.

Пусть даны списки L1 и L2, нужно построить список L3, состоящий из элементов списков л1 и л2.

Традиционно этот предикат называется append.

Свойство отношение append. Если список л1 пустой то л2 совпадает с л3.

Append([],L,:L).

Append([h1|t1],l2,[h1|t3]):-append(t1,l2,t3).

Нечеткие множества и их применение.

Нчеткие мнржества.

В классической теории множеств предполагается что есть некотрое множество из элементов котрого моэно строить другие множества. Это множество называется универсальным. Предположим что есть некоторые подмножества универсального множества. Возьмем некоторое X – подмножество универсального множества. Для каждого X мы можем однозначано сказать пренадлежит ли он множеству A или нет. Это можно описать с помощью характеристической функции которая приобретает два значения: m(x)=1 :x принадл A 0: x не принадл A.

В теории нечетких множеств отказываются от бинарного характера характеристической функции и предполагается что принадлежность элемента к множеству может измеряться любыми значениями из отрезка [0,1]. В теории нечетких множест используется другая терминология. Универсальное множество называется носителем. Вместо хар-ой функции используется понятие функции принадлежности, а значение функции принадлежности описывает степень принадлежность заначения X к множеству. Если в т множеств каждое множество имело четкие границы, то в теории нечетких множеств помимо этого существуют элементы, которые принадлежат множеству с некоторой степенью достовености, поэтому граница множества становятся размытыми или нечеткими.

Функция принадлежности – функция, областью определения которой является носитель, а областью значений – единичный интервал. Нечетким множеством называется совокупность пар A=<X,mu(x)|x пр U> A={<=<X,mu(x)>| x пр U }. Пример U={a,b,c,d,e}, A={<a,0>,<b,0.1>}. Путь носитель U – Множество действительных чисел, неч мн-во а – множество чисел, близких к 10. Тогда функцию принадлежности можно задать следующим образом.

mu(x)=1/(1+|x-10|^m)

Нечеткое множество – оптимальный возраст работающего.

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

C= A  B mu(x)=max (mua(x),mub(x))

C= A  B mu(x)=min(mua(x),mub(x))

C=^A mu(x)=1-mua(x)

Нечеткие и лингвистические переменные. Нечеткая переменная это набор (x,U,A), где x- имя переменной, U- носитель, A – нечеткое подмножество носителя. Если мы описываем некоторое свойство текстовыми характеристиками, то это свойство можно описывать переменными с текстовыми значениями. Такая переменная называется лингвистический. Каждое значение лингв переменной явл нечеткой переменной.

Формальное определение лингв переменной.

(X,T(x),U,G,M)

Лп – совокупность свойств, где X – имя лингвистической переменной, T(x)- множество текстовых значений лингвистической переменной, каждая из которых нечеткая переменная. G синтаксическое правило, позволяющее порождать значение лингв переменной. M – семантической правило, которое ставит каждому четкому значению его смысл.

Пример

Пусть эксперт определяет толщину с помощью понятий малая, средняя, большая.

X-толщина изделия.

T(X) –{ малая толщина, средняя толщина, большая толщина }

U – [10,80]

G – процедура образования новых термов, для чего используются связи “и” “или” и можификаторы очень , не , слегка

M – правило которое позволяет связать новые термы с функциями принадлежности. Функция принадлежности для понятия малая толщина. На каждый вариант T(x) строится график, показывающий зависимость mu толщины – т е задается нечеткое множество.

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

Z-функция, S- функция, Л – функция, П-Функция.

Подбор ф пр выполняется сл образом:

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

  2. Определяются значения для которых ф-я при-ти имеет значение 0.

  3. После выбора экстремальных значений промежуточный строятся с помощью Л или П функция

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