fullseye

graph_physarum_path — GRAPH flow op

使い方

Shortest path by the slime mould’s tube dynamics (Tero et al. 2010) on a weighted graph.

lengths is a symmetric (n, n) matrix of tube lengths (0 = no tube, diagonal 0). A unit flow is pushed from source to sink (default n - 1) through tubes of conductance D_e; the pressures solve the weighted Laplacian (Kirchhoff), the flow in a tube is Q_e = D_e (p_u - p_v) / L_e, and each tube adapts dD_e/dt = |Q_e| - D_e (explicit Euler, step dt). Bonifaci, Mehlhorn and Varma (2012) prove that with a unique shortest path the conductances converge to its indicator: D_e -> 1 on it, 0 off it. The path is read by following, from the source, the tube that carries the most flow out of each node (a potential flow has no cycle); it must be at least frac of the thickest tube all along, else the run is refused as not converged.

Returns conductance and flow ((n, n) matrices, flow antisymmetric), path (node indices source → sink), path_length (sum of the tube lengths along it), flow_length = sum |Q_e| L_e (the length of the unit flow; it is >= path_length for every unit flow and equal only when all flow rides shortest paths), iters, converged (max |dD| fell below tol), history (max |dD| per iteration).

Raises ValueError: matrix not square / symmetric / finite / non-negative, self-loops; bad node indices or source == sink; sink unreachable; dt outside (0, 1]; no path survived the threshold (not converged).

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

graph_edge_consensus · graph_core_persistence · tree_morphometry · tree_sholl · tree_run_length

同カテゴリ(flow)

physarum_route · graph_physarum_transport · physarum_transport_image


Provenance: physarum_search.py — GRAPH operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.