Комп’ютерне подання множин

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

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

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

Рік:
2017
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Методи і системи штучного інтелекту

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

Міністерство освіти і науки України Національний університет „ Львівська політехніка” Кафедра ІСМ Звіт Про виконання Лабораторної роботи № 1 з дисципліни: «Методи та системи штучного інтелекту » на тему: «Комп’ютерне подання множин» Мета роботи: вивчення та порівняння різних способів представлення бінарних відношень. Засвоєння практичних навиків маніпулювання бінарними відношеннями в різних представленнях. Виконання: package Theory_lab1; 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]; 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() { for (byte[] ar : relation) { for (byte a : ar) System.out.print(a + " "); System.out.println(); } System.out.println(); } void show(byte[][] arr) { for (byte[] ar : arr) { for (byte a : ar) System.out.print(a + " "); System.out.println(); } System.out.println(); } byte[][] empty (){ byte[][] arr = new byte[5][5]; for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++) arr[ar][a] = 0; show(arr); return arr; } byte[][] full (){ byte[][] arr = new byte[5][5]; for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++) arr[ar][a] = 1; show(arr); return arr; } byte[][] diagonal (){ byte[][] arr = new byte[5][5]; for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++){ if (a == ar) arr[ar][a] = 1; else arr[ar][a] = 0; } show(arr); return arr; } byte[][] notdiagonal() { byte[][] arr = new byte[5][5]; for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++){ if (a == ar) arr[ar][a] = 0; else arr[ar][a] = 1; } show(arr); return arr; } 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; } System.out.println("Operation union :"); show(res); return res; } byte[][] func_union (byte[][] arr1, byte[][] arr2){ for (byte ar = 0; ar < arr1.length; ar++) for (byte a = 0; a < arr1.length; a++){ if (arr1[ar][a] == 0 && arr2[ar][a] == 0) res[ar][a] = 0; else res[ar][a] = 1; } System.out.println("Operation union :"); show(res); return res; } byte[][] func_cross (byte[][] arr){ for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++){ if (relation[ar][a] == 1 && arr[ar][a] == 1) res[ar][a] = 1; else res[ar][a] = 0; } System.out.println("Operation cross :"); show(res); return res; } byte[][] func_sub (byte[][] arr){ for (byte ar = 0; ar < arr.length; ar++) for (byte a = 0; a < arr.length; a++){ if (relation[ar][a] == 1 && arr[ar][a] == 0) res[ar][a] = 1; else res[ar][a] = 0; } System.out.println("Operation sub :"); show(res); return res; } byte[][] func_sub (byte[][] arr1, byte[][] arr2){ for (byte ar = 0; ar < arr1.length; ar++) for (byte a = 0; a < arr1.length; a++){ if (arr1[ar][a] == 1 && arr2[ar][a] == 0) res[ar][a] = 1; else res[ar][a] = 0; } System.out.println("Operation sub :"); show(res); return res; } byte[][] func_not (){ for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++){ if (relation[ar][a] == 1) res[ar][a] = 0; else res[ar][a] = 1; } System.out.println("Operation not :"); show(res); return res; } 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; } System.out.println("Operation inverse :"); show(res); return res; } byte[][] func_cut (){ byte masuv[][] = new byte[size-1][size-1]; for (byte ar = 0; ar < res.length - 1; ar++) for (byte a = 0; a < res.length - 1; a++){ if (relation[ar][a] == 1) masuv[a][ar] = 1; else masuv[a][ar] = 0; } System.out.println("Operation cut :"); show(masuv); return masuv; } byte[][] func_symmetric_sub (byte[][] arr){ byte P[][] = new byte[res.length][res.length]; byte Q[][] = new byte[res.length][res.length]; byte R[][] = new byte[res.length][res.length]; for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) P[ar][a] = relation[ar][a]; for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) Q[ar][a] = arr[ar][a]; func_sub(P, Q); for (byte ar = 0; ar < res.length; ar++) for (byte a = 0; a < res.length; a++) R[ar][a] = res[ar][a]; func_union (R, func_sub(Q, P)); return res; } byte[][] 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; } System.out.println("Operation composition :"); show(res); return res; } } class begin { public static void main(String args[]){ byte P[][] = {{0, 1, 0, 1, 0}, {0, 0, 0, 0, 1}, {0, 1, 1, 1, 0}, {1, 0, 0, 0, 0}, {0, 0, 1, 0, 1 }}; byte Q[][] = {{0, 0, 0, 1, 0}, {1, 1, 0, 0, 0}, {1, 0, 0, 1, 1}, {1, 0, 0, 0, 0}, {0, 1, 0 ,0, 0}}; byte R[][] = {{1, 0, 0, 0, 0}, {1, 0, 1, 0, 0}, {0, 0, 1, 0, 1}, {0, 0, 1, 0, 0}, {1, 1, 0, 0, 0}}; Relationship ob1 = new Relationship(P); Relationship ob2 = new Relationship(Q); Relationship ob3 = new Relationship(R); ob1.show(); ob2.show(); ob3.show(); ob1.diagonal(); // ob1.notdiagonal(); // ob1.empty(); // ob1.full(); // ob1.func_union(ob2.get_relation()); // ob1.func_cross(ob2.get_relation()); // ob1.func_sub(ob2.get_relation()); // ob1.func_cut(); // ob1.func_not(); // ob1.func_inverse(); // ob1.func_symmetric_sub(ob2.get_relation()); // ob1.func_composition(ob2.get_relation()); } } Діагональне, антидіагональне, порожнє та пусте відношення Об’єднання відношень Перетин відношень Різниця відношень Скорочення відношення Симетрична різниця відношень Доповнення відношення Обернене відношення Композиція відношень Висновок: виконуючи дану лабораторну роботу я вивчив різних способів представлення бінарних відношень. Засвоєння практичних навиків маніпулювання бінарними відношеннями в різних представленнях.
Антиботан аватар за замовчуванням

29.11.2018 01:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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