/** * Grafo genérico representado como lista de adyacencia con pesos. * Soporta grafos dirigidos y no dirigidos, con aristas ponderadas opcionales. * Incluye recorridos BFS y DFS. * @template T - El tipo de los vértices. Debe ser usable como clave de Map. */ export declare class Graph { #private; /** * @param directed - true para grafo dirigido (por defecto), false para no dirigido. */ constructor(directed?: boolean); /** * Agrega un vértice al grafo. No hace nada si ya existe. */ addVertex(v: T): void; /** * Elimina un vértice y todas sus aristas incidentes. * @returns true si el vértice existía, false si no. */ removeVertex(v: T): boolean; /** * Agrega una arista de u hacia v con peso opcional (por defecto 1). * En grafos no dirigidos, también agrega v → u con el mismo peso. * Crea los vértices automáticamente si no existen. */ addEdge(u: T, v: T, weight?: number): void; /** * Elimina la arista de u a v. * En grafos no dirigidos, también elimina v → u. * @returns true si la arista existía, false si no. */ removeEdge(u: T, v: T): boolean; /** * Indica si el vértice existe en el grafo. */ hasVertex(v: T): boolean; /** * Indica si existe una arista de u a v. */ hasEdge(u: T, v: T): boolean; /** * Retorna los vértices adyacentes a v (destinos de sus aristas salientes). */ neighbors(v: T): T[]; /** * Retorna el peso de la arista u → v, o undefined si no existe. */ weight(u: T, v: T): number | undefined; /** * Recorrido en anchura (BFS) desde el vértice start. * Visita primero los vértices más cercanos. * @returns Array de vértices en orden de visita. Vacío si start no existe. */ bfs(start: T): T[]; /** * Recorrido en profundidad (DFS) desde el vértice start. * Explora cada rama hasta el fondo antes de retroceder. * @returns Array de vértices en orden de visita. Vacío si start no existe. */ dfs(start: T): T[]; /** * Número de vértices en el grafo. */ get vertexCount(): number; /** * Número de aristas en el grafo. * En grafos no dirigidos, cada arista se cuenta una sola vez. */ get edgeCount(): number; /** * Indica si el grafo está vacío (sin vértices). */ isEmpty(): boolean; /** * Indica si el grafo es dirigido. */ get directed(): boolean; /** * Vacía el grafo completamente. */ clear(): void; } //# sourceMappingURL=graph.d.ts.map