Finite orthogonal routes indexed by the existing graph edge list #
No new graph representation is introduced.
Positions follow G.vertices and routes follow G.edges, so
every edge occurrence keeps its original index, including parallel edge occurrences. The input
port table is a finite list assigning a pair of three-way ports to each edge occurrence.
Main definitions #
Cslib.Complexity.Graph.orthogonalPositions: finite list of diagonal vertex positions.Cslib.Complexity.Graph.orthogonalRoutes: finite list of routes in edge-list order.
Main results #
Cslib.Complexity.Graph.orthogonalRoutes_endpoints: each indexed route has the actual edge's endpoint positions.Cslib.Complexity.Graph.orthogonalRoutes_wireLength_le: explicit quadratic total wire bound.
Vertex positions indexed by the existing declared vertex list.
Instances For
The finite route list, in exactly the order of the graph's edge occurrences. A missing port-table entry defaults to the left port at both ends. Contact separation requires that the supplied table assigns distinct ports to different incidences.
Instances For
The output lists have the original vertex and edge counts.
A side-indexed version of the exact route formula.
Every route has the actual indexed graph edge's endpoints, regardless of the port table.
Declared, distinct edge endpoints give a proper orthogonal route.
Declared, distinct edge endpoints give a continuously simple route.
Every indexed bridge/port intersection point occurs in the finite candidate cover.
Every contact in the canonical drawing lies at a vertex center or in an explicit list of
2m² candidate crossing sites. Strict transversality is supplied by Layout.route_contact;
this finite cover additionally bounds the number of distinct crossing sites.
Exactly five segments are emitted for every edge occurrence.
The total wire length is at most 90 (n+m)², for n declared vertices and m edge
occurrences. Endpoint membership is the only graph hypothesis needed for this resource bound.