Advertisement
lutunovoleg

Untitled

Apr 26th, 2024
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.32 KB | Source Code | 0 0
  1. import numpy as np
  2.  
  3.  
  4. def fwa(matrix):
  5.     """Реализация алгоритм Флойда-Уоршелла с еденичными весами
  6.  
  7.    Args:
  8.        matrix: матрица n на n
  9.  
  10.    Returns:
  11.        ndarray - транзитивное замыкание
  12. """
  13.     n = matrix.shape[0]  # Получаем размерность матрицы
  14.  
  15.     # Выполняем алгоритм Флойда-Уоршелла
  16.     for k in range(n):
  17.         for i in range(n):
  18.             for j in range(n):
  19.                 if matrix[i][k] + matrix[k][j] < matrix[i][j]:
  20.                     matrix[i][j] = matrix[i][k] + matrix[k][j]
  21.     return matrix
  22.  
  23.  
  24. def init_ndarray(n):
  25.     """Инициализирует ndarray размером n x n.
  26.  
  27.    Args:
  28.      n: размер матрицы.
  29.  
  30.    Returns:
  31.      ndarray размером n x n, заполненный числами.
  32.    """
  33.  
  34.     a = np.zeros((n, n))
  35.     for i in range(n):
  36.         for j in range(n):
  37.             a[i, j] = float(input(f"Введите элемент {i + 1}|{j + 1} "))
  38.  
  39.     return a
  40.  
  41.  
  42.  
  43. matrix = np.array([[0, 1, 0, 0, 0],
  44.                      [0, 0, 1, 0, 0],
  45.                      [0, 0, 0, 1, 0],
  46.                      [0, 0, 0, 0, 0],
  47.                      [0, 0, 1, 0, 0]])
  48.  
  49.  
  50. result = fwa(matrix)
  51. print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement