public clique(Clique L) { num_networks = 1; data = new List <byte>(L.MemberRangeSize); for (int i = 0; i < L.MemberRangeSize; i++) { data.Add((byte)(L.Contains(i) ? 1 : 0)); //size += L[i]; size += (L.Contains(i) ? 1 : 0); } }
public clique(Clique L) { num_networks = 1; data = new List<byte>(L.MemberRangeSize); for (int i = 0; i < L.MemberRangeSize; i++) { data.Add((byte)(L.Contains(i) ? 1 : 0)); //size += L[i]; size += (L.Contains(i) ? 1 : 0); } }
/// <summary> /// Expands a clique to a maximal complete /// </summary> /// <param name="clan">Clique to expand</param> void ExpandToMaximal(Clique clan) { Clique maximalityChecker; // Temporal clique for checking maximality // Expand NewClique to a maximal complete subgraph foreach (var z in Vertices) { if (!clan.Contains(z)) { maximalityChecker = new Clique(clan); maximalityChecker.Add(z); if (IsComplete(maximalityChecker)) { clan.Add(z); } } } // Destroy every no maximal elements of the graph HashSet <Clique> clone = new HashSet <Clique>(_cliques); clone.Remove(clan); foreach (var c in clone) // Iterate over a clone of _cliques { if (clan.IsSupersetOf(c)) { _cliques.Remove(c); } } }
/// <summary> /// Expands a clique to a maximal complete in a given graph /// </summary> /// <param name="graph">Graph to use to determine maximality.</param> /// <param name="clan">Clique to expand.</param> static void ExpandToMaximal(IGraph <T> graph, Clique clan) { Clique tempo; // Temporal clique for checking maximality // Expand NewClique to a maximal complete subgraph foreach (var z in graph.Vertices) { if (!clan.Contains(z)) { tempo = new Clique(clan); tempo.Add(z); if (IsComplete(graph, tempo)) { clan.Add(z); } } } }