Algorithm Catalog & Compatibility Matrix
View SourceThis document maps all algorithms implemented in YogEx and shows their implementation status in Zog, including native performance notes and future roadmap details.
1. Pathfinding
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Dijkstra | Yog.Pathfinding.Dijkstra | Single-source shortest path (non-negative weights) | ✅ Implemented | Native Zig via Zog.Pathfinding.dijkstra/3. |
| A* | Yog.Pathfinding.AStar | Heuristic-guided shortest path | ✅ Implemented | Native Zig via Zog.Pathfinding.astar/6. Supports Euclidean, Manhattan, and Chebyshev heuristics. |
| Bellman-Ford | Yog.Pathfinding.BellmanFord | Shortest path with negative weights, cycle detection | ✅ Implemented | Native Zig via Zog.Pathfinding.bellman_ford/3. |
| Floyd-Warshall | Yog.Pathfinding.FloydWarshall | All-pairs shortest paths | ✅ Implemented | Native Zig via Zog.Pathfinding.floyd_warshall/1. |
| Johnson's | Yog.Pathfinding.Johnson | All-pairs shortest paths in sparse graphs | ✅ Implemented | Native Zig via Zog.Pathfinding.johnsons/1. |
| Bidirectional Dijkstra | Yog.Pathfinding.Bidirectional | Faster single-pair shortest path | ❌ Missing | WIP/Roadmap — planned for a future native pathfinding update. |
| Bidirectional BFS | Yog.Pathfinding.Bidirectional | Unweighted shortest path | ❌ Missing | WIP/Roadmap — planned for a future native pathfinding update. |
| Yen's K-Shortest | Yog.Pathfinding.Yen | k shortest loopless paths | ❌ Missing | Deferred — low priority, can be implemented if there is demand. |
| Widest Path | Yog.Pathfinding | Maximum bottleneck capacity path | ❌ Missing | Deferred — low priority. |
| Unweighted SSSP | Yog.Pathfinding | BFS shortest path (no heap) | ❌ Missing | Deliberately Omitted — standard Dijkstra handles this efficiently; separate unweighted SSSP is unneeded. |
| Brandes SSSP | Yog.Pathfinding.Brandes | Single-source dependency accumulation | ❌ Missing | Omitted — internally used within Betweenness Centrality, not exposed as a public API. |
| Chinese Postman | Yog.Pathfinding.ChinesePostman | Shortest route visiting every edge | ❌ Missing | Deferred — complex to implement natively; low priority. |
| LCA (Binary Lifting) | Yog.Pathfinding.LCA | Lowest common ancestor in trees | ❌ Missing | Deferred — low priority. |
| Path Utilities | Yog.Pathfinding.Path | Path reconstruction and manipulation | ❌ Missing | Omitted — path reconstruction is handled internally in Zig before returning to Elixir. |
| Distance Matrix | Yog.Pathfinding.Matrix | Matrix-based distance operations | ❌ Missing | Deliberately Omitted — flat array conversions are handled at the NIF boundary. |
| All-Pairs Unweighted | Yog.Pathfinding | Parallel BFS all-pairs shortest paths | ❌ Missing | Deferred — Floyd-Warshall and Johnson's are sufficient for now. |
2. Flow & Cuts
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Edmonds-Karp | Yog.Flow.MaxFlow | Maximum flow (BFS augmenting paths) | ✅ Implemented | Native Zig via Zog.Flow.max_flow/4 (default). |
| Dinic's | Yog.Flow.MaxFlow | Maximum flow (blocking flow) | ❌ Missing | Deliberately Omitted — Zog implements Push-Relabel instead, which is generally faster. |
| Push-Relabel | N/A (Zog exclusive) | High-performance max flow (preflow-push) | ✅ Implemented | Native Zig via Zog.Flow.max_flow/4 with [algorithm: :push_relabel]. |
| Successive Shortest Path | Yog.Flow.SuccessiveShortestPath | Min-cost max-flow | ❌ Missing | WIP/Roadmap — planned for future network flow releases. |
| Stoer-Wagner | Yog.Flow.MinCut | Global minimum cut | ✅ Implemented | Native Zig via Zog.Flow.global_min_cut/1. |
3. Spanning Tree
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Kruskal's | Yog.MST | MST via edge sorting | ✅ Implemented | Native Zig via Zog.MST.kruskal/1. |
| Prim's | Yog.MST | MST via vertex growing | ❌ Missing | Deliberately Omitted — Kruskal's is sufficient for MST; Prim's offers no major advantage here. |
| Borůvka's | Yog.MST | Parallel MST | ❌ Missing | Won't Have — Kruskal's is sufficient. |
| Edmonds' | Yog.MST | Minimum Spanning Arborescence (Directed) | ❌ Missing | Deferred — low priority. |
| Wilson's | Yog.MST | Uniform Spanning Tree (Probabilistic) | ❌ Missing | Won't Have — outside project scope. |
| Max Spanning Tree | Yog.MST | Maximum weight tree | ❌ Missing | Deferred — can be achieved by negating weights and using Kruskal's. |
4. Matching
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Hopcroft-Karp | Yog.Matching | Maximum bipartite matching | ✅ Implemented | Native Zig via Zog.Connectivity.maximum_bipartite_matching/1 and Zog.ResourceGraph.maximum_bipartite_matching/2. |
| Hungarian | Yog.Matching | Weighted bipartite matching | ❌ Missing | WIP/Roadmap — planned for v0.3.0. |
| Blossom | Yog.Matching | Maximum matching in general graphs | ❌ Missing | WIP/Roadmap — planned for v0.3.0. |
5. Connectivity & Components
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Tarjan's SCC | Yog.Connectivity | Strongly connected components | ✅ Implemented | Native Zig via Zog.Connectivity.strongly_connected_components/1. |
| Kosaraju's SCC | Yog.Connectivity | Strongly connected components (two-pass) | ❌ Missing | Deliberately Omitted — Tarjan's SCC is faster and already implemented. |
| Connected Components | Yog.Connectivity | Undirected connected components | ❌ Missing | Deliberately Omitted — can be resolved via SCC on undirected graphs. |
| Weakly Connected Components | Yog.Connectivity.Components | Directed components ignoring direction | ✅ Implemented | Native Zig via Zog.Connectivity.weakly_connected_components/1 and Zog.ResourceGraph.weakly_connected_components/2. |
| Tarjan's Bridges | Yog.Connectivity.Analysis | Bridge edges | ✅ Implemented | Native Zig via Zog.Connectivity.analyze/1. |
| Tarjan's Articulation | Yog.Connectivity.Analysis | Articulation points | ✅ Implemented | Native Zig via Zog.Connectivity.analyze/1. |
| K-Core | Yog.Connectivity.KCore | Core decomposition | ✅ Implemented | Native Zig via Zog.Connectivity.core_numbers/1 and Zog.Connectivity.detect/2. |
| Reachability Exact | Yog.Connectivity.Reachability | Ancestor/descendant counting | ❌ Missing | Deferred — low priority. |
| Reachability HLL | Yog.Connectivity.Reachability | HyperLogLog reachability estimation | ❌ Missing | Won't Have — unneeded, HLL estimation is less critical given native memory limits. |
6. Centrality Measures
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Degree Centrality | Yog.Centrality | Simple connectivity importance | ❌ Missing | Deliberately Omitted — trivial to query directly in Elixir from graph nodes/edges. |
| Closeness Centrality | Yog.Centrality | Distance-based importance | ✅ Implemented | Native Zig via Zog.Centrality.closeness_f64/1. |
| Harmonic Centrality | Yog.Centrality | Distance-based (handles infinite) | ✅ Implemented | Native Zig via Zog.Centrality.harmonic_centrality_f64/1. |
| Betweenness Centrality | Yog.Centrality | Bridge/gatekeeper detection | ✅ Implemented | Native Zig via Zog.Centrality.betweenness_unweighted/1 and Zog.Centrality.betweenness_f64/1. |
| PageRank | Yog.Centrality | Link-quality importance | ✅ Implemented | Native Zig via Zog.Centrality.pagerank/2. |
| HITS | Yog.Centrality | Hub and authority scores | ❌ Missing | Deferred — low priority. |
| Eigenvector Centrality | Yog.Centrality | Influence from neighbors | ✅ Implemented | Native Zig via Zog.Centrality.eigenvector/2. |
| Katz Centrality | Yog.Centrality | Attenuated influence propagation | ✅ Implemented | Native Zig via Zog.Centrality.katz/2. |
| Alpha Centrality | Yog.Centrality | External influence model | ✅ Implemented | Native Zig via Zog.Centrality.alpha_centrality/2. |
7. Community Detection
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Louvain | Yog.Community.Louvain | Modularity optimization | ✅ Implemented | Native Zig via Zog.Community.louvain/2. |
| Leiden | Yog.Community.Leiden | Quality-guaranteed communities | ✅ Implemented | Native Zig via Zog.Community.leiden/2 and Zog.Community.leiden_hierarchical/2. |
| Label Propagation | Yog.Community.LabelPropagation | Very large graphs, speed | ✅ Implemented | Native Zig via Zog.Community.label_propagation/2. |
| Walktrap | Yog.Community.Walktrap | Random-walk communities | ❌ Missing | Deferred — low priority. |
| Infomap | Yog.Community.Infomap | Information-theoretic | ❌ Missing | Deferred — low priority. |
| Girvan-Newman | Yog.Community.GirvanNewman | Hierarchical edge betweenness | ❌ Missing | Deferred — high complexity O(E²V); unfeasible for larger graphs. |
| Clique Percolation | Yog.Community.CliquePercolation | Overlapping communities | ❌ Missing | Deferred — low priority. |
| Fluid Communities | Yog.Community.FluidCommunities | Exact k partitions | ❌ Missing | Deferred — low priority. |
| Local Community | Yog.Community.LocalCommunity | Seed expansion | ❌ Missing | Deferred — low priority. |
8. Community Metrics
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Transitivity | Yog.Community.Metrics | Global clustering coefficient | ❌ Missing | Deferred — average clustering coefficient is usually sufficient. |
| Local Clustering Coefficient | Yog.Community | Per-node clustering coefficient | ✅ Implemented | Native Zig via Zog.Metrics.local_clustering_coefficient/1. |
| Average Clustering Coefficient | Yog.Community | Global average clustering | ✅ Implemented | Native Zig via Zog.Metrics.average_clustering_coefficient/1. |
| Triangle Count | Yog.Community | Global or per-node triangles | ✅ Implemented | Native Zig via Zog.Metrics.triangle_count/1. |
| Community Density | Yog.Community | Per-community edge density | ✅ Implemented | Native Zig via Zog.Metrics.density/1. |
| Modularity | Yog.Community | Partition quality score | ✅ Implemented | Native Zig via Zog.Community.modularity/2. |
9. Traversal & Search
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| BFS | Yog.Traversal | Breadth-first exploration | ❌ Missing | Deliberately Omitted — BFS traversal is done internally in Zig; not exposed as a public API. |
| DFS | Yog.Traversal | Depth-first exploration | ❌ Missing | Deliberately Omitted — DFS traversal is done internally in Zig; not exposed as a public API. |
| Topological Sort | Yog.Traversal | DAG vertex ordering | ❌ Missing | WIP/Roadmap — planned for a future DAG-focused release. |
| Find Path | Yog.Traversal | Any path between nodes | ❌ Missing | Deliberately Omitted — shortest path algorithms (Dijkstra/BFS) handle path finding. |
| Implicit Search | Yog.Traversal.Implicit | On-demand graph traversal | ❌ Missing | Won't Have — FGL/lazy evaluation concepts do not fit Zog's memory model. |
| Kahn's Algorithm | Yog.Traversal.Sort | Topological sort (BFS-based) | ❌ Missing | WIP/Roadmap — planned for a future DAG release. |
| Lexicographical TopSort | Yog.Traversal.Sort | Deterministic topological ordering | ❌ Missing | Won't Have — low priority. |
| Best-First Walk | Yog.Traversal.Walk | Priority-guided traversal | ❌ Missing | Won't Have — low priority. |
| Random Walk | Yog.Traversal.Walk | Stochastic path exploration | ❌ Missing | Deferred — low priority. |
| BFS Path | Yog.Traversal.Walk | BFS shortest path between nodes | ❌ Missing | Deliberately Omitted — Dijkstra handles shortest paths. |
10. Graph Transformations
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Transpose | Yog.Transform | Reverse edge directions | ❌ Missing | Deliberately Omitted — transpose logic is handled at graph build time. |
| Subgraph | Yog.Transform | Induced subgraph by node IDs | ✅ Implemented | Zog.Transform.subgraph/2 and Zog.ResourceGraph.subgraph/3 (native Zig). |
| Ego Graph | Yog.Transform | k-hop neighborhood subgraph | ✅ Implemented | Zog.Transform.ego_graph/3 and Zog.ResourceGraph.ego_graph/3. |
| Transitive Closure | Yog.Transform | Reachability graph | ✅ Implemented | Zog.Transform.transitive_closure/1 and Zog.ResourceGraph.transitive_closure/2. |
| Transitive Reduction | Yog.Transform | Minimal equivalent DAG | ✅ Implemented | Zog.Transform.transitive_reduction/1 and Zog.ResourceGraph.transitive_reduction/2. |
| Quotient Graph | Yog.Transform | Partition-based contraction | ❌ Missing | Won't Have — low priority. |
| Contract | Yog.Transform | Merge two nodes | ✅ Implemented | Zog.Transform.contract/3 and Zog.ResourceGraph.contract/4. |
| Filter Nodes | Yog.Transform | Predicate-based subgraph | ❌ Missing | Deferred — low priority. |
| Filter Edges | Yog.Transform | Predicate-based edge removal | ❌ Missing | Deferred — low priority. |
11. Graph Properties
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Bipartite Check | Yog.Property.Bipartite | 2-colorability test | ✅ Implemented | Native Zig via Zog.Connectivity.bipartite_check/1 and Zog.ResourceGraph.bipartite_check/2. |
| Bipartite Partition | Yog.Property.Bipartite | Two-color assignment | ✅ Implemented | Native Zig via Zog.Connectivity.bipartite_partition/1 and Zog.ResourceGraph.bipartite_partition/2. |
| Max Bipartite Matching | Yog.Property.Bipartite | Maximum matching | ✅ Implemented | Native Zig via Zog.Connectivity.maximum_bipartite_matching/1 and Zog.ResourceGraph.maximum_bipartite_matching/2 (Hopcroft-Karp). |
| Stable Marriage | Yog.Property.Bipartite | Gale-Shapley stable matching | ❌ Missing | Won't Have — outside core graph project scope. |
| Acyclicity Test | Yog.Property.Cyclicity | Cycle detection | ❌ Missing | WIP/Roadmap — planned for a future DAG release. |
| Eulerian Circuit | Yog.Property.Eulerian | Eulerian cycle existence | ❌ Missing | Deferred — low priority. |
| Eulerian Path | Yog.Property.Eulerian | Eulerian path existence | ❌ Missing | Deferred — low priority. |
| Bron-Kerbosch | Yog.Property.Clique | All maximal cliques | ✅ Implemented | Native Zig via Zog.Property.all_maximal_cliques/1. |
| Max Clique | Yog.Property.Clique | Largest clique | ✅ Implemented | Zog.Property.max_clique/1 (filtered from Bron-Kerbosch). |
| Complete Graph | Yog.Property.Structure | Kₙ detection | ❌ Missing | Deferred — low priority. |
| Tree Check | Yog.Property.Structure | Tree verification | ❌ Missing | Deferred — low priority. |
| Forest Check | Yog.Property.Structure | Disjoint trees | ❌ Missing | Deferred — low priority. |
| Branching Check | Yog.Property.Structure | Directed forest | ❌ Missing | Deferred — low priority. |
| Planarity Test | Yog.Property.Structure | Exact LR-test planarity | ❌ Missing | Won't Have — highly complex; outside core project scope. |
| Planar Embedding | Yog.Property.Structure | Combinatorial embedding | ❌ Missing | Won't Have — outside core project scope. |
| Kuratowski Witness | Yog.Property.Structure | Non-planar subgraph | ❌ Missing | Won't Have — outside core project scope. |
| Chordality Test | Yog.Property.Structure | Chordal graph verification | ❌ Missing | Won't Have — outside core project scope. |
| Graph Coloring | Yog.Property.Coloring | Greedy and exact coloring | ✅ Implemented | Native Zig via Zog.Property.coloring_dsatur/1 and Zog.Property.coloring_exact/2. |
| Tree Decomposition | Yog.Property.TreeDecomposition | Validity check/construction | ❌ Missing | Won't Have — outside core project scope. |
| Isomorphism | Yog.Property | Weisfeiler-Lehman equality | ❌ Missing | Deferred — low priority. |
| Graph Hash | Yog.Property | Structural fingerprint | ❌ Missing | Deferred — low priority. |
12. DAG Algorithms
Note: Dedicated DAG optimizations are planned for future releases. Standard graph pathfinding handles basic cases for now.
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Longest Path | Yog.DAG.Algorithm | Critical path in weighted DAG | ❌ Missing | Deferred — low priority. |
| Shortest Path | Yog.DAG.Algorithm | Shortest path in DAG | ❌ Missing | Deliberately Omitted — standard pathfinding handles this. |
| Transitive Closure | Yog.Transform | Reachability matrix | ❌ Missing | Deferred — low priority. |
| Transitive Reduction | Yog.Transform | Minimal equivalent DAG | ❌ Missing | Deferred — low priority. |
| LCA | Yog.Pathfinding.LCA | Lowest common ancestors | ❌ Missing | Deferred — low priority. |
| Topological Generations | Yog.DAG | Layer-by-layer ordering | ❌ Missing | Deferred — low priority. |
| Sources | Yog.DAG | In-degree 0 nodes | ❌ Missing | Deferred — low priority. |
| Sinks | Yog.DAG | Out-degree 0 nodes | ❌ Missing | Deferred — low priority. |
| Ancestors | Yog.DAG | All ancestors of a node | ❌ Missing | Deferred — low priority. |
| Descendants | Yog.DAG | All descendants of a node | ❌ Missing | Deferred — low priority. |
| Single-Source Distances | Yog.DAG | SSSP in DAG | ❌ Missing | Deliberately Omitted — standard pathfinding handles this. |
| Path Count | Yog.DAG | Number of distinct paths | ❌ Missing | Deferred — low priority. |
13. Graph Operations
Note: Standard graph operations are generally left to Elixir to process or build via SoA structures rather than native Zig conversions.
| Algorithm / Op | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Union | Yog.Operation | Graph union | ❌ Missing | Deliberately Omitted — easily done in Elixir during SoA compilation. |
| Intersection | Yog.Operation | Graph intersection | ❌ Missing | Deliberately Omitted — easily done in Elixir. |
| Difference | Yog.Operation | Graph difference | ❌ Missing | Deliberately Omitted — easily done in Elixir. |
| Symmetric Difference | Yog.Operation | XOR of graphs | ❌ Missing | Deliberately Omitted — easily done in Elixir. |
| Cartesian Product | Yog.Operation | Graph product | ❌ Missing | Deferred — low priority. |
| Power Graph | Yog.Operation | k-th power | ❌ Missing | Deferred — low priority. |
| Line Graph | Yog.Operation | Edge-to-vertex dual | ❌ Missing | Deferred — low priority. |
| Transpose | Yog.Operation | Reverse all edges | ❌ Missing | Deliberately Omitted — easily done in Elixir/SoA. |
| Isomorphism | Yog.Operation | Graph equality | ❌ Missing | Deferred — low priority. |
| Subgraph | Yog.Operation | Induced subgraph | ✅ Implemented | Same as Zog.Transform.subgraph/2. |
| Subgraph Check | Yog.Operation | Subgraph relationship | ❌ Missing | Deferred — low priority. |
| Graph Composition | Yog.Operation | Relational graph composition | ❌ Missing | Won't Have — outside project scope. |
| Graph Complement | Yog.Operation | Inverse edge set | ❌ Missing | Deferred — low priority. |
| Disjoint Union | Yog.Operation | Union with re-indexing | ❌ Missing | Deliberately Omitted — easily done in Elixir. |
| Map Nodes | Yog.Operation | Transform node data | ❌ Missing | Deliberately Omitted — nodes are arbitrarily labeled in Elixir. |
| Map Edges | Yog.Operation | Transform edge weights | ❌ Missing | Deliberately Omitted — easily mapped in Elixir. |
| Filter Nodes | Yog.Operation | Filter-based node removal | ❌ Missing | Deferred — low priority. |
| Filter Edges | Yog.Operation | Filter-based edge removal | ❌ Missing | Deferred — low priority. |
| Relabel Nodes | Yog.Operation | Rename node IDs | ❌ Missing | Deliberately Omitted — labels are managed in Elixir. |
14. Multigraph
Note: Zog currently only supports simple directed or undirected graphs. Multigraphs are planned for the v0.5.0 release.
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Eulerian Circuit | Yog.Multi.Eulerian | Hierholzer with edge IDs | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
| Eulerian Path | Yog.Multi.Eulerian | Open Eulerian walk | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
| BFS | Yog.Multi.Traversal | Edge-ID aware BFS | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
| DFS | Yog.Multi.Traversal | Edge-ID aware DFS | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
| Fold Walk | Yog.Multi.Traversal | Stateful traversal | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
| Cycle Check | Yog.Multi | Multigraph cycle detection | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
| Topological Sort | Yog.Multi | Multigraph topological ordering | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
| To Simple Graph | Yog.Multi | Collapse parallel edges | ❌ Missing | WIP/Roadmap — planned for v0.5.0. |
15. Health Metrics
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Diameter | Yog.Health | Longest shortest path | ❌ Missing | WIP/Roadmap — planned for a future metrics update. |
| Radius | Yog.Health | Minimum eccentricity | ❌ Missing | WIP/Roadmap — planned for a future metrics update. |
| Eccentricity | Yog.Health | Max distance from node | ❌ Missing | WIP/Roadmap — planned for a future metrics update. |
| Assortativity | Yog.Health | Degree correlation | ✅ Implemented | Native Zig via Zog.Metrics.assortativity/1. |
| ANF & Effective Diameter | N/A (Zog exclusive) | Approximate Neighborhood Function and 90% effective diameter | ✅ Implemented | Native Zig via Zog.Metrics.anf/2 and Zog.ResourceGraph.anf/2. |
| APL | Yog.Health | Average path length | ❌ Missing | WIP/Roadmap — planned for a future metrics update. |
| Global Efficiency | Yog.Health | Inverse mean distance | ❌ Missing | Deferred — low priority. |
| Local Efficiency | Yog.Health | Neighborhood efficiency | ❌ Missing | Deferred — low priority. |
16. Random Graph Generation
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Erdős-Rényi (GNP) | Yog.Generator.Random | Fixed probability per edge | ✅ Implemented | Natively generated via Zog.Generator.erdos_renyi/3 (using linear-time Batagelj-Brandes). |
| Erdős-Rényi (GNM) | Yog.Generator.Random | Fixed number of edges | ❌ Missing | Deferred — GNP is sufficient for most random graph generation. |
| Barabási-Albert | Yog.Generator.Random | Preferential attachment | ✅ Implemented | Natively generated via Zog.Generator.barabasi_albert/3. |
| Watts-Strogatz | Yog.Generator.Random | Small-world networks | ✅ Implemented | Natively generated via Zog.Generator.watts_strogatz/4. |
| Random Tree | Yog.Generator.Random | Uniform random tree | ❌ Missing | Deferred — low priority. |
| Random Regular | Yog.Generator.Random | Fixed-degree random graph | ❌ Missing | Deferred — low priority. |
| SBM | Yog.Generator.Random | Stochastic Block Model | ❌ Missing | Deferred — low priority. |
| DCSBM | Yog.Generator.Random | Degree-Corrected SBM | ❌ Missing | Deferred — low priority. |
| HSBM | Yog.Generator.Random | Hierarchical SBM | ❌ Missing | Deferred — low priority. |
| Configuration Model | Yog.Generator.Random | Given degree sequence | ❌ Missing | Deferred — low priority. |
| Power Law Graph | Yog.Generator.Random | Scale-free network | ❌ Missing | Deferred — low priority. |
| Kronecker | Yog.Generator.Random | Recursive matrix product | ❌ Missing | Won't Have — outside core scope. |
| R-MAT | Yog.Generator.Random | Recursive matrix model | ❌ Missing | Won't Have — outside core scope. |
| Geometric | Yog.Generator.Random | Distance-threshold graph | ❌ Missing | Deferred — low priority. |
| Waxman | Yog.Generator.Random | Probabilistic distance graph | ❌ Missing | Deferred — low priority. |
17. Classic Graph Generators
| Generator | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Grid 2D | Yog.Generator.Classic | Rectangular lattice | ✅ Implemented | Natively generated via Zog.Generator.grid_2d/3. |
| Others (Complete, Cycle, Path, Star, Wheel, Peterson, Crown, Hypercube, Platonic, Friendship, Book, Turán, platonic solids) | Yog.Generator.Classic | Classic topology generation | ❌ Missing | Deferred — low priority; grid_2d is the most commonly used. Complete/Cycle/Path are easily constructed via Elixir. |
18. Graph Builders
| Builder | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Grid / Toroidal | Yog.Builder | Lattice construction | ❌ Missing | Deliberately Omitted — unneeded, handled via grid_2d generators. |
| Labeled / Live Builders | Yog.Builder | Incremental building | ❌ Missing | Omitted — Zog utilizes the SoA struct for builder patterns. |
19. Functional Graphs (FGL-style)
| Feature | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Inductive Decomposition / Context Embedding / Algorithms | Yog.Functional | Inductive functional graph operations | ❌ Missing | Deliberately Omitted — Zog is built on mutable ArrayGraph/GraphMap representations in native Zig for speed, which are fundamentally incompatible with FGL-style inductive models. |
20. Rendering
| Format | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| ASCII Render | Yog.Render.ASCII | Terminal visualization | ❌ Missing | Deferred — client-side rendering is preferred. |
| DOT Export | Yog.Render.DOT | Graphviz DOT format | ❌ Missing | Deferred — easily implemented in Elixir; low priority. |
| Mermaid Export | Yog.Render.Mermaid | Mermaid.js diagram format | ❌ Missing | Deferred — easily implemented in Elixir; low priority. |
21. Data Structures
| Structure | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Pairing Heap | Yog.PairingHeap | Priority queue | ❌ Missing | Deliberately Omitted — Zig's standard std.PriorityQueue is used natively; no need to expose an Elixir heap module. |
| Disjoint Set | Yog.DisjointSet | Union-Find | ❌ Missing | Deliberately Omitted — handled internally in native code. |
| HyperLogLog | Yog.Connectivity | Cardinality estimation | ❌ Missing | Won't Have — unneeded. |
22. Maze Generation
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Maze generation (Binary Tree, Sidewinder, backtracker, Hunt-and-Kill, Aldous-Broder, Eller's, division, Kruskal/Prim) | Yog.Generator.Maze | Graph-based mazes | ❌ Missing | Won't Have — deliberately out of scope for Zog's core graph library. |
23. Approximation Algorithms
| Algorithm | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Approximation (Diameter, Betweenness, Avg Path, Efficiency, Transitivity, Clique, Cover) | Yog.Approximate | Approximate scaling algorithms | ❌ Missing | Deferred — Zog runs exact algorithms natively. Approximation might be added in future scalability updates. |
24. I/O & Serialization
| Format | YogEx Module | Purpose | Zog Status | Notes / Details |
|---|---|---|---|---|
| Edgelist | Yog.IO | Space-separated edges | ✅ Implemented | Supported via Zog.IO.load/2 and Zog.IO.dump/3. |
| CSV | Yog.IO | Comma-separated edges | ✅ Implemented | Supported via Zog.IO.load/2 and Zog.IO.dump/3. |
| Pajek | Yog.IO | .net format | ✅ Implemented | Supported via Zog.IO.dump/3 (writing only). |
| TGF | Yog.IO | Trivial Graph Format | ✅ Implemented | Supported via Zog.IO.load/2 and Zog.IO.dump/3. |
| Adjlist | Yog.IO | Adjacency list format | ✅ Implemented | Supported via Zog.IO.load/2 and Zog.IO.dump/3. |
| Lesser-used (GDF, GEXF, GraphML, Graph6, Sparse6, JSON, LEDA, Matrix Market, Libgraph) | Yog.IO | Various serialization formats | ❌ Missing | Deferred — only the most common standard formats are implemented in Zog. |