示例#1
0
        public static IEnumerable <Pair <int> > WarmStart(this PINQCollection <Pair <int> > graph, int maxdeg, int numnodes, double eps)
        {
            maxdeg   = Math.Max(1, maxdeg);
            numnodes = Math.Max(1, numnodes);

            Console.WriteLine("Doing WarmStart with maxdeg {0} and numnodes {1}", maxdeg, numnodes);

            var odegrees = graph.OutDegCCDF(eps);   // measures ccdf of outgoing degrees
            var idegrees = graph.InDegCCDF(eps);    // measures ccdf of incoming degrees
            var idegrseq = graph.InDegSeq(eps);     // measures  cdf of outgoing degrees
            var odegrseq = graph.OutDegSeq(eps);    // measures  cdf of incoming degrees

            var ods = Enumerable.Range(0, maxdeg).Select(i => odegrees[i]).ToArray();
            var ids = Enumerable.Range(0, maxdeg).Select(i => idegrees[i]).ToArray();
            var odq = Enumerable.Range(0, numnodes).Select(i => odegrseq[i]).ToArray();
            var idq = Enumerable.Range(0, numnodes).Select(i => idegrseq[i]).ToArray();

            var idfitted = DegreeSequenceFitter.FitDegSeq(ids, idq);
            var odfitted = DegreeSequenceFitter.FitDegSeq(ods, odq);

            //System.IO.File.WriteAllLines("odegrees.txt", ods.Select((x,i) => i + "\t" + x));
            //System.IO.File.WriteAllLines("odegrseq.txt", odq.Select((x, i) => i + "\t" + x));
            //System.IO.File.WriteAllLines("odfitted.txt", odfitted.Select((x, i) => i + "\t" + x));

            var synthGraph = DegreeSequenceFitter.GenerateGraph(odfitted, idfitted, numnodes);

            return(synthGraph);
        }