breadth_first_tree#
- scipy.sparse.csgraph.breadth_first_tree(csgraph, i_start, directed=True)#
Gibt den Baum zurück, der durch eine Breitensuche erzeugt wurde
Beachten Sie, dass ein Breitensuchebaum von einem angegebenen Knoten aus eindeutig ist.
Hinzugefügt in Version 0.11.0.
- Parameter:
- csgrapharray_like oder dünnbesetzte Array oder Matrix
Die N x N Matrix, die den dünnbesetzten Graphen repräsentiert. Die Eingabe csgraph 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.
- Rückgabe:
- cstreecsr matrix
Die N x N gerichtete komprimierte dünn besetzte Darstellung des Breitensuchebaums, der aus csgraph gezogen wird und am angegebenen Knoten beginnt.
Hinweise
Wenn mehrere gültige Lösungen möglich sind, kann die Ausgabe je nach SciPy- und Python-Version variieren.
Beispiele
Das folgende Beispiel zeigt die Berechnung eines Tiefensuchebaums über einen einfachen Vierkomponentengraphen, beginnend bei Knoten 0
input graph breadth first tree from (0) (0) (0) / \ / \ 3 8 3 8 / \ / \ (3)---5---(1) (3) (1) \ / / 6 2 2 \ / / (2) (2)
In komprimierter dünn besetzter Darstellung sieht die Lösung so aus
>>> 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]])
Beachten Sie, dass der resultierende Graph ein gerichteter azyklischer Graph ist, der den Graphen überspannt. Ein Breitensuchebaum von einem gegebenen Knoten aus ist eindeutig.