scipy.sparse.csgraph.

depth_first_order#

scipy.sparse.csgraph.depth_first_order(csgraph, i_start, directed=True, return_predecessors=True)#

Gibt eine Tiefensuche-Reihenfolge zurück, beginnend mit dem angegebenen Knoten.

Beachten Sie, dass eine Tiefensuche-Reihenfolge nicht eindeutig ist. Darüber hinaus ist für Graphen mit Zyklen der durch eine Tiefensuche erzeugte Baum ebenfalls nicht eindeutig.

Hinzugefügt in Version 0.11.0.

Parameter:
csgrapharray_like oder dünnbesetzte Array oder Matrix

Der N x N komprimierte dünnbesetzte Graph. Der Eingabe-Graphen wird für die Berechnung in das CSR-Format konvertiert.

i_startint

Der Index des Startknotens.

directedbool, optional

Wenn True (Standard), dann wird auf einem gerichteten Graphen gearbeitet: es wird nur von Punkt i zu Punkt j entlang der Pfade csgraph[i, j] navigiert. Wenn False, dann wird der kürzeste Pfad in einem ungerichteten Graphen gesucht: der Algorithmus kann von Punkt i zu j entlang csgraph[i, j] oder csgraph[j, i] fortschreiten.

return_predecessorsbool, optional

Wenn True (Standard), wird das Vorgänger-Array zurückgegeben (siehe unten).

Rückgabe:
node_arrayndarray, eindimensional

Die Tiefensuche-Liste der Knoten, beginnend mit dem angegebenen Knoten. Die Länge von node_array ist die Anzahl der von dem angegebenen Knoten erreichbaren Knoten.

predecessorsndarray, eindimensional

Wird nur zurückgegeben, wenn return_predecessors True ist. Die N-lange Liste der Vorgänger jedes Knotens in einem Tiefensuchbaum. Wenn Knoten i im Baum ist, dann ist sein Elternknoten durch predecessors[i] gegeben. Wenn Knoten i nicht im Baum ist (und für den Elternknoten), dann ist predecessors[i] = -9999.

Hinweise

Wenn mehrere gültige Lösungen möglich sind, kann die Ausgabe je nach SciPy- und Python-Version variieren.

Beispiele

>>> from scipy.sparse import csr_array
>>> from scipy.sparse.csgraph import depth_first_order
>>> graph = [
... [0, 1, 2, 0],
... [0, 0, 0, 1],
... [2, 0, 0, 3],
... [0, 0, 0, 0]
... ]
>>> graph = csr_array(graph)
>>> print(graph)
<Compressed Sparse Row sparse array of dtype 'int64'
    with 5 stored elements and shape (4, 4)>
    Coords  Values
    (0, 1)  1
    (0, 2)  2
    (1, 3)  1
    (2, 0)  2
    (2, 3)  3
>>> depth_first_order(graph,0)
(array([0, 1, 3, 2], dtype=int32), array([-9999,     0,     0,     1], dtype=int32))