Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Функція яка визначає чи є матриця рефлексивною
- def is_reflexive(matrix):
- n = len(matrix)
- for i in range(n):
- if matrix[i][i] != 1:
- return False
- return True
- # Функція яка визначає чи є матриця антирефлексивною
- def is_antireflexive(matrix):
- n = len(matrix)
- for i in range(n):
- if matrix[i][i] != 0:
- return False
- return True
- # Функція яка визначає чи є матриця симетричною
- def is_symmetric(matrix):
- n = len(matrix)
- for i in range(n):
- for j in range(i + 1, n):
- if matrix[i][j] != matrix[j][i]:
- return False
- return True
- # Функція яка визначає чи є матриця антисиметричною
- def is_antisymmetric(matrix):
- n = len(matrix)
- for i in range(n):
- for j in range(i + 1, n):
- if matrix[i][j] == 1 and matrix[j][i] == 1:
- return False
- return True
- # Функція яка визначає чи є матриця асиметричною
- def is_asymmetric(matrix):
- return is_antisymmetric(matrix) and is_antireflexive(matrix)
- # Функція яка визначає чи є матриця транзитовною
- def is_transitive(matrix):
- n = len(matrix)
- for i in range(n):
- for j in range(n):
- for k in range(n):
- if matrix[i][j] == 1 and matrix[j][k] == 1 and matrix[i][k] != 1:
- return False
- return True
- # Функція яка визначає найменший елемент матриці
- def find_min_elements(matrix):
- min_elements = []
- n = len(matrix)
- # Перевіряємо кожен стовпець матриці.
- for j in range(n):
- column = [matrix[i][j] for i in range(n)]
- # Перевіряємо, чи стовпець містить лише одиниці.
- if sum(column) == n:
- min_elements.append(j)
- return min_elements
- # Функція яка визначає найбільший елемент матриці
- def find_max_elements(matrix):
- max_elements = []
- n = len(matrix)
- # Перевіряємо кожен рядок матриці.
- for i in range(n):
- row = matrix[i]
- # Перевіряємо, чи рядок містить лише одиниці.
- if sum(row) == n:
- max_elements.append(i)
- return max_elements
- ''' Основний код '''
- # Вихідна матриця
- matrix = [
- [1, 1, 1, 1, 1],
- [0, 1, 0, 1, 0],
- [0, 0, 1, 0, 0],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 1]
- ]
- print("Вихідна матриця: \n")
- for row in matrix: # Вивід матриці в консоль
- print(row)
- print() # Перехід на новий рядок
- ''' Ініціалізація нової матриці (транспонована) '''
- transposed_matrix = [[0 for _ in range(len(matrix))] for _ in range(len(matrix[0]))]
- # Транспонування матриці
- for i in range(len(matrix)):
- for j in range(len(matrix[0])):
- transposed_matrix[j][i] = matrix[i][j]
- print("Транспонован матриця: \n")
- for row in transposed_matrix: # Вивід матриці в консоль
- print(row)
- print()
- ''' Матриця строгого відношення '''
- strong_matrix = [[0 for _ in range(len(matrix[0]))] for _ in range(len(matrix))]
- # Віднімання елементів матриці matrix від елементів матриці transposed_matrix
- for i in range(len(matrix)):
- for j in range(len(matrix[0])):
- if matrix[i][j] - transposed_matrix[i][j] < 0:
- strong_matrix[i][j] = 0
- else:
- strong_matrix[i][j] = matrix[i][j] - transposed_matrix[i][j]
- print("Матриця строгого відношення: \n")
- for row in strong_matrix: # Вивід матриці в консоль
- print(row)
- print()
- ''' Пошук елементів матриці '''
- min_elements = find_min_elements(matrix) # найменший елемент матриці
- max_elements = find_max_elements(matrix) # найбільший елемент матриці
- # Вивід найменшого та найбільшого значень матриці
- if len(min_elements) > 0:
- print("\nНайменші елементи (стовпці, які містять лише одиниці):")
- for element in min_elements: print("x_" + str(element + 1))
- else:
- print("Немає найменших елементів.")
- print()
- if len(max_elements) > 0:
- print("Найбільші елементи (рядки, які містять лише одиниці):")
- for element in max_elements:
- print("x_" + str(element + 1))
- else:
- print("Немає найбільших елементів.")
- print()
- # Пошук максимальних елементів матриці (стовпці, які містять лише нулі)
- max_elements2 = []
- for j in range(len(strong_matrix[0])):
- if all(strong_matrix[i][j] == 0 for i in range(len(strong_matrix))):
- max_elements2.append(j)
- # Пошук мінімальних елементів матриці (стовпці, які містять лише нулі)
- min_elements2 = []
- for i in range(len(strong_matrix)):
- if all(strong_matrix[i][j] == 0 for j in range(len(strong_matrix[0]))):
- min_elements2.append(i)
- # Вивід максимальних та мінімальних значень матриці
- if max_elements2:
- print("Максимальні елементи (стовпці, які містять лише нулі):")
- for element in max_elements:
- print("x_" + str(element + 1))
- else:
- print("Немає максимальних елементів.")
- print()
- if min_elements2:
- print("Мінімальні елементи (рядки, які містять лише нулі):")
- for element in min_elements2:
- print("x_" + str(element + 1))
- else:
- print("Немає мінімальних елементів.")
- print()
- ''' Вивід результатів перевірки матриці на задані властивості '''
- if is_reflexive(matrix):
- print("Відношення рефлексивне.")
- else:
- print("Відношення не рефлексивне.")
- if is_antireflexive(matrix):
- print("Відношення антирефлексивне.")
- else:
- print("Відношення не антирефлексивне.")
- if is_symmetric(matrix):
- print("Відношення симетричне.")
- else:
- print("Відношення не симетричне.")
- if is_antisymmetric(matrix):
- print("Відношення антисиметричне.")
- else:
- print("Відношення не антисиметричне.")
- if is_asymmetric(matrix):
- print("Відношення асиметричне.")
- else:
- print("Відношення не асиметричне.")
- if is_transitive(matrix):
- print("Відношення транзитивне.")
- else:
- print("Відношення не транзитивне.")
Advertisement
Add Comment
Please, Sign In to add comment