private void CalculatePathInformation()
        {
            Debug.Assert(pathInformation == null);
            if (commonInformation == null)
            {
                InitializeCommonInformation();
            }
            pathInformation = new PathInformation();

            int    k       = 0;
            double current = 0;

            for (int i = 0; i < container.Size; ++i)
            {
                for (int j = i + 1; j < container.Size; ++j)
                {
                    double way = MinimumWay(i, j);
                    if (way == -1)
                    {
                        continue;
                    }
                    else
                    {
                        current = way;
                    }

                    pathInformation.AveragePathLength += current;

                    if (current > pathInformation.Diameter)
                    {
                        pathInformation.Diameter = current;
                    }

                    if (pathInformation.DistanceDistribution.ContainsKey(current))
                    {
                        ++pathInformation.DistanceDistribution[current];
                    }
                    else
                    {
                        pathInformation.DistanceDistribution.Add(current, 1);
                    }

                    ++k;
                }
            }
            pathInformation.AveragePathLength /= k;
            CalculateCommonInformation();
        }
 public QuickGraphAnalyzer(AbstractNetwork n) : base(n)
 {
     commonInformation      = null;
     pathInformation        = null;
     coefficientInformation = null;
 }