import { GraphSpec } from '../spec'; import { TestEdge, TestNode } from './types'; interface SeededRandom { next(): number; integer(min: number, max: number): number; choice(array: T[]): T; } /** * Generate split graph edges. * Split graph = vertices partition into clique K + independent set I. * Algorithm: Partition nodes ~1/3 clique + ~2/3 independent, add all clique edges, * add random cross edges with ~50% density. * * @param nodes - Graph nodes * @param edges - Edge list to populate * @param spec - Graph specification * @param rng - Seeded random number generator */ export declare const generateSplitEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate cograph edges (P4-free graphs). * Cographs can be constructed from single vertices by disjoint union and complement operations. * Algorithm: Build cotree via union/complement operations, convert to graph. * * @param nodes - Graph nodes * @param edges - Edge list to populate * @param spec - Graph specification * @param rng - Seeded random number generator */ export declare const generateCographEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate claw-free graph edges. * Claw-free = no induced K_{1,3} (star with 3 leaves). * Algorithm: Use complete graph (K_n) which is always claw-free. * * @param nodes - Graph nodes * @param edges - Edge list to populate * @param spec - Graph specification * @param rng - Seeded random number generator */ export declare const generateClawFreeEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate chordal graph edges. * Chordal graphs have no induced cycles > 3 (all cycles have chords). * Algorithm: Use k-tree construction (simplified treewidth). * @param nodes * @param edges * @param spec * @param rng */ export declare const generateChordalEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate interval graph edges. * Interval graphs = intersection graphs of intervals on real line. * Algorithm: Generate random intervals, connect if they intersect. * @param nodes * @param edges * @param spec * @param rng */ export declare const generateIntervalEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate permutation graph edges. * Permutation graphs = intersection graphs of line segments between parallel lines. * Algorithm: Generate permutation π, create edge (i, j) iff (i - j)(π(i) - π(j)) < 0. * @param nodes * @param edges * @param spec * @param rng */ export declare const generatePermutationEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate comparability graph edges. * Comparability graphs = transitively orientable graphs (from partial orders). * Algorithm: Generate random DAG, create undirected graph from transitive reduction. * @param nodes * @param edges * @param spec * @param rng */ export declare const generateComparabilityEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate perfect graph edges. * Perfect graphs = ω(H) = χ(H) for all induced subgraphs H. * Algorithm: Generate graphs known to be perfect (chordal, bipartite, cograph). * @param nodes * @param edges * @param spec * @param rng */ export declare const generatePerfectEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; export {}; //# sourceMappingURL=structural-classes.d.ts.map