Esempio n. 1
0
        internal Graph IsomorphicShuffling(Random rnd)
        {
            Graph graph = new Graph();

            int[] ariShuffle = new int[NodeCount];

            for (int i = 0; i < NodeCount; i++)
            {
                ariShuffle[i] = i;
            }
            Shuffle <int>(ariShuffle, rnd);

            graph.InsertNodes(NodeCount);

            for (int inod = 0; inod < NodeCount; inod++)
            {
                int   inodShuffled = ariShuffle[inod];
                nNode nod          = _nodes[inodShuffled];

                foreach (eNode end in nod._edgesFrom.Values)
                {
                    graph.InsertEdge(ariShuffle[PosFromId(end._idFrom)], ariShuffle[PosFromId(end._idTo)]);
                }
            }
            return(graph);
        }
Esempio n. 2
0
        public void DeleteEdge(int nidFrom, int nidTo)
        {
            nNode nodFrom = FindNode(nidFrom);
            nNode nodTo   = FindNode(nidTo);
            eNode end     = nodFrom.FindOutEdge(nidTo);

            nodFrom._edgesFrom.Remove(nidTo);
            nodTo._edgesTo.Remove(end);
        }
Esempio n. 3
0
        public int InsertNode(object attr)
        {
            nNode nod = new nNode();

            nod._id   = (int)(_nodes.Count);
            nod._attr = attr;
            _nodes.Add(nod._id, nod);
            return(nod._id);
        }
Esempio n. 4
0
            public void TestInsertNode()
            {
                Graph gr = new Graph();

                gr.InsertNode(1);
                nNode nod = gr.FindNode(0);

                Assert.IsNotNull(nod);
                nod = gr.FindNode(1);
                Assert.IsTrue(false);
            }
Esempio n. 5
0
        public void DeleteNode(int nid)
        {
            nNode nod = FindNode(nid);

            eNode[] arend = new eNode[nod._edgesFrom.Count + nod._edgesTo.Count];
            nod._edgesFrom.Values.CopyTo(arend, 0);
            nod._edgesTo.CopyTo(arend, nod._edgesFrom.Count);

            foreach (eNode end in arend)
            {
                DeleteEdge(end._idFrom, end._idTo);
            }
            _nodes.Remove(nod._id);
        }
Esempio n. 6
0
        public void InsertEdge(int nidFrom, int nidTo, object attr)
        {
            eNode end     = new eNode();
            nNode nodFrom = FindNode(nidFrom);
            nNode nodTo   = FindNode(nidTo);

            end._idFrom = nidFrom;
            end._idTo   = nidTo;
            end._attr   = attr;
            try
            {
                nodFrom._edgesFrom.Add(nidTo, end);
                nodTo._edgesTo.Add(end);
            }
            catch (Exception)
            {
                VfException.Error("Inconsistent Data");
            }
        }
Esempio n. 7
0
 public void TestFindNodeNotFound()
 {
     Graph gr  = new Graph();
     nNode nod = gr.FindNode(0);
 }
Esempio n. 8
0
 private void readNodesSection()
 {
     UInt32 size = bReader.ReadUInt32();
     //Skip((int)size + 4);
     Skip(4);
     UInt32 nNodes = bReader.ReadUInt32();
     Skip(4);
     for (UInt32 i = 0; i < nNodes; ++i)
     {
         Quaternion q = new Quaternion(bReader.ReadSingle(), bReader.ReadSingle(), bReader.ReadSingle(), bReader.ReadSingle());
         Skip(16);
         Vector3 v = new Vector3(bReader.ReadSingle(), bReader.ReadSingle(), bReader.ReadSingle());
         Skip(32);
         int p = bReader.ReadInt32();
         Skip(76);
         int l = bReader.ReadInt32();
         char[] cs = bReader.ReadChars(l);
         nNode n = new nNode(cs, q, v, (uint)p);
         Nodes.Add(n);
     }
 }