русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


ЛЕКЦИЯ 1


Дата додавання: 2014-04-10; переглядів: 1055.


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

Правила группируются по атрибутам. Для каждой группы правил указывается условие (метаправило), в каком случае применять правила этой группы. Это условие касается содержимого рабочей памяти. Если выполняется условие метаправила, то в конфликтный набор включаются только правила из группы, (относящейся) определяющейся метаправилом.

Использование того или иного алгоритма разрешения конфликтов.

Правила применяются по порядку их следования в БП.

2.2. Первым применяется правило с более жесткой условной частью (например, имеющее много условий в правой части). Считается, что в этом случае содержимое вывода будет более высокого уровня (“качественней”).

Правила применяются в зависимости от их приоритета.

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

Нечеткие знания

Правила, содержащие нечеткие выводы. Формальная структура:

ЕСЛИ А ТО В с НАДЕЖНОСТЬЮ С

ЕСЛИ А И С ТО В с ДОСТОВЕРНОСТЬЮ С

Или

Рк : a1 ˄ a2 -> a3(Cк), где a3(Ск) – факт a3 и его достоверность Ск;

Связи в графе логического вывода:

· Связь И соответствует правилу P1: если Х и Y, то А (с С1) (предпосылки X иY используются только вместе).

· Связь ИЛИ соответствует правилу P2: если Х или Y, то А ( с С2) (предпосылки X и Y используются отдельно). Или в виде двух правил:

Р21 : если Х, то А с С21

Р22 : если Y, то А с С22

· Связь КОМБ (использование независимых доказательств)

P31: если Х, то А (с С31)

Р32 : если Y, то А (с С32) (предпосылки Х и Y используются независимо, но обязательно вместе для вывода А).

Различие связей И, ИЛИ и КОМБ, с точки зрения использования нечеткой информации, заключается в способах определения надежности заключения на основе надежности данных (результатов доказательств) и степени надежности правил.

Так, если имеем предпосылку X ˄ Y (X и Y, связь ‘И’) и Сх и Су – степени их надежности, то очевидно Cx^y = min{Cx, Cy}, т.к. для связи “^”, то истинность предпосылки не может быть больше истинности каждого факта. Аналогично для X  Y имеем Cx\/y = max{Cx, Cy}.

Метод MYCIN использования нечетких знаний

MYCIN – экспертная система по идентификации микроорганизмов в крови.

Надежность знаний в MYCIN представляется коэффициентом уверенности CF. –1 <= CF <=1.

-1 – заведомая ложь;

1 – заведомая истина.

Здесь

P(A) – априорная вероятность события (факта) А.

P(A|X) – апостериорная вероятность А, т.е. А при условии Х.

При процедуре вывода прежде всего определяют CF предпосылки: CFn, т.е. определяют степень достоверности условий условной части правила. Таким образом для правила

1. P : X ->A, имеем CFn = CF[X| • ] ;

2. связь ”И”. Правило P : X и Y -> A , имеем CFn = CF[X и Y| • ]= min{CF[X| • ], CF[Y| • ]};

3. связь ”ИЛИ”. Правило P : X или Y -> A, имеем CFn = CF[X или Y| • ]= mах{CF[X| • ], CF[Y| • ]}.

Если CFn>0, то заключению А правила присваивается коэффициент уверенности CF[A| · ] по формуле: CF[A| · ] = CFp · CFn, т.е. вывод достоверен с коэффициентом CF[A| · ].

4. Связь КОМБ. Отдельно определяются CF[A| X] и CF[A| Y] (как для связей И/ИЛИ), и для определения коэффициента уверенности связи КОМБ действует комбинированная функция:

Коэффициент уверенности, полученной из трех и более независимых продукций, может быть получен в результате последовательного применения указанных формул CF[A|(X,Y,Z)] = CF[A|(CF[A|(X,Y)],Z)].

Субъективный байесовский метод

В этом методе связи И, ИЛИ специально не оговариваются, как в MYCIN, а выводы делаются следующим образом:

Пусть О(А) – априорные шансы события А и О(А|X) - апостериорные шансы

Пусть , тогда:

и для независимых X и Y.

Таким образом, имея априорную вероятность гипотезы Р(А) (либо априорные шансы О(А)) и правдоподобные отношения λх и λy, приписанные правилам, можно определить по формулам апостериорные шансы и апостериорную вероятность. При этом Р(А) и λх, λy – данные, задаваемые на основе знаний эксперта.

Но выводы могут быть получены, только если факты X и Y подтверждены с вероятностью 1. Если же используются ненадежные данные, то применяется следующий приближенный метод:

· Если 0<=Р(Х|•)<=P(X), то соответствующее правило ничего не дает и не влияет на дальнейшие выводы. В этом случае событие А имеет только априорную вероятность.

· Если же , то влияние факта X на А задается линейной функцией. При этом отношение правдоподобия определяется так:

Т.е. на входе нам известны P(X), P(Y), P(A), P(X|A), P(X|), P(Y|A), P(Y|). Находим λх, λy, O(A). Затем из формулы находим P(A|X). Для нечетких знаний тоже самое с λх’.

Экспертные системы как эволюционные динамические системы

Пусть X – нуль-единичный вектор размером N,

, - факт.

Продукция вида (1) переводит состояние X в новое состояние Y:

Причем перевод согласован следующим правилом:

То есть в первом случае продукция – применима, во втором – нет, и состояние не меняется.

Прямую цепочку рассуждений для таких ЭС можно представить так:

пусть в БП имеются продукции:

и в некоторый момент времени состояние системы характеризуется вектором состояния

.

Применив все Pi к вектору , получим набор новых состояний

.

Объединим множество и . Получим множество состояний, которое может быть достигнуто из не более чем за 1 шаг: .

- это множество, состоящее из состояний y, каждое из которых равно (принадлежит) либо является результатом применения некоторой продукции для некоторого .

Нетрудно определить множество состояний , достижимых из не более чем за шагов:

,

т.е. достигается за один шаг из и т.д.

Это множество называется множеством достижимости за K шагов.

Составные продукции

Среди всех цепочек, выводящих один факт, можно выделить кратчайшую (оптимальную):

.

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

Для цепочки вывода (не обязательно оптимальной)

.

Образуем следующие множества:

– множество элементарных условий (левых частей) всех продукций ;

– множество заключений (правых частей) продукций;

– множество исходных фактов (они не выводятся продукциями);

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

Алгоритм построения заключительной составной продукции: достаточно сопоставить множества и и вычеркнуть общие факты (т.е. найти множество ). Если при этом получится, что множество содержит один терминальный факт, то заключительная продукция будет получена, причем где .

Для початку роботи з масивом готуємо місце в пам'яті у вигляді прямокутника, що має задану кількість рядків і стовпчиків. Для цього описуємо його в розділі оголошень, використовуючи зарезервоване словоАrray, після якого в квадратних дужках вказуємо розмірність масиву, причому враховуємо, що на першому місці вказуються індекси рядків, а на другому - стовпчиків, і обов'язково тип елементів.

Опис двовимірного масиву
І-й спосіб

Const n:=100;

m:=100;

Var A:array[1..n,1..m] of real;

D:array[1..10,1.100] of integer;

ІІ-й спосіб

type My2DMasyv=array[1..n,1..m] of<назва базового типу>;

varb1, b2, b3: My2DMasyv;

ІIІ-й спосіб Сталий масив

type MasyvTabel=array[1..5,1..4] ofinteger;

const b: MasyvTabel = ((8,9,10,9),(7,8,9,8),(8,8,8,9),(9,9,10,10),(9,9,11,10));

або

const b:array[1..5,1..4] ofinteger =((8,9,10,9),(7,8,9,8),(8,8,8,9),(9,9,10,10),(9,9,11,10));

Звертання до елементу двовимірного масиву:
Ім'я_масиву[<індекс_рядка>, <інд_стовпчика>]

Наприклад, b[1,1] – елемент, який знаходиться на перетині першого рядка і першого стовпця, b[3,4] – елемент, який знаходиться на перетині третього рядка і четвертого стовпця.

 

A[1,1]=1;

A[1,2]=4; A[1,3]=7; A[2,3]=0; A[3,4]=12

 

Заповнення масиву:

  • з клавіатури:

for і:=1 to n do

for j:=1 to m do

begin

write ('введіть А[',i,',',j,']: ');

readln (А[i,j]);

end;

  • за формулою:

forі:=1to ndo

for j:=1tomdo

А[і,j]:=i*i-10 {або будь-яка формула};

  • випадковим чином із проміжку [K,L]:

forі:=1 tondo

forj:=1tomdo

А[і,j]:=random(L-K)+K;

 

Виведення двовимірного масиву на екран

 

for і:=1 to n do

begin

for j:=1 to m do

write(A[i,j]:8); {виведення в рядок}

writeln; {перехід на новий рядок}

end;

 

Для роботи з масивом потрібен будь-який оператор повторення. У двовимірному масиві необхідно використовувати їх два: один цикл, внутрішній, потрібен для переходу між елементами рядка (тобто, по стовпчиках), а другий, зовнішній, - для переміщення між рядками.
Якщо в матриці кількість рядків і стовпчиків однакова, то таку матрицю називають квадратною (на відміну від звичайної прямокутної таблиці). Тільки в квадратних матрицях існують головна та бічна діагоналі.

 

Елементи, що стоять на головній діагоналі, мають індекси (1, 1), (2, 2), (3, 3), ... (і, і). ..., (n, n), тобто номер рядка дорівнює номеру стовпчика! Елементи, що стоять на бічній діагоналі, мають такі індекси (1, n), (2, n-1), (3, n-2), ..., (і, n+1-і), (n,1), тобто індекси елементів взаємозалежні за формулою j=n+1-i.
Задача Скласти програму для формування таблиці множення, занесення її до двовимірного масиву та виведення масиву на екран.

programTABLICA;

const n=910;

var P: array[1..n,1..n] of integer;

i ,j: integer;

begin

for i:=1 to n do

begin

forj:=1 to n do

begin

p[i,j]:=i*j;

write(p[i,j];

end;

writeln; {перехід на новий рядок}

end

end.

Задача Обчислити суму елементів урядку, стовпці чи вздовж діагоналі матриці.

Н-д, суму елементів другого рядка обчислюють так:

s:=0;

for j:=1 to m do

s:=s+a[2,j];

 

 

Н-д, суму елементів, які знаходяться вздовж діагоналі квадратної матриці обчислюють так:

S1:=0;

for i:=1 to n do

s1:=s+a[i,i];

Н-д, Вивести на екран елементи головної діагоналі

квадратної матриці можна так:

for i:=1 to n do

write (a[i,i]:5);

Н-д, Вивести на екран елементи допоміжної діагоналі

квадратної матриці :

Сума номерів рядка і стовпця: N+1; індекси елементів

взаємозалежні за формулою j=n+1-i.

for i:=1 to n do

write (a[i, N+1-i]:5);

Задача Перестановка рядків і стовпців. В матриці з N рядків і М стовпців поміняти місцями 2-й і 4-й рядок.

for j:=1 to m do

begin

c:=A[2,j];

A[2,j]:=A[4,j];

A[4,]:=c;

end;

Задача До третього стовпця матриці додати шостий.

for i:=1 to n do

A[I,3]:=A[I,3]+A[I,6];

Завдання для самостійного виконання:

1. Побудувати і вивести на екран двовимірний масив dij=2icosj, i=1,…4, j=1,…4. Знайти мінімальний елемент масиву і добуток від’ємних елементів масиву.

2. Дано масив A(1:5,2:6). Скласти програму заміни всіх його елементів, що більші за число10, на нулі. Вивести масив на екран.

Заповнити двовимірний масив з трьох рядків і чотирьох стовпців значеннями з клавіатури, вивести масив на екран у вигляді таблиці і знайти суму елементів третього стовпця.

 

 

ЛЕКЦИЯ 1


<== попередня лекція | наступна лекція ==>
Критерій знаків, як метод статистичного аналізу | Методика викладання економічних дисциплін. ВСТУП


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн