Дослідження властивостей та типів бінарних відношень

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2016
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Теорія прийняття рішень

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „ Львівська політехніка” Кафедра ІСМ Звіт Про виконання Лабораторної роботи № 2 з дисципліни: «Теорія прийняття рішень» на тему: «Дослідження властивостей та типів бінарних відношень» Мета роботи: вивчення та практичне ознайомлення з основними властивостями бінарних відношень та їх типами. Виконання: package Theory_lab2; class Capacity { protected int size; Capacity (int x){ size = x; } Capacity (){ size = 5; } void matrix_size(int x) { size = x; } } class Relationship extends Capacity { private byte relation[][] = new byte[size][size]; private byte res[][] = new byte[size][size]; private byte res2[][] = new byte[size][size]; Relationship () { for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) relation[ar][a] = (byte)(Math.random()*2); } Relationship (byte arr[][]) { for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) relation[ar][a] = arr[ar][a]; } byte[][] get_relation (){ return relation; } void show(byte[][] arr) { for (byte[] ar : arr) { for (byte a : ar) System.out.print(a + " "); System.out.println(); } System.out.println(); } void refleksuvne(){ for (int i = 0; i < relation.length; i++) if (relation[i][i] == 0) { System.out.println("НЕ рефлексивне"); return; } System.out.println("Pефлексивне"); } boolean anturefleksuvne(){ for (int i = 0; i < relation.length; i++) if (relation[i][i] == 1){ System.out.println("НЕ антирефлексивне."); return false; } System.out.println("Антирефлексивне."); return true; } void sumetric(){ for (byte i = 0; i < res.length; i++) for (byte k = 0; k < res.length; k++) if (relation[i][k] != relation[k][i]){ System.out.println("НЕ симетричне."); return; } System.out.println("Симетричне."); } void asumetric(){ if (!anturefleksuvne()){ System.out.println("НЕ aсиметричне."); return; } for (byte i = 0; i < res.length; i++) for (byte k = 0; k < res.length; k++) if (relation[i][k] == 1 && relation[k][i] == 1){ System.out.println("НЕ асиметричне."); return; } System.out.println("Асиметричне."); } void antusumetric(){ for (byte i = 0; i < res.length; i++) for (byte k = 0; k < res.length; k++){ if (i == k) continue; if (relation[i][k] == 1 && relation[k][i] == 1) { System.out.println("НЕ антисиметричне."); return; } } System.out.println("Антисиметричне."); } void tranzituvne(){ func_composition(relation); for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) if (res[ar][a] == 1 && relation[ar][a] == 0){ System.out.println("НЕ транзитивне."); return; } System.out.println("Транзитивне."); } void func_composition (byte[][] arr){ for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) res[ar][a] = 0; for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++) for (byte i = 0; i < arr.length; i++){ if (relation[ar][a] == 1 && arr[a][i] == 1) res[ar][i] = 1; } //show(res); } void acuklichne(){ func_composition(relation); for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) if (res[ar][a] == 1 && relation[a][ar] == 1){ System.out.println("НЕ ациклічне."); return; } System.out.println("Ациклічне."); } void zvayzne(){ if (!anturefleksuvne()){ System.out.println("НЕ зв'язне."); return; } for (byte i = 0; i < res.length; i++) for (byte k = 0; k < res.length; k++) if (relation[i][k] == 0 && relation[k][i] == 0){ System.out.println("НЕ зв'язне."); return; } System.out.println("Зв'язне."); } byte[][] func_cross (){ for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++){ if (relation[ar][a] == 1 && res[ar][a] == 1) res2[ar][a] = 1; else res2[ar][a] = 0; } return res2; } byte[][] func_inverse (){ for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++){ if (relation[ar][a] == 1) res[a][ar] = 1; else res[a][ar] = 0; } return res; } void sumetric2(){ func_inverse(); func_cross(); System.out.println("Симетрична складова :"); show(res2); } byte[][] func_sub (){ for (byte ar = 0; ar < res2.length; ar++) for (byte a = 0; a < res2.length; a++){ if (relation[ar][a] == 1 && res2[ar][a] == 0) res[ar][a] = 1; else res[ar][a] = 0; } return res; } void asumetric2(){ sumetric2(); func_sub(); System.out.println("Асиметрична складова :"); show(res); } byte[][] func_union (byte[][] arr){ for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++){ if (relation[ar][a] == 0 && arr[ar][a] == 0) res[ar][a] = 0; else res[ar][a] = 1; } return res; } byte[][] func_composition2 (byte[][] arr){ for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++) for (byte i = 0; i < arr.length; i++){ if (relation[ar][a] == 1 && arr[a][i] == 1) res2[ar][i] = 1; else res2[ar][i] = 0; } return res2; } byte[][] tranzutuvne_zamukanay(){ func_union(func_composition2(relation)); func_union(res, func_composition2(res2)); func_union(res, func_composition2(res2)); func_union(res, func_composition2(res2)); System.out.println("Транзитивн замикання :"); show (res); return res; } byte[][] dosaygnist(){ byte E[][] = {{1, 0, 0, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 1, 0}, {0, 0, 0, 0, 1}}; func_union(E, tranzutuvne_zamukanay()); System.out.println("Досяжність :"); show (res); return res; } byte[][] func_inverse (byte[][] arr){ for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++){ if (arr[ar][a] == 1) res2[a][ar] = 1; else res2[a][ar] = 0; } return res2; } byte[][] func_cross (byte[][] arr, byte[][] arr2){ for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++){ if (arr[ar][a] == 1 && arr2[ar][a] == 1) res2[ar][a] = 1; else res2[ar][a] = 0; } return res2; } byte[][] vzayemna_dosaygnist(){ func_cross (dosaygnist(), func_inverse(dosaygnist())); System.out.println("Взаємна досяжність :"); show (res2); return res2; } } public class Begin { public static void main(String[] args) { byte P[][] = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 1}, {0, 0, 0, 1, 0}, {0, 0, 1, 1, 0}}; Relationship ob1 = new Relationship(P); ob1.refleksuvne(); ob1.anturefleksuvne(); ob1.sumetric(); ob1.asumetric(); ob1.antusumetric(); ob1.tranzituvne(); ob1.acuklichne(); ob1.zvayzne(); ob1.sumetric2(); ob1.asumetric2(); ob1.tranzutuvne_zamukanay(); ob1.dosaygnist(); ob1.vzayemna_dosaygnist(); } } Результат: Властивості відношення / / / / / / Висновок: виконуючи дану лабораторну роботу я вивчив та закріпив на практиці основні властивості та типи бінарних відношень також написав програму для автоматизації процесу роботи з бінарними відношеннями.
Антиботан аватар за замовчуванням

29.11.2018 01:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!