Форум сайта python.su
Добрый день! Помогите, пожалуйста, ищу кусок кода/функцию из библиотеки на python, которая сможет найти сумму веса ребер минимального оставного дерева (Minimum spanning tree), имея из данных координаты вершин графа, и считая что «вес» ребра равен длине между вершинами. Если кто-то умеет такое прогать и сделает, также большое спасибо!
Офлайн
from scipy.sparse import csr_matrix from scipy.sparse.csgraph import minimum_spanning_tree import numpy as np # пример координат вершин графа vertices = np.array([ [0, 0], [0, 1], [1, 0], [1, 1], [2, 2] ]) # расстояния между вершинами distances = np.linalg.norm(vertices[:, np.newaxis] - vertices, axis=2) # создание разреженной матрицы для поиска минимального остовного дерева sparse_graph = csr_matrix(distances) # поиск минимального остовного дерева mst = minimum_spanning_tree(sparse_graph) # сумма веса ребер минимального остовного дерева sum_of_weights = mst.sum() print(sum_of_weights)
Офлайн