import { GraphSpec } from '../spec'; import { TestEdge, TestNode } from './types'; interface SeededRandom { next(): number; integer(min: number, max: number): number; choice(array: T[]): T; } /** * Generate flow network with source and sink nodes. * All nodes lie on paths from source to sink. Edges have capacity weights. * @param nodes * @param edges * @param spec * @param source - Source node ID * @param sink - Sink node ID * @param rng */ export declare const generateFlowNetworkEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, source: string, sink: string, rng: SeededRandom) => void; /** * Generate Eulerian or semi-Eulerian graph. * Eulerian graphs have all vertices with even degree (allow Eulerian circuit). * Semi-Eulerian graphs have exactly 2 vertices with odd degree (allow Eulerian trail). * @param nodes * @param edges * @param spec * @param rng */ export declare const generateEulerianEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate k-vertex-connected graph. * A graph is k-vertex-connected if it has at least k+1 vertices and * cannot be disconnected by removing fewer than k vertices. * * Construction approach: * 1. Start with K_{k+1} (complete graph on k+1 vertices) * 2. Add remaining vertices, each connected to at least k existing vertices * @param nodes * @param edges * @param spec * @param k * @param rng */ export declare const generateKVertexConnectedEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, k: number, rng: SeededRandom) => void; /** * Generate k-edge-connected graph. * A graph is k-edge-connected if it has at least k+1 vertices and * cannot be disconnected by removing fewer than k edges. * * Construction approach: * 1. Create a k-regular or near-k-regular graph * 2. This ensures minimum degree ≥ k, which guarantees edge connectivity ≥ k * @param nodes * @param edges * @param spec * @param k * @param rng */ export declare const generateKEdgeConnectedEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, k: number, rng: SeededRandom) => void; /** * Generate treewidth-bounded graph using k-tree construction. * A k-tree is a chordal graph with treewidth exactly k. * * Construction algorithm: * 1. Start with a (k+1)-clique (complete graph on k+1 vertices) * 2. Repeatedly add new vertices, each connected to a k-clique of existing vertices * * This generates a chordal graph with treewidth exactly k. * @param nodes * @param edges * @param spec * @param k * @param rng */ export declare const generateTreewidthBoundedEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, k: number, rng: SeededRandom) => void; /** * Generate k-colorable graph. * A k-colorable graph is a graph whose vertices can be colored with k colors * such that no two adjacent vertices share the same color. * * Construction approach: Create a k-partite graph * 1. Partition vertices into k color classes * 2. Add edges only between vertices of different colors * @param nodes * @param edges * @param spec * @param k * @param rng */ export declare const generateKColorableEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, k: number, rng: SeededRandom) => void; /** * Generate connected graph with cycles. * @param nodes * @param edges * @param spec * @param rng */ export declare const generateConnectedCyclicEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate forest (disconnected trees). * @param nodes * @param edges * @param spec * @param rng */ export declare const generateForestEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; /** * Generate disconnected graph. * For sparse, creates forest then optionally adds 1 edge for cycles. * For higher densities, creates components with cycles. * @param nodes * @param edges * @param spec * @param rng */ export declare const generateDisconnectedEdges: (nodes: TestNode[], edges: TestEdge[], spec: GraphSpec, rng: SeededRandom) => void; export {}; //# sourceMappingURL=connectivity.d.ts.map