Вы находитесь на странице: 1из 12

Министерство Образования и Науки РФ

ФГБЩУ ВО «Дагестанский Государственный Технический Университет»


Факультет КТВТиЭ Кафедра РПИС

ОТЧЕТ
к лабораторной работе №1
на тему:
«Выполнение и алгоритмизация теоретико-множественных
операций над нечеткими множествами»
По дисциплине: «Дискретная математика»

Выполнила: студентка 2-го курса


группы У-033 Ахмедова Р.Р.
Проверил: профессор Мелехин В. Б.

Махачкала 2021
Теоретические сведения необходимые для выполнения
лабораторной работы
Нечетким множеством, определенным на элементах исходного базового
множества
A={a i }, i=1,2 ,. . ., n1 , называется и обозначается множество пар
~
A = ¿¿ , где μ(a k ) – функция принадлежности, определяющая
~
степени принадлежности
a
элементов k к нечеткому множеству A .
~
Таким образом, к нечеткому множеству A относятся такие элементы базового
множества
ak ∈ A , для которых выполняется условие μ(a k )> 0 . Факт
~
принадлежности элемента
ak ai к нечеткому множеству A обозначается следующим
~

образом ak ∈ A . Степени принадлежности μ(a k ) элементов a k к нечеткому


~
множеству A , как правило, определяются экспертных путем на интервале [0,1].
~
a
Отсюда функцию принадлежности элементов k к нечеткому множеству A можно
представить, например, в следующей треугольной форме (см. рис. 1.1.1).
~
Далее для простоты изложения, нечеткие множества B будем обозначать
просто через B . Пусть на элементах базовое множество
X ={x k }, k=1,2 , .. . , n1

определены следующие два нечетких множества:


X 1 =¿ ¿ и
X 2 =¿ ¿ .

Рассмотри теоретико-множественные операции над нечеткими множествами.


Пресечением нечётких множеств  Х1 и Х2 называется и обозначается нечеткое
множество
X 3 =X 1∩ X 2 X3 ,
X 3 =¿ ¿ , состоящее из элементов

принадлежащих множествам Х1 и Х2. Степень принадлежности μ( x i ) элементов i к


x

множества X3, определяется следующим образом: μ3 ( x i )=min( μ1 ( x i ), μ2 (x i )) .

1
 (a k )
~
A

a k* ak  A
*
a k

1
Следует отметить, что операция пересечения нечетких множеств
естественным образом распространяется на произвольное их количество m. При
этом результирующее множество состоит только из элементов, которые
принадлежат всем участвующим в пересечении нечетким множествам. Степень
принадлежности элементов результирующего множества определяется следующим
образом: μ3 ( x i )=min( μ1 ( x i ), μ2 (x i ),. .. , μm ( x i ))
Пример 1.1.1. Пусть заданы следующие два нечетких множеств:
X 1 =¿ ¿ ; X 2 =¿ ¿ .
Тогда пересечением данных нечетких множеств будет множество:
X 3 =¿ ¿ .

Объединением  двух нечётких множеств  Х1 и Х2 называется и обозначается


нечеткое множество 3 1 2 , X =X ∪ X
3 X
, состоящее из
=¿ ¿
элементов входящих или в множество Х1 , или в множество элементов Х2. Степень
x
принадлежности μ( x i ) элементов i к множеству X3, для одноименных элементов из
множеств Х1 и Х2 определяется следующим образом:

μ3 ( x i )=max(μ 1 ( x i ), μ 2 ( x i )) .

Все разноименные элементы из множеств Х1 и Х2 также  входят в состав


множества X3 со степенями их принадлежности μ j ( x i ), j=1,2 . к этим множествам.
Операция объединения нечетких множеств также естественным образом
распространяется на произвольное их количество m. При этом результирующее
множество состоит из элементов, которые входят хотя бы в одно из исходных
множеств участвующие в объединении. Степень принадлежности одноименных
элементов из различных множеств для результирующего множества определяется
следующим образом: μ3 ( x i )=max(μ 1 ( x i ), μ 2 ( x i ), .. . , μ m (x i ))
Пример 1.1.2. В результате объединения двух нечетких множеств
X 1 =¿ ¿ и X 2 =¿ ¿ получится
следующее нечеткое множество:
X 3 =¿ ¿ .
Дополнением нечеткого множества Х  называется и обозначается нечеткое
¿
μ ( xi )
¿

множество X функции принадлежности X , для элементов которого


определяется следующим образом:

μ ( x i )=(1−μ X ( xi ))
¿
X .
Пример 1.1.3. Так, дополнением для нечеткого множества
X 1 =¿ ¿ является следующее нечеткое множество

2
¿
X 1 =¿ ¿ , а для множества
¿
X 2 =¿ ¿ – множество X 2 =¿ ¿ .
Следует отметить, что большое значение для практического применения
математического аппарата нечетких множеств имеет сравнение между собой
нечетких множеств Х1 ,  Х2  и определение степени их нечеткого равенства
ρ( Х 1 , Х 2 ) .

Говорят, что нечеткое множество Х1  содержится в нечетком множестве Х2 ,


если:
– все элементы множества Х1 принадлежат и множеству Х2;
– для каждой пары одноименных (одинаковых) элементов из множеств  X1  и
Х2 выполняется условие: μ1 ( x i )≤μ2 ( x i ) .
Следует отметить, что если хотя бы для одной пары одноименных элементов
из нечетких множеств Х1 и Х2  условие μ1 ( x i )≤μ2 ( x i ) не выполняется, то можно
говорить только о степени вложения ρ( X 1 ⊂ X 2 ) нечеткого множества Х1 в нечеткое
множество  Х2 , которая определяется следующим образом:
m1 m1 m1

ρ( X 1 ⊂ X 2 )= ¿ ( μ2 ( x i )→ μ1 ( xi ))=min ( (1−μ1 ( xi )) Vμ2( x i ) )=min ( max( 1−μ 1 ( x i )) , μ2 ( x i ) )


i=1 i=1 i=1

,
где & - нечеткая логическая операции «И», которая аналогично как и
одноименная теоретико-множественная операция пересечения нечетких множеств
выполняется путем определения минимума попадающих под нее степеней
принадлежности сравниваемых элементов; → – логическая операция нечеткой
импликации; V - нечеткая логическая операции «или», которая аналогично как и
теоретико-множественная операция объединения нечетких множеств выполняется
путем определения максимума попадающих под нее степеней принадлежности
сравниваемых элементов.
Пусть два нечетких множество Х1 , Х2  состоят из одинакового количества n
одноименных элементов. Тогда степень их нечеткого равенства ρ( Х 1 , Х 2 ) можно
определить следующим образом:
n n
ρ( Х 1 , Х 2 )=min ρi ( μ 1 ( x i ) , μ 2 ( x i ) )=min ( μ1 ( x i )↔ μ2 ( x i ))
i=1 i =1 ,

где ρ( μ1 ( x i ), μ2 (x i )) – степень нечеткого равенства одноименных элементов i


x
принадлежащих обеим множествам Х1 , Х2 ; ↔ – логическая операция нечеткой
эквивалентности одноименных элементов
x i ∈ X 1 и x 1 ∈ X 2 , которая выполняется
следующим образом:

ρ( μ1 ( x i ), μ2 (x i ))=μ 1 ( x i )↔ μ 2 ( x i )=( μ1 ( x i )→μ 2 ( x i ))∧( μ2 ( xi )→ μ1 ( x i ))=


¿ ¿
¿( μ1 (x i )V ( μ 2( x i ))∧( μ2 ( xi )Vμ 1 ( x i ))=min (max(1−μ 1 ( x i ),μ 2 ( x i )),max (1−μ2 ( x i ), μ1 (x i )) .

3
Для принятия решений по полученным результатам такого сравнения между
собой нечетких множеств Х1 и Х2 применяется следующее эвристическое правило:
а) если степень нечеткого равенства сравниваемых между собой множеств
Х1 и Х2 определяется соотношением ρ( Х 1 , Х 2 )>0,5 , то принимается решение, что
они нечетко равны между собой, что обозначается следующим образом X 1 ≈X 2 . В
противном случае, следует перейти к п. б;

б) в случае, когда ρ( Х 1 , Х 2 )<0,5 , то принимается решения, что сравниваемые


между собой нечеткие множества не равны между собой и это обозначается
следующим образом X 1 ≠X 2 . В противном случае, следует перейти к п. в;

в) если степень ρ( Х 1 , Х 2 )=0,5 , то сравниваемые нечеткие множества Х1 и Х2


являются взаимно индифферентными, что обозначается X 1 ~ X 2 . В этом случае
условие равенства или неравенства нечетких множеств определяется на
усмотрение лица принимающего решения.
Пример 1.1.4. Пусть заданы следующие два нечетких множества:
X 1 =¿ ¿ и X 2 =¿ ¿ . Степень
нечеткого равенства ρ( Х 1 , Х 2 ) данных множеств будет определяться следующим
образом:
ρ( Х 1 , Х 2 )=min ((0,3 ↔0,7 ),(0,5 ↔0,3 ),(0,6 ↔ 0,3)=min(0,3 ;0,5 ;0,4 )=0,3 .

Таким образом, выполнение на ЭВМ рассмотренных выше теоретико-


множественных операций над нечеткими множествами сводится к циклическому
сравнению элементов одного множества с элементами другого множества и
формирования массива данных в соответствии с правилами выполнения над ними
определенной теоретико-множественной операции.

Выполнение лабораторной работы №1


Цель работы: получить практические навыки по выполнению теоретико-
множественных операций над нечеткими множествами с применением ЭВМ.
Ход работы:

1. Сформировала произвольным образом исходные нечеткие множества Х1 и Х2.


X1 = {<0,5;2>,<0,2;3>,<0,9;5>,<0,5;6>,<0,4;7>,<0,6;10>,<0,2;12>,<0,9;13>,<0,3;14>,
<0,2;17>,<0,8;19>,<0,6;20>}
X2 = {<0,7;1>, <0,3;4>,<0,4;5>,<0,6;7>,<0,7;8>,<0,8;9>,<0,2;11>,<0,5;13>,<0,1;15>,
<0,8;16>,<0,3;18>,<0,4;20>}
а) Выполнила «вручную» следующие теоретико-множественные операции над
полученными нечеткими множествами (пересечение,
объединение и дополнение нечетких множеств)
Пересечение:
X1∩X2 =X3= {<0,4;5>, <0,4;7>, <0,5;13>,<0,4;20>}

4
Объединение:
X1∪X2 = {<0,7;1>,<0,5;2>,<0,2;3>,<0,3;4>,<0,9;5>,<0,5;6>,<0,6;7>,<0,7;8>,<0,5;9>,
<0,6;10>,<0,2;11>,<0,2;12>,<0,9;13>,<0,3;14>,<0,1;15>,<0,8;16>,<0,2;17>,<0,3;18>,
<0,8;19>,<0,6;20>}
Дополнение:
¿
X 1 = {<0,5;2>, <0,8;3>,<0,1;5>,<0,5;6>,<0,6;7>,<0,4;10>,<0,8;12>,<0,1;13>,<0,7;14>,
<0,8;17>,<0,2;19>,<0,4;20>}
¿
X 2 = {<0,3;1>, <0,7;4>,<0,6;5>,<0,4;7>,<0,3;8>,<0,2;9>,<0,8;11>,<0,5;13>,<0,9;15>,
<0,2;16>,<0,7;18>,<0,6;20>}
б) Построила блок-схемы алгоритмов выполнения различных теоретико-
множественных операций над нечеткими множествами Х1 и  Х2 на ЭВМ.
Пресечение: Объединение: Дополнение:
НАЧАЛО НАЧАЛО

Формирование Формирование
мн-в Х1 и Х2 мн-в Х1 и Х2
Формирование
мн-в Х1 и Х2
X3 = X1∩X2

НАЧАЛО
Вывод
КОНЕЦ

Вывод Вывод 1 и 2
X3 = X1∪X2

КОНЕЦ КОНЕЦ

в) По полученным блок схемам алгоритмов разработала программы


реализации теоретико-множественных операций над нечеткими множествами
Х1 и Х2 на языке программирования Java.
Данная программа имеет ограниченный функционал, так как была разработана
исключительно для моего случая. Для других пар нечетких множеств возможно
появится необходимость внесения правок в код. Для удобства я использовала
двумерные массивы и методы, в которые вносила необходимые параметры.

public static void main(String[] args) {


/* Формирование нечетких множеств Х1 и Х2, где первое число каждого встроенного
массива указывает на степень принадлежности, а второе - на элемент нечёткого
множества. */
int x1[][] = {{5, 2}, {2, 3}, {9, 5}, {5, 6}, {4, 7}, {6, 10}, {2, 12}, {9, 13}, {3, 14}, {2, 17},
{8, 19}, {6, 20}};
int x2[][] = {{7, 1}, {3, 4}, {4, 5}, {6, 7}, {7, 8}, {8, 9}, {2, 11}, {5, 13}, {1, 15}, {8, 16},
{3, 18}, {4, 20}};

5
output("X1", x1); //вывод в консоли нечеткого множества Х1 через метод вывода
output("X2",x2); //вывод в консоли нечеткого множества Х2 через метод вывода
int sim = 0;
for (int i = 0; i < x1.length; i++)
for (int j = 0; j < x2.length; j++)
if (x1[i][1] == x2[j][1]) sim++; //подсчет количества пересечений по элементам
peresechenie(x1,x2,sim, "X1∩X2");
obedinenie(x1,x2,sim,"X1∪X2");
dopolnenie(x1,"-X1");
dopolnenie(x2,"-X2");
}
/* Метод реализации операции пересечения нечётких множеств, параметры метода:
два массива, с которыми будет работать метод, количество пересечений, имя
переменной при выводе. */
static void peresechenie(int x1[][],int x2[][], int sim, String name){
int x_per[][] = new int[sim][2]; // введение массива, который будет хранить в себе
данные множества пересечений
int c = 0;
for (int i = 0; i < x1.length; i++)
for (int j = 0; j < x2.length; j++) {
if (x1[i][1] == x2[j][1] && x1[i][0] <= x2[j][0]) {
x_per[c][0] = x1[i][0];
x_per[c][1] = x1[i][1];
c++;
} else if (x1[i][1] == x2[j][1] && x1[i][0] >= x2[j][0]) {
x_per[c][0] = x2[j][0];
x_per[c][1] = x2[j][1];
c++;
}
}
output(name, x_per);
}
/* Метод реализации операции объединения нечётких множеств, параметры метода:
два массива, с которыми будет работать метод, количество пересечений, имя
переменной при выводе. */
static void obedinenie (int x1[][], int x2[][],int sim, String name){
int k = 0, j = 0, i = 0, x_ob[][] = new int[x1.length+ x2.length-sim][2];
while (i < x_ob.length) {
if (k != x1.length && j != x2.length) {
if (x1[k][1] < x2[j][1]) {
x_ob[i][0] = x1[k][0];
x_ob[i][1] = x1[k][1];
k++;
} else if (x1[k][1] > x2[j][1]) {
x_ob[i][0] = x2[j][0];
x_ob[i][1] = x2[j][1];
j++;
} else {
if (x1[k][0] > x2[j][0]) {

6
x_ob[i][0] = x1[k][0];
x_ob[i][1] = x1[k][1];
k++;
j++;
} else {
x_ob[i][0] = x2[j][0];
x_ob[i][1] = x2[j][1];
j++;
k++;
}
}
i++;
} else if (k == x1.length) {
x_ob[i][0] = x2[j][0];
x_ob[i][1] = x2[j][1];
j++;
i++;
} else {
x_ob[i][0] = x1[k][0];
x_ob[i][1] = x1[k][1];
k++;
i++;
}
}
output(name,x_ob);
}
/* Метод реализации операции дополнения нечётких множеств, параметры метода:
массив, с которым будет работать метод, имя переменной при выводе. */
static void dopolnenie (int a[][], String name){
int x_dop[][]= new int[a.length][2];
for ( int l = 0; l < a.length; l++) {
x_dop[l][0] = 10-a[l][0];
x_dop[l][1] = a[l][1];
}
output(name, x_dop);
}
/* Метод вывода нечётких множеств, параметры метода:
имя переменной при выводе, массив, с которым будет работать метод. */

static void output(String name, int x_out[][]){


System.out.print( name +" = {");
for (int i = 0; i < x_out.length ; i++) {
System.out.print("<0," + x_out[i][0]+";"+x_out[i][1]+">");
if(i!=x_out.length-1) System.out.print(",");
}
System.out.println("}");
}
}

7
г) Произвела на ЭВМ необходимые расчеты. Результат выполнения кода
программы:
X1 = {<0,5;2>,<0,2;3>,<0,9;5>,<0,5;6>,<0,4;7>,<0,6;10>,<0,2;12>,<0,9;13>,<0,3;14>,
<0,2;17>,<0,8;19>,<0,6;20>}
X2 = {<0,7;1>,<0,3;4>,<0,4;5>,<0,6;7>,<0,7;8>,<0,8;9>,<0,2;11>,<0,5;13>,<0,1;15>,
<0,8;16>,<0,3;18>,<0,4;20>}
X1∩X2 = {<0,4;5>,<0,4;7>,<0,5;13>,<0,4;20>}
X1∪X2 = {<0,7;1>,<0,5;2>,<0,2;3>,<0,3;4>,<0,9;5>,<0,5;6>,<0,6;7>,<0,7;8>,<0,8;9>,
<0,6;10>,<0,2;11>,<0,2;12>,<0,9;13>,<0,3;14>,<0,1;15>,<0,8;16>,<0,2;17>,<0,3;18>,<0,8;
19>,<0,6;20>}
-X1 = {<0,5;2>,<0,8;3>,<0,1;5>,<0,5;6>,<0,6;7>,<0,4;10>,<0,8;12>,<0,1;13>,<0,7;14>,
<0,8;17>,<0,2;19>,<0,4;20>}
-X2 = {<0,3;1>,<0,7;4>,<0,6;5>,<0,4;7>,<0,3;8>,<0,2;9>,<0,8;11>,<0,5;13>,<0,9;15>,
<0,2;16>,<0,7;18>,<0,6;20>}

2. Сформировала таким же образом исходные нечеткие множества Х3 и Х4.


X1 = {<0,5;2>,<0,2;3>,<0,9;5>,<0,5;6>,<0,4;7>,<0,6;10>,<0,2;12>,<0,9;13>,<0,3;14>,
<0,2;17>,<0,8;19>,<0,6;20>}
X2 = {<0,7;1>, <0,3;4>,<0,4;5>,<0,6;7>,<0,7;8>,<0,8;9>,<0,2;11>,<0,5;13>,<0,1;15>,
<0,8;16>,<0,3;18>,<0,4;20>}
X3 = {<0,6;1>,<0,4;2>,<0,8;3>,<0,3;4>,<0,9;5>,<0,7;6>,<0,3;7>,<0,6;8>,<0,3;9>,<0,2;10>,
<0,1;11>,<0,2;12>,<0,9;13>,<0,5;14>,<0,4;15>,<0,4;16>,<0,9;17>,<0,6;18>, <0,8;19>,
<0,3;20>}
X4 = {<0,7;1>,<0,2;2>,<0,7;3>,<0,5;4>,<0,8;5>,<0,4;6>,<0,7;7>,<0,4;8>,<0,8;9>,<0,1;10>,
<0,4;11>,<0,3;12>, <0,6;13>,<0,2;14>,<0,4;15>,<0,1;16>,<0,8;17>,<0,5;18>,<0,5;19>,
<0,7;20>}

8
а) определила «вручную» степени вложения ρ( X 1 ⊂ X 2 ) и ρ( X 2 ⊂ X 1 ) одного
нечеткого множества в другое:
= (0→0,7)&( 0,5→0)&(0,2→0)&(0→0,3)&(0,9→0,4)&(0,5→0)&(0,4→0,6)&
(0→0,7)&(0→0,8)&(0,6→0)&(0→0,2)&(0,2→0)&(0,9→0,5)&(0,3→0)&(0→0,1)&(0→0,8)&
(0,2→0)&(0→0,3)&(0,8→0)&(0,6→0,4)=1&0,5&0,8&1&0,4&0,5&0,6&1&1&0,6&1&0,8&0,5
&0,7&1&1&0,8&1&0,2&0,4=0,2

Так как ρ( X 1 ⊂ X 2 )≤0,5 , следовательно Х1 нечетко не включено во множество Х2.


= (0,7→0)&(0→0,5)&(0→0,2)&(0,3→0)&(0,4→0,9)&(0→0,5)&(0,6→0,4)
&(0,7→0)&(0,8→0)&(0→0,6)&(0,2→0)&(0→0,2)&(0,5→0,9)&(0→0,3)&(0,1→0)&(0,8→0)&
(0→0,2)&(0,3→0)&(0→0,8)&(0,4→0,6) = 0,3&1&1&0,7&0,9&1&0,4&0,3&0,2&1&0,8&1&
0,9&1&0,9&0,2&1&0,7&1&0,6 = 0,2

Так как ρ( X 2 ⊂ X 1 )≤0,5 , следовательно Х2 нечетко не включено во множество Х1.

б) вычислила степень нечеткого равенства ρ( Х 3 , Х 4 ) полученных нечетких


множеств;
= (0,6↔0,7)&(0,4↔0,2)&(0,8↔0,7)&(0,3↔0,5)&(0,9↔0,8)&(0,7↔0,4)&
(0,3↔0,7)& (0,6↔0,4)&(0,3↔0,8)&(0,2↔0,1)&(0,1↔0,4)&(0,2↔0,3)&(0,9↔0,6)&
(0,5↔0,2)&(0,4↔0,4)& (0,4↔0,1)&(0,9↔0,8)&(0,6↔0,5)&(0,8↔0,5)&(0,3↔0,7) = 0,6&
0,6& 0,7& 0,5& 0,8& 0,4& 0,3& 0,4& 0,3& 0,8& 0,6& 0,7& 0,6& 0,5& 0,6& 0,6& 0,8& 0,5&
0,5& 0,3 = 0,3

в) построила блок схемы алгоритма для определения на ЭВМ указанных выше


степеней вхождения одного нечеткого множества в другое и степени их нечеткого
равенства;
степень вложения степень вложения степень нечеткого
НАЧАЛО
ρ( НАЧАЛО
X 1 ⊂ X 2) ρ( X 2 ⊂ X 1 ) равенства

Формирование Формирование
мн-в Х1 и Х2 мн-в Х3 и Х4
Формирование
мн-в Х1 и Х2

НАЧАЛО
Вывод
КОНЕЦ

Вывод
Вывод

КОНЕЦ
КОНЕЦ

9
г) по полученным блок схемам алгоритмов проводимых вычислений
разработала программы их реализации на ЭВМ на одном из языков
программирования высокого уровня - Java.

public class NechetMn {


public static void main(String[] args) //главный метод программы {
int x1[][] = {{5, 2}, {2, 3}, {9, 5}, {5, 6}, {4, 7}, {6, 10}, {2, 12}, {9, 13}, {3, 14}, {2, 17}, {8,
19}, {6, 20}};
int x2[][] = {{7, 1}, {3, 4}, {4, 5}, {6, 7}, {7, 8}, {8, 9}, {2, 11}, {5, 13}, {1, 15}, {8, 16}, {3,
18}, {4, 20}};
int x3[][] = {{6,1},{4,2},{8,3},{3,4},{9,5},{7,6},{3,7},{6,8},{3,9},{2,10},{1,11},{2,12},{9,13},
{5,14},{4,15},{4,16},{9,17},{6,18},{8,19}, {3,20}};
int x4[][] = {{7,1},{2,2},{7,3},{5,4},{8,5},{4,6},{7,7},{4,8},{8,9},{1,10},{4,11},{3,12},{6,13},
{2,14},{4,15},{1,16},{8,17},{5,18},{5,19},{7,20}};
output("X1",x1); //вывод в консоли нечеткого множества Х1 через метод вывода
output("X2",x2); //вывод в консоли нечеткого множества Х2 через метод вывода
output("X3", x3); //вывод в консоли нечеткого множества Х3 через метод вывода
output("X4", x4); //вывод в консоли нечеткого множества Х4 через метод вывода
vlojenie(x1,x2,"p(X1⊂X2)"); //использование метода вычисления степеней вложения

vlojenie(x2,x1,"p(X2⊂X1)");
step_ravnosty(x3,x4,"p(x3,X3)");
}
/* Метод реализации операции вычисления степени вложения нечётких множеств,
параметры метода:
массивы, с которым будет работать метод, имя переменной при выводе. */

static void vlojenie (int[][] x1, int[][] x2, String name){


int x1_vloj[] = new int[x2[x2.length-1][1]];
int x2_vloj[] = new int[x2[x2.length-1][1]];
int x_vloj[] = new int[x2[x2.length-1][1]];
int n = 0, m=0;
for (int i = 0; i < x1.length; i++) {
x1_vloj[x1[i][1]-1]=x1[i][0];
x2_vloj[x2[i][1]-1]=x2[i][0];
}
for (int i = 0; i < x1_vloj.length; i++)
x_vloj[i]=Integer.max((10-x1_vloj[i]),x2_vloj[i]);
int step_vloj = x_vloj[0];
for (int i = 1; i < x_vloj.length; i++) {
step_vloj= Integer.min(step_vloj,x_vloj[i]);
}
System.out.println( name + " = 0," +step_vloj);
}
/* Метод реализации операции вычисления степени нечеткого равенства нечётких
множеств, параметры метода:
массивы, с которым будет работать метод, имя переменной при выводе. */

10
static void step_ravnosty(int x1[][], int x2[][], String name){
int x_ravn[] = new int[x1.length];
for (int i = 0; i < x1.length; i++)
x_ravn[i] = Integer.min(Integer.max(10-x1[i][0], x2[i][0]),Integer.max(x1[i][0], 10 -
x2[i][0]));
int step_ravnosty= x_ravn[0];
for (int i = 1; i < x_ravn.length; i++)
step_ravnosty= Integer.min(step_ravnosty,x_ravn[i]);
System.out.println(name + " = 0," + step_ravnosty );
}
}
Вывод программы:
X1 = {<0,5;2>,<0,2;3>,<0,9;5>,<0,5;6>,<0,4;7>,<0,6;10>,<0,2;12>,<0,9;13>,<0,3;14>,
<0,2;17>,<0,8;19>,<0,6;20>}
X2 = {<0,7;1>,<0,3;4>,<0,4;5>,<0,6;7>,<0,7;8>,<0,8;9>,<0,2;11>,<0,5;13>,<0,1;15>,
<0,8;16>,<0,3;18>,<0,4;20>}
X3 = {<0,6;1>,<0,4;2>,<0,8;3>,<0,3;4>,<0,9;5>,<0,7;6>,<0,3;7>,<0,6;8>,<0,3;9>,<0,2;10>,
<0,1;11>,<0,2;12>,<0,9;13>,<0,5;14>,<0,4;15>,<0,4;16>,<0,9;17>,<0,6;18>,<0,8;19>,
<0,3;20>}
Х4 = {<0,7;1>,<0,2;2>,<0,7;3>,<0,5;4>,<0,8;5>,<0,4;6>,<0,7;7>,<0,4;8>,<0,8;9>,<0,1;10>,
<0,4;11>,<0,3;12>,<0,6;13>,<0,2;14>,<0,4;15>,<0,1;16>,<0,8;17>,<0,5;18>,<0,5;19>,
<0,7;20>}
p(X1⊂X2) = 0,2
p(X2⊂X1) = 0,2
p(x3,X3) = 0,3

11

Вам также может понравиться