|
| const char * | Aleph::to_string (const Planarity_Certificate_Type type) noexcept |
| | Return readable name for certificate type.
|
| |
| bool | Aleph::planarity_detail::interval_empty (const Interval &i) noexcept |
| |
| bool | Aleph::planarity_detail::pair_empty (const Conflict_Pair &p) noexcept |
| |
| std::string | Aleph::planarity_detail::json_escape_string (const std::string &s) |
| |
| std::string | Aleph::planarity_detail::dot_escape_string (const std::string &s) |
| |
| std::string | Aleph::planarity_detail::xml_escape_string (const std::string &s) |
| |
| template<class PtrT > |
| std::string | Aleph::planarity_detail::pointer_to_string (const PtrT ptr) |
| |
| template<class GT > |
| void | Aleph::planarity_detail::collect_certificate_nodes (const Planarity_Test_Result< GT > &result, Array< typename GT::Node * > &nodes, DynMapTree< typename GT::Node *, size_t > &node_to_id) |
| |
| double | Aleph::planarity_detail::orient2d (const double ax, const double ay, const double bx, const double by, const double cx, const double cy) noexcept |
| |
| bool | Aleph::planarity_detail::bounding_boxes_intersect (const double ax, const double ay, const double bx, const double by, const double cx, const double cy, const double dx, const double dy) noexcept |
| |
| bool | Aleph::planarity_detail::segments_properly_intersect (const double ax, const double ay, const double bx, const double by, const double cx, const double cy, const double dx, const double dy) noexcept |
| |
| template<class GT , class SA = Dft_Show_Arc<GT>> |
| Planarity_Test_Result< GT > | Aleph::planarity_test (const GT &g, SA sa=SA(), const Planarity_Test_Options &options=Planarity_Test_Options()) |
| | Execute planarity test on an Aleph graph.
|
| |
| template<class GT > |
| Planarity_Test_Result< GT > | Aleph::planarity_test (const GT &g, const Planarity_Test_Options &options) |
| | Overload with default arc selector.
|
| |
| template<class GT , class SA = Dft_Show_Arc<GT>> |
| bool | Aleph::is_planar_graph (const GT &g, SA sa=SA(), const Planarity_Test_Options &options=Planarity_Test_Options()) |
| | Convenience boolean API for planarity.
|
| |
| template<class GT > |
| bool | Aleph::is_planar_graph (const GT &g, const Planarity_Test_Options &options) |
| | Overload with default arc selector.
|
| |
| template<class GT > |
| Planar_Dual_Metadata< GT > | Aleph::planar_dual_metadata (const Planarity_Test_Result< GT > &result) |
| | Build face and dual-edge metadata from a planar embedding result.
|
| |
| template<class GT , class DGT = Default_Planar_Dual_Graph<GT>> |
| DGT | Aleph::build_planar_dual_graph (const Planar_Dual_Metadata< GT > &md) |
| | Build an Aleph dual graph from face/dual metadata.
|
| |
| template<class GT , class DGT = Default_Planar_Dual_Graph<GT>> |
| DGT | Aleph::build_planar_dual_graph (const Planarity_Test_Result< GT > &result) |
| | Build an Aleph dual graph directly from a planarity result.
|
| |
| template<class GT > |
| Planar_Geometric_Drawing< GT > | Aleph::planar_geometric_drawing (const Planarity_Test_Result< GT > &result, const Planar_Geometric_Drawing_Options &options=Planar_Geometric_Drawing_Options()) |
| | Build embedding-aware 2D node coordinates from a planar result.
|
| |
| template<class GT , class Node_Label = Dft_Certificate_Node_Label<GT>> |
| std::string | Aleph::nonplanar_certificate_to_json (const Planarity_Test_Result< GT > &result, Node_Label node_label=Node_Label(), const NonPlanar_Certificate_Export_Options &options=NonPlanar_Certificate_Export_Options()) |
| | Export non-planar certificate as JSON.
|
| |
| template<class GT , class Node_Label = Dft_Certificate_Node_Label<GT>> |
| std::string | Aleph::nonplanar_certificate_to_dot (const Planarity_Test_Result< GT > &result, Node_Label node_label=Node_Label(), const NonPlanar_Certificate_Export_Options &options=NonPlanar_Certificate_Export_Options()) |
| | Export non-planar certificate as GraphViz DOT.
|
| |
| template<class GT > |
| NonPlanar_Certificate_Validation< GT > | Aleph::validate_nonplanar_certificate (const Planarity_Test_Result< GT > &result) |
| | Validate structural consistency of a non-planar certificate.
|
| |
| template<class GT > |
| bool | Aleph::nonplanar_certificate_is_valid (const Planarity_Test_Result< GT > &result) |
| | Convenience predicate over validate_nonplanar_certificate().
|
| |
| template<class GT , class Node_Label = Dft_Certificate_Node_Label<GT>> |
| std::string | Aleph::nonplanar_certificate_to_graphml (const Planarity_Test_Result< GT > &result, Node_Label node_label=Node_Label(), const NonPlanar_Certificate_Export_Options &options=NonPlanar_Certificate_Export_Options()) |
| | Export non-planar certificate as GraphML.
|
| |
| template<class GT , class Node_Label = Dft_Certificate_Node_Label<GT>> |
| std::string | Aleph::nonplanar_certificate_to_gexf (const Planarity_Test_Result< GT > &result, Node_Label node_label=Node_Label(), const NonPlanar_Certificate_Export_Options &options=NonPlanar_Certificate_Export_Options()) |
| | Export non-planar certificate as GEXF.
|
| |
Planarity testing on Aleph graphs.
This header provides a dedicated API to test whether a graph is planar, with optional combinatorial embedding and optional non-planarity witness.
Problem solved
Decide if a graph can be drawn on the plane with no edge crossings.
Notes on input model
The test is performed on the underlying undirected simple graph:
- arc orientation is ignored for digraphs,
- self-loops are ignored,
- parallel arcs are collapsed.
This normalization preserves planarity.
Core algorithm
The core checker uses the Left-Right planarity test (de Fraysseix-Rosenstiehl / Brandes style), with:
- DFS orientation,
- lowpoint / lowpoint2 values,
- conflict-pair stack constraints.
Optional advanced outputs
- Combinatorial embedding (rotation system + face walk summary): LR construction first, then bounded deterministic LR-local repair (reversals/swaps, multi-start coordinate descent), with optional bounded exact fallback.
- Embedding-aware geometric drawing: 2D node coordinates with harmonic relaxation and optional crossing validation.
- Certificate export: machine-readable JSON, DOT, GraphML and GEXF serializers.
- Certificate structural validation: checks witness internal consistency before external-tool ingestion.
- Non-planarity witness:
- Kuratowski subdivision classification (K5 or K3,3) on branch-core search,
- otherwise a minimal non-planar obstruction (edge-minimal by deletion).
Complexity
- Normalization: O(E log E)
- LR planarity test on simplified graph: O(V + E)
- Optional embedding:
- LR-first + bounded LR-local repair
- optional bounded exponential exact fallback
- Optional certificate extraction: O(M * (V + E)) LR invocations in practice
Definition in file Planarity_Test.H.