scipy.sparse.csgraph.

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.