Esempio n. 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);
     }
 }
Esempio n. 2
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);
     }
 }
Esempio n. 3
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);
                }
            }
        }
Esempio n. 4
0
        /// <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);
                    }
                }
            }
        }