connected_components#
- scipy.sparse.csgraph.connected_components(csgraph, направленный=True, соединение='weak', return_labels=True)#
Анализировать связные компоненты разреженного графа
Добавлено в версии 0.11.0.
- Параметры:
- csgrapharray_like или разреженный массив или матрица
Матрица N x N, представляющая сжатый разреженный граф. Входной csgraph будет преобразован в формат csr для вычисления.
- направленныйbool, необязательно
Если True (по умолчанию), то работа с ориентированным графом: перемещение только от точки i к точке j по путям csgraph[i, j]. Если False, то поиск кратчайшего пути на неориентированном графе: алгоритм может переходить от точки i к j по csgraph[i, j] или csgraph[j, i].
- соединениеstr, optional
['weak'|'strong']. Для ориентированных графов тип соединения для использования. Узлы i и j сильно связаны, если существует путь как от i к j, так и от j к i. Ориентированный граф слабо связан, если замена всех его ориентированных ребер на неориентированные дает связный (неориентированный) граф. Если directed == False, этот ключевой параметр не учитывается.
- return_labelsbool, необязательно
Если True (по умолчанию), то возвращает метки для каждого из связных компонентов.
- Возвращает:
- n_components: int
Количество связных компонент.
- labels: ndarray
Массив меток связанных компонентов длиной N.
Ссылки
[1]D. J. Pearce, «Улучшенный алгоритм нахождения сильно связных компонент ориентированного графа», Технический отчёт, 2005
Примеры
>>> from scipy.sparse import csr_array >>> from scipy.sparse.csgraph import connected_components
>>> graph = [ ... [0, 1, 1, 0, 0], ... [0, 0, 1, 0, 0], ... [0, 0, 0, 0, 0], ... [0, 0, 0, 0, 1], ... [0, 0, 0, 0, 0] ... ] >>> graph = csr_array(graph) >>> print(graph)
with 4 stored elements and shape (5, 5)> Coords Values (0, 1) 1 (0, 2) 1 (1, 2) 1 (3, 4) 1 >>> n_components, labels = connected_components(csgraph=graph, directed=False, return_labels=True) >>> n_components 2 >>> labels array([0, 0, 0, 1, 1], dtype=int32)