import { FrontierState } from '../../frontier-state.js'; import { TerminationStrategy } from './termination-strategy.js'; /** * Transitive Connectivity Termination Strategy * * Terminates expansion when the overlap graph is connected, meaning all seeds * are transitively connected via overlap events. This is less strict than * FullPairwise, allowing termination before all C(N,2) pairs directly overlap. * * **Algorithm**: Build an overlap graph where nodes = frontiers and edges = overlaps. * Terminate when the graph is connected (all nodes reachable from any starting node). * * **Complexity**: O(N + E) where N = number of seeds, E = overlap events * * **Thesis Alignment**: This strategy provides a balanced approach, ensuring * connectivity between all seed regions while potentially terminating earlier * than FullPairwise. This is useful for large N where full pairwise overlap * may be excessive. */ export declare class TransitiveConnectivityStrategy implements TerminationStrategy { /** Strategy identifier for naming SUT variants */ readonly id = "transitive-connectivity"; /** * Check if expansion should terminate based on current state. * * @param allFrontiers - All frontiers in the expansion * @param overlapEvents - All recorded overlap events so far * @param _iteration - Current iteration count (unused) * @returns true if expansion should terminate */ shouldTerminate(allFrontiers: FrontierState[], overlapEvents: readonly { frontierA: number; frontierB: number; }[], _iteration: number): boolean; /** * Check if an undirected graph is connected using BFS. * * @param adj - Adjacency list representation of graph * @param n - Number of nodes * @returns true if graph is connected * @private */ private isConnected; } //# sourceMappingURL=transitive-connectivity.strategy.d.ts.map