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);