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)); }
/// <summary> /// Turn VfGraph to VfGraph Ivtx mapping into Graph to Graph vid mapping /// </summary> /// <param name="isomorphismVfIvtx1To2">The VfGraph to VfGraph mapping</param> /// <param name="degreeSortedToOriginal1">VfGraph1 Ivtx to Graph1 Ivtx mapping</param> /// <param name="degreeSortedToOriginal2">VfGraph2 Ivtx to Graph2 Ivtx mapping</param> /// <param name="isomorphismVid1ToVid2">Returned Graph1 vid to Graph2 vid mapping</param> /// <param name="isomorphismVid2ToVid1">Returned Graph2 vid to Graph1 vid mapping</param> private void VfGraphVfGraphIvtxToGraphGraphVid( Dictionary <int, int> isomorphismVfIvtx1To2, List <int> degreeSortedToOriginal1, List <int> degreeSortedToOriginal2, out Dictionary <int, int> isomorphismVid1ToVid2, out Dictionary <int, int> isomorphismVid2ToVid1) { // Holding areas for new permutations isomorphismVid1ToVid2 = new Dictionary <int, int>(); isomorphismVid2ToVid1 = new Dictionary <int, int>(); foreach (var pair in isomorphismVfIvtx1To2) { var vfIvtx2 = pair.Value; var ivtx1 = degreeSortedToOriginal1[pair.Key]; var vid1 = _ldr1.IdFromPos(ivtx1); if (vfIvtx2 == MapIllegal) { isomorphismVid1ToVid2[vid1] = MapIllegal; break; } var ivtx2 = degreeSortedToOriginal2[vfIvtx2]; var vid2 = _ldr2.IdFromPos(ivtx2); isomorphismVid1ToVid2[vid1] = vid2; isomorphismVid2ToVid1[vid2] = vid1; } }
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); }
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); }