Okonar

ТПР. Код

Oct 12th, 2023
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.37 KB | None | 0 0
  1. # Функція яка визначає чи є матриця рефлексивною
  2. def is_reflexive(matrix):
  3.     n = len(matrix)
  4.     for i in range(n):
  5.         if matrix[i][i] != 1:
  6.             return False
  7.     return True
  8.  
  9. # Функція яка визначає чи є матриця антирефлексивною
  10. def is_antireflexive(matrix):
  11.     n = len(matrix)
  12.     for i in range(n):
  13.         if matrix[i][i] != 0:
  14.             return False
  15.     return True
  16.  
  17. # Функція яка визначає чи є матриця симетричною
  18. def is_symmetric(matrix):
  19.     n = len(matrix)
  20.     for i in range(n):
  21.         for j in range(i + 1, n):
  22.             if matrix[i][j] != matrix[j][i]:
  23.                 return False
  24.     return True
  25.  
  26. # Функція яка визначає чи є матриця антисиметричною
  27. def is_antisymmetric(matrix):
  28.     n = len(matrix)
  29.     for i in range(n):
  30.         for j in range(i + 1, n):
  31.             if matrix[i][j] == 1 and matrix[j][i] == 1:
  32.                 return False
  33.     return True
  34.  
  35. # Функція яка визначає чи є матриця асиметричною
  36. def is_asymmetric(matrix):
  37.     return is_antisymmetric(matrix) and is_antireflexive(matrix)
  38.  
  39. # Функція яка визначає чи є матриця транзитовною
  40. def is_transitive(matrix):
  41.     n = len(matrix)
  42.     for i in range(n):
  43.         for j in range(n):
  44.             for k in range(n):
  45.                 if matrix[i][j] == 1 and matrix[j][k] == 1 and matrix[i][k] != 1:
  46.                     return False
  47.     return True
  48.  
  49. # Функція яка визначає найменший елемент матриці
  50. def find_min_elements(matrix):
  51.     min_elements = []
  52.     n = len(matrix)
  53.  
  54.     # Перевіряємо кожен стовпець матриці.
  55.     for j in range(n):
  56.         column = [matrix[i][j] for i in range(n)]
  57.  
  58.         # Перевіряємо, чи стовпець містить лише одиниці.
  59.         if sum(column) == n:
  60.             min_elements.append(j)
  61.  
  62.     return min_elements
  63.  
  64. # Функція яка визначає найбільший елемент матриці
  65. def find_max_elements(matrix):
  66.     max_elements = []
  67.     n = len(matrix)
  68.  
  69.     # Перевіряємо кожен рядок матриці.
  70.     for i in range(n):
  71.         row = matrix[i]
  72.  
  73.         # Перевіряємо, чи рядок містить лише одиниці.
  74.         if sum(row) == n:
  75.             max_elements.append(i)
  76.  
  77.     return max_elements
  78.  
  79. ''' Основний код '''
  80.  
  81. # Вихідна матриця
  82. matrix = [
  83.     [1, 1, 1, 1, 1],
  84.     [0, 1, 0, 1, 0],
  85.     [0, 0, 1, 0, 0],
  86.     [0, 0, 0, 1, 0],
  87.     [0, 0, 0, 0, 1]
  88. ]
  89.  
  90. print("Вихідна матриця: \n")
  91.  
  92. for row in matrix:        # Вивід матриці в консоль
  93.     print(row)
  94.  
  95. print()        # Перехід на новий рядок
  96.  
  97. ''' Ініціалізація нової матриці (транспонована) '''
  98.  
  99. transposed_matrix = [[0 for _ in range(len(matrix))] for _ in range(len(matrix[0]))]
  100.  
  101. # Транспонування матриці
  102. for i in range(len(matrix)):
  103.     for j in range(len(matrix[0])):
  104.         transposed_matrix[j][i] = matrix[i][j]
  105.  
  106. print("Транспонован матриця: \n")
  107.  
  108. for row in transposed_matrix:        # Вивід матриці в консоль
  109.     print(row)
  110.  
  111. print()
  112.  
  113. ''' Матриця строгого відношення '''
  114.  
  115. strong_matrix = [[0 for _ in range(len(matrix[0]))] for _ in range(len(matrix))]
  116.  
  117. # Віднімання елементів матриці matrix від елементів матриці transposed_matrix
  118. for i in range(len(matrix)):
  119.     for j in range(len(matrix[0])):
  120.         if matrix[i][j] - transposed_matrix[i][j] < 0:
  121.             strong_matrix[i][j] = 0
  122.         else:
  123.             strong_matrix[i][j] = matrix[i][j] - transposed_matrix[i][j]
  124.  
  125. print("Матриця строгого відношення: \n")
  126.  
  127. for row in strong_matrix:        # Вивід матриці в консоль
  128.     print(row)
  129.  
  130. print()
  131.  
  132. ''' Пошук елементів матриці '''
  133.  
  134. min_elements = find_min_elements(matrix)    # найменший елемент матриці
  135. max_elements = find_max_elements(matrix)    # найбільший елемент матриці
  136.  
  137.  
  138. # Вивід найменшого та найбільшого значень матриці
  139. if len(min_elements) > 0:
  140.     print("\nНайменші елементи (стовпці, які містять лише одиниці):")
  141.     for element in min_elements: print("x_" + str(element + 1))
  142. else:
  143.     print("Немає найменших елементів.")
  144.  
  145. print()
  146.  
  147. if len(max_elements) > 0:
  148.     print("Найбільші елементи (рядки, які містять лише одиниці):")
  149.     for element in max_elements:
  150.         print("x_" + str(element + 1))
  151. else:
  152.     print("Немає найбільших елементів.")
  153.  
  154. print()
  155.  
  156.  
  157. # Пошук максимальних елементів матриці (стовпці, які містять лише нулі)
  158. max_elements2 = []
  159. for j in range(len(strong_matrix[0])):
  160.     if all(strong_matrix[i][j] == 0 for i in range(len(strong_matrix))):
  161.         max_elements2.append(j)
  162.  
  163. # Пошук мінімальних елементів матриці (стовпці, які містять лише нулі)
  164. min_elements2 = []
  165. for i in range(len(strong_matrix)):
  166.     if all(strong_matrix[i][j] == 0 for j in range(len(strong_matrix[0]))):
  167.         min_elements2.append(i)
  168.  
  169. # Вивід максимальних та мінімальних значень матриці
  170. if max_elements2:
  171.     print("Максимальні елементи (стовпці, які містять лише нулі):")
  172.     for element in max_elements:
  173.         print("x_" + str(element + 1))
  174. else:
  175.     print("Немає максимальних елементів.")
  176.  
  177. print()
  178.  
  179. if min_elements2:
  180.     print("Мінімальні елементи (рядки, які містять лише нулі):")
  181.     for element in min_elements2:
  182.         print("x_" + str(element + 1))
  183. else:
  184.     print("Немає мінімальних елементів.")
  185.  
  186. print()
  187.  
  188. ''' Вивід результатів перевірки матриці на задані властивості '''
  189.  
  190. if is_reflexive(matrix):
  191.     print("Відношення рефлексивне.")
  192. else:
  193.     print("Відношення не рефлексивне.")
  194.  
  195. if is_antireflexive(matrix):
  196.     print("Відношення антирефлексивне.")
  197. else:
  198.     print("Відношення не антирефлексивне.")
  199.  
  200. if is_symmetric(matrix):
  201.     print("Відношення симетричне.")
  202. else:
  203.     print("Відношення не симетричне.")
  204.  
  205. if is_antisymmetric(matrix):
  206.     print("Відношення антисиметричне.")
  207. else:
  208.     print("Відношення не антисиметричне.")
  209.  
  210. if is_asymmetric(matrix):
  211.     print("Відношення асиметричне.")
  212. else:
  213.     print("Відношення не асиметричне.")
  214.  
  215. if is_transitive(matrix):
  216.     print("Відношення транзитивне.")
  217. else:
  218.     print("Відношення не транзитивне.")
Advertisement
Add Comment
Please, Sign In to add comment