breadth_first_tree#
- scipy.sparse.csgraph.breadth_first_tree(csgraph, i_start, направленный=True)#
Возвращает дерево, сгенерированное поиском в ширину
Обратите внимание, что дерево поиска в ширину от заданного узла уникально.
Добавлено в версии 0.11.0.
- Параметры:
- csgrapharray_like или разреженный массив или матрица
Матрица N x N, представляющая сжатый разреженный граф. Входной csgraph будет преобразован в формат csr для вычисления.
- i_startint
Индекс начального узла.
- направленныйbool, необязательно
Если True (по умолчанию), то работа с ориентированным графом: перемещение только от точки i к точке j по путям csgraph[i, j]. Если False, то поиск кратчайшего пути на неориентированном графе: алгоритм может переходить от точки i к j по csgraph[i, j] или csgraph[j, i].
- Возвращает:
- cstreecsr matrix
Направленное сжато-разреженное представление N x N дерева поиска в ширину, построенного из csgraph, начиная с указанного узла.
Примечания
Если возможны несколько допустимых решений, вывод может варьироваться в зависимости от версии SciPy и Python.
Примеры
Следующий пример показывает вычисление дерева обхода в глубину над простым графом из четырех компонентов, начиная с узла 0:
input graph breadth first tree from (0) (0) (0) / \ / \ 3 8 3 8 / \ / \ (3)---5---(1) (3) (1) \ / / 6 2 2 \ / / (2) (2)
В сжатом разреженном представлении решение выглядит так:
>>> from scipy.sparse import csr_array >>> from scipy.sparse.csgraph import breadth_first_tree >>> X = csr_array([[0, 8, 0, 3], ... [0, 0, 2, 5], ... [0, 0, 0, 6], ... [0, 0, 0, 0]]) >>> Tcsr = breadth_first_tree(X, 0, directed=False) >>> Tcsr.toarray().astype(int) array([[0, 8, 0, 3], [0, 0, 2, 0], [0, 0, 0, 0], [0, 0, 0, 0]])
Обратите внимание, что полученный граф является направленным ациклическим графом, который охватывает граф. Дерево поиска в ширину от заданного узла является уникальным.