Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- def fwa(matrix):
- """Реализация алгоритм Флойда-Уоршелла с еденичными весами
- Args:
- matrix: матрица n на n
- Returns:
- ndarray - транзитивное замыкание
- """
- n = matrix.shape[0] # Получаем размерность матрицы
- # Выполняем алгоритм Флойда-Уоршелла
- for k in range(n):
- for i in range(n):
- for j in range(n):
- if matrix[i][k] + matrix[k][j] < matrix[i][j]:
- matrix[i][j] = matrix[i][k] + matrix[k][j]
- return matrix
- def init_ndarray(n):
- """Инициализирует ndarray размером n x n.
- Args:
- n: размер матрицы.
- Returns:
- ndarray размером n x n, заполненный числами.
- """
- a = np.zeros((n, n))
- for i in range(n):
- for j in range(n):
- a[i, j] = float(input(f"Введите элемент {i + 1}|{j + 1} "))
- return a
- matrix = np.array([[0, 1, 0, 0, 0],
- [0, 0, 1, 0, 0],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 0],
- [0, 0, 1, 0, 0]])
- result = fwa(matrix)
- print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement