braidpath op• Datenarten: any × any → table
• Aufruf: import fullseye as fs; fs.ledger.homotopy_class_compare(traj_a, traj_b, obstacles=None, angle=0.1, jitter='auto', tol=1e-09) (die Implementierung direkt: import braidpath; braidpath.homotopy_class_compare(traj_a, traj_b, obstacles=None, angle=0.1, jitter='auto', tol=1e-09); aus dem Register: opsdrive.get("homotopy_class_compare"))
• GPU: nein (nur CPU-Referenzimplementierung)
Ob zwei Pfadfamilien mit gleichen Start- und Endpunkten (Mehragentenpläne) in derselben Homotopieklasse liegen.
Kollisionsfrei (weder Agenten untereinander noch mit Hindernispunkten überlappend) bei festgehaltenen Start- und Endpunkten stetig deformierbar ⇔ die Zöpfe sind gleich. Der Zopf stammt aus braid_from_trajectories, verglichen wird über Dynnikov-Koordinaten. Unabhängig vom Projektionswinkel (das Gate variiert mehrere Winkel).
Returns: dict same, word_a / word_b, key_a / key_b, quotient (reduziertes Wort von a b⁻¹ —— leer bedeutet gleiche Klasse, sonst ein Wort dafür, „wie sich die Umläufe unterscheiden“), endpoint_error (größte Abweichung von Start- und Endpunkten), tol_limit (obere Grenze von tol). Start- und Endpunkte müssen innerhalb von tol (Standard ENDPOINT_TOL = 1e-9, in Koordinateneinheiten, größte Differenz je Koordinate) übereinstimmen. tol ist ein Tor, das die Antwort nicht ändert, sondern nur durchlässt / ablehnt; es steht mit Begründung im Register der „wirkungslosen Regler“. Endpunkte von B, die innerhalb von tol abweichen, werden durch gerade Abschnitte vor und nach B auf die Endpunkte von A geführt und erst dann verglichen (word_b ist das Wort dieses angeglichenen Plans). Die obere Grenze von tol ist tol_limit = d / (2√2) (d = kleinster Abstand zwischen den Strängen in der Start- und Endkonfiguration von A, Hindernispunkte eingeschlossen): Jeder Agent bewegt sich je Koordinate höchstens um tol = im Abstand höchstens um √2·tol, daher ändert sich der Abstand zweier Agenten um weniger als 2√2·tol, und die angleichenden Abschnitte kollidieren nicht. Zudem ist die Menge der Konfigurationen, die je Koordinate höchstens tol von den Endpunkten von A entfernt sind, konvex und kollisionsfrei, sodass die Klasse nicht davon abhängt, wie angeglichen wird —— die Antwort hängt weder vom Projektionswinkel noch von tol ab. Ein tol oberhalb der Grenze wird abgelehnt, weil es Pläne mit verschiedenen Endpunkten als gleiche Klasse bezeichnen könnte. Unterscheiden sich die Endpunkte verschiedener Planer durch Rundung, tol innerhalb der Grenze vergrößern oder die Endpunkte vor dem Vergleich angleichen (die Klasse ist die Klasse der Deformationen mit festen Endpunkten, daher lassen sich zwei Pläne mit verschiedenen Endpunkten nicht vergleichen).
Raises: ValueError (unterschiedliche Agentenzahl, Start- oder Endpunkt weiter als tol entfernt, tol negativ, nicht endlich oder ≥ tol_limit, die Reihenfolge der Start- oder Endpunkte entlang der Projektion stimmt nicht überein, Kollision).
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• poc_braid_homotopy_classes — py -3.11 examples/poc_braid_homotopy_classes.py
table als Eingabe)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 · pairwise_winding · homotopy_shortest_paths
*Provenance: braidpath.py — DRIVE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.