depth_first_tree#
- scipy.sparse.csgraph.depth_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 depth first tree from (0) (0) (0) / \ \ 3 8 8 / \ \ (3)---5---(1) (3) (1) \ / \ / 6 2 6 2 \ / \ / (2) (2)
В сжатом разреженном представлении решение выглядит так:
>>> from scipy.sparse import csr_array >>> from scipy.sparse.csgraph import depth_first_tree >>> X = csr_array([[0, 8, 0, 3], ... [0, 0, 2, 5], ... [0, 0, 0, 6], ... [0, 0, 0, 0]]) >>> Tcsr = depth_first_tree(X, 0, directed=False) >>> Tcsr.toarray().astype(int) array([[0, 8, 0, 0], [0, 0, 2, 0], [0, 0, 0, 6], [0, 0, 0, 0]])
Обратите внимание, что полученный граф является направленным ациклическим графом, который охватывает граф. В отличие от дерева поиска в ширину, дерево поиска в глубину для данного графа не является уникальным, если граф содержит циклы. Если бы приведенное выше решение начиналось с ребра, соединяющего узлы 0 и 3, результат был бы другим.