braidpath opimage2d × any × any → tableimport fullseye as fs; fs.ledger.homotopy_shortest_paths(grid, start, goal, k=4, obstacles=None, angle=0.1, max_states=400000, max_cost=None) (実装を直接呼ぶなら import braidpath; braidpath.homotopy_shortest_paths(grid, start, goal, k=4, obstacles=None, angle=0.1, max_states=400000, max_cost=None)、台帳から引くなら opsdrive.get("homotopy_shortest_paths"))格子(True = 走れる、4 近傍)の上で、start から goal へのホモトピー類の違う最短経路を短い順に k 本。
状態 = (マス, 組紐の Dynnikov 座標)。障害物の点を動かない紐として、1 手ごとに交差の文字を足して座標を更新する (座標は類の完全な不変量なので、同じ (マス, 座標) は 1 回しか開かない)。Dijkstra がこの「類で持ち上げた」格子を 費用の順に開くので、goal に新しい座標で着いた順が、類ごとの最短経路の短い順になる。
obstacles : 穴の代表の点 (M, 2)。省略すると :func:grid_hole_points(外周に触れない塞がりの成分ごとに 1 点)。
max_states / max_cost : 開く状態の数・費用の上限(類は無限にある —— 穴のまわりを何周でも回れる)。
Returns: dict paths(各類の (L, 2) の (row, col) の列、短い順)、costs、words(障害物と合わせた組紐語)、
keys、obstacles、states(開いた状態の数)、complete(k 本そろったか)。
py -3.11 examples/poc_braid_homotopy_classes.pytable を入力に取れる)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
braidpath)braid_from_trajectories · braid_reduce · braid_artin_images · dynnikov_coordinates · dynnikov_act · braid_equivalent · homotopy_class_compare · pairwise_winding
Provenance: braidpath.py — DRIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.