Beispiel #1
0
        private void MakeEdges(IGraphLoader <TV, TE> loader, int vid, Dictionary <VfEdge, VfEdge> dctEdge, List <int> mpIvtxGraphIvtxVf)
        {
            var ivtxGraph = loader.PosFromId(vid);
            var vfeKey    = new VfEdge(mpIvtxGraphIvtxVf[ivtxGraph], 0, null);

            MakeOutEdges(loader, vid, dctEdge, mpIvtxGraphIvtxVf, ref vfeKey);
            MakeInEdges(loader, vid, dctEdge, mpIvtxGraphIvtxVf, ref vfeKey);
        }
Beispiel #2
0
        private void MakeEdges(IGraphLoader loader, int nid, Dictionary <VfeNode, VfeNode> dctEdge, int[] mpInodGraphInodVf)
        {
            int     inodGraph = loader.PosFromId(nid);
            int     inodVf    = mpInodGraphInodVf[inodGraph];
            VfeNode vfeKey    = new VfeNode(0, 0, null);

            vfeKey._inodFrom = inodVf;
            MakeOutEdges(loader, nid, dctEdge, mpInodGraphInodVf, ref vfeKey);
            vfeKey._inodTo = inodVf;
            MakeInEdges(loader, nid, dctEdge, mpInodGraphInodVf, ref vfeKey);
        }
Beispiel #3
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];
                }
            }
        }
Beispiel #4
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];
                }
            }
        }