Skip to main content

maximal_cliques_subset

Function maximal_cliques_subset 

Source
pub fn maximal_cliques_subset(
    graph: &Graph,
    subset: &[VertexId],
    min_size: u32,
    max_size: u32,
    max_results: Option<usize>,
) -> IgraphResult<Vec<Vec<VertexId>>>
Expand description

Returns maximal cliques containing at least one vertex from subset.

Enumerates all maximal cliques of the graph, then filters to keep only those that contain at least one vertex from the given subset. Optional min_size / max_size bounds filter by clique size, and max_results caps output count.

Edge directions are ignored for directed graphs.

§Arguments

  • graph — the input graph.
  • subset — vertex IDs to seed the search. A clique is included if it contains at least one vertex from this set.
  • min_size — minimum clique size (0 = no bound).
  • max_size — maximum clique size (0 = no bound).
  • max_results — maximum number of cliques to return (None = unlimited).

§Errors

Returns InvalidArgument if any vertex in subset is out of range.

§Examples

use rust_igraph::{Graph, maximal_cliques_subset};

// Triangle {0,1,2} plus edge {2,3}
let mut g = Graph::with_vertices(4);
g.add_edge(0, 1).unwrap();
g.add_edge(0, 2).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(2, 3).unwrap();

// Cliques touching vertex 3: only {2,3}
let cliques = maximal_cliques_subset(&g, &[3], 0, 0, None).unwrap();
assert_eq!(cliques.len(), 1);
assert_eq!(cliques[0].len(), 2);

// Cliques touching vertex 0: only {0,1,2}
let cliques = maximal_cliques_subset(&g, &[0], 0, 0, None).unwrap();
assert_eq!(cliques.len(), 1);
assert_eq!(cliques[0].len(), 3);