Example #1
0
        public int Compare(int x, int y)
        {
            if (x == y)
            {
                return(0);
            }
            int nidX    = _loader.IdFromPos(x);
            int nidY    = _loader.IdFromPos(y);
            int xDegree = _loader.InEdgeCount(nidX) + _loader.OutEdgeCount(nidX);
            int yDegree = _loader.InEdgeCount(nidY) + _loader.OutEdgeCount(nidY);

            return(xDegree < yDegree ? 1 : -1);
        }
        // Sorts positions in _loader so their corresponding vertices run from
        // highest total degree to lowest
        public int Compare(int x, int y)
        {
            if (x == y)
            {
                return(0);
            }
            var vidX    = _loader.IdFromPos(x);
            var vidY    = _loader.IdFromPos(y);
            var xDegree = _loader.InEdgeCount(vidX) + _loader.OutEdgeCount(vidX);
            var yDegree = _loader.InEdgeCount(vidY) + _loader.OutEdgeCount(vidY);

            return(yDegree.CompareTo(xDegree));
        }
Example #3
0
        internal VfnNode(IGraphLoader loader, int inodGraph, Dictionary <VfeNode, VfeNode> dctEdge, int[] mpInodGraphInodVf)
        {
            int nid = loader.IdFromPos(inodGraph);

            _objAttr      = loader.GetNodeAttr(nid);
            _arvfeEdgeOut = new VfeNode[loader.OutEdgeCount(nid)];
            _arvfeEdgeIn  = new VfeNode[loader.InEdgeCount(nid)];
            MakeEdges(loader, nid, dctEdge, mpInodGraphInodVf);
        }
Example #4
0
        internal VfVertex(IGraphLoader <TV, TE> loader, int ivtxGraph, Dictionary <VfEdge, VfEdge> dctEdge, List <int> mpIvtxGraphIvtxVf)
        {
            var vid = loader.IdFromPos(ivtxGraph);

            _attribute = loader.GetVertexAttr(vid);
            _outEdges  = new VfEdge[loader.OutEdgeCount(vid)];
            _inEdges   = new VfEdge[loader.InEdgeCount(vid)];
            MakeEdges(loader, vid, dctEdge, mpIvtxGraphIvtxVf);
        }
Example #5
0
        private void MakeInEdges(IGraphLoader <TV, TE> loader, int vid, Dictionary <VfEdge, VfEdge> dctEdge, List <int> mpIvtxGraphIvtxVf, ref VfEdge vfeKey)
        {
            for (var i = 0; i < loader.InEdgeCount(vid); i++)
            {
                TE attr;
                vfeKey.IvtxFrom = mpIvtxGraphIvtxVf[loader.PosFromId(loader.GetInEdge(vid, i, out attr))];

                if (!dctEdge.ContainsKey(vfeKey))
                {
                    _inEdges[i] = dctEdge[vfeKey] = new VfEdge(vfeKey.IvtxFrom, vfeKey.IvtxTo, attr);
                    vfeKey      = new VfEdge(vfeKey.IvtxFrom, vfeKey.IvtxTo, null);
                }
                else
                {
                    _inEdges[i] = dctEdge[vfeKey];
                }
            }
        }
Example #6
0
        private void MakeInEdges(IGraphLoader loader, int nid, Dictionary <VfeNode, VfeNode> dctEdge, int[] mpInodGraphInodVf, ref VfeNode vfeKey)
        {
            object attr;

            for (int i = 0; i < loader.InEdgeCount(nid); i++)
            {
                vfeKey._inodFrom = mpInodGraphInodVf[loader.PosFromId(loader.GetInEdge(nid, i, out attr))];

                if (!dctEdge.ContainsKey(vfeKey))
                {
                    _arvfeEdgeIn[i] = dctEdge[vfeKey] = new VfeNode(vfeKey._inodFrom, vfeKey._inodTo, attr);
                    vfeKey          = new VfeNode(vfeKey._inodFrom, vfeKey._inodTo, null);
                }
                else
                {
                    _arvfeEdgeIn[i] = dctEdge[vfeKey];
                }
            }
        }