Clusterizator.Krab.Calculators.EquipotencyCalculator.Calculate C# (CSharp) Метод

Calculate() публичный статический Метод

Equipotency calculation method.
public static Calculate ( GraphManager manager ) : double
manager GraphManager /// Storage of graph nodes and connections. ///
Результат double
        public static double Calculate(GraphManager manager)
        {
            // calculating nodes count in each group
            var taxonPower = new List<int>();
            for (int i = 0; i < manager.GetNextTaxonNumber(); i++)
            {
                taxonPower.Add(0);
            }

            for (int j = 0; j < manager.Elements.Count; j++)
            {
                int taxonNumber = manager.Elements[j].TaxonNumber;
                taxonPower[taxonNumber]++;
            }

            // calculating number of not empty groups
            int taxonCount = 0;
            for (int k = 0; k < taxonPower.Count; k++)
            {
                if (taxonPower[k] > 0)
                {
                    taxonCount++;
                }
            }

            // calculating equipotency of groups - h
            // groups count to the power of groups count.
            double h = Math.Pow(taxonCount, taxonCount);
            for (int m = 0; m < taxonPower.Count; m++)
            {
                if (taxonPower[m] != 0)
                {
                    // Elements count in group divided by elements count in whole graph.
                    h *= (double)taxonPower[m] / manager.Elements.Count;
                }
            }

            return h;
        }
EquipotencyCalculator