Example #1
0
        public void Can_create_clones()
        {
            var a     = new Node("A");
            var b     = new Node("B");
            var ab    = new Edge(a, b);
            var clone = ab.Clone();

            Assert.Equal(ab.Source, clone.Source);
            Assert.Equal(ab.Target, clone.Target);
            Assert.Equal(ab, clone);
            Assert.NotEqual(ab.Id, clone.Id);
        }
Example #2
0
        /// <summary>
        /// removes edges which are not reachable from the initial vertex
        /// </summary>
        /// <param name="edgeToGo">from the vertix i we go to edgeToGo[i]</param>
        /// <param name="source">the sources where we can start the game</param>
        internal void CleanTheStrategy(Edge[] edgeToGo,int[] source)
        {
            Queue q=new Queue();
              foreach(int s in source)
            q.Enqueue(s);

              Edge []ls=edgeToGo.Clone() as Edge[];

              while(q.Count>0){
            int v=(int)q.Dequeue();
            if(IsChoicePoint(v))
              foreach(Edge l in EdgesAtVertex(v))
            q.Enqueue(l.target);
            else if(v<ls.Length){
              Edge l=ls[v];
              if(l!=null){
            q.Enqueue(l.target);
            ls[v]=null;
              }
            }
              }

              //eraze everything non-reachable from the source
              for(int i=0;i<ls.Length;i++)
            if(ls[i]!=null)
              edgeToGo[i]=null;
        }