Пример #1
0
        /// <summary>
        /// Generate the relevant cycle basis from a precomputed set of initial
        /// cycles.
        /// </summary>
        /// <param name="initial">set of initial cycles.</param>
        /// <exception cref="System.ArgumentNullException">null InitialCycles provided</exception>
        internal RelevantCycles(InitialCycles initial)
        {
            CheckNotNull(initial, nameof(initial), "No InitialCycles provided");

            this.basis = new GreedyBasis(initial.GetNumberOfCycles(), initial.GetNumberOfEdges());

            // processing by size add cycles which are independent of smaller cycles
            foreach (var length in initial.Lengths)
            {
                basis.AddAll(Independent(initial.GetCyclesOfLength(length)));
            }
        }
Пример #2
0
        public virtual void AddAll()
        {
            var c1 = new Mock <Cycle>((InitialCycles)null, (ShortestPaths)null, (int[])null);
            var c2 = new Mock <Cycle>((InitialCycles)null, (ShortestPaths)null, (int[])null);

            c1.SetupGet(c => c.EdgeVector).Returns(new BitArray(0));
            c1.SetupGet(c => c.EdgeVector).Returns(new BitArray(0));
            c2.SetupGet(c => c.EdgeVector).Returns(new BitArray(0));
            var basis = new GreedyBasis(2, 0);

            Assert.IsTrue(basis.Members.Count == 0);
            basis.AddAll(new[] { c1.Object, c2.Object });
            Assert.IsTrue(basis.Members.Contains(c1.Object));
            Assert.IsTrue(basis.Members.Contains(c2.Object));
        }