Пример #1
0
        /// <summary>
        /// Overriden "Equals" function
        /// </summary>
        /// <param name="o">Object to compare</param>
        /// <returns>True if o equals this object and false otherwise</returns>
        public override bool Equals(object o)
        {
            DigraphLoop l = o as DigraphLoop;

            return((paths[0].Equals(l.paths[0]) & paths[1].Equals(l.paths[1]))
                   | (paths[0].Equals(l.paths[1]) & paths[1].Equals(l.paths[0])));
        }
Пример #2
0
 /// <summary>
 /// Gets all loops
 /// </summary>
 /// <param name="list">List of loops</param>
 public void GetLoops(List <DigraphLoop> list)
 {
     pathLoops.Clear();
     index = 0;
     newVertices.Add(this);
     while (step())
     {
     }
     for (int i = 0; i < pathLoops.Count; i++)
     {
         DigraphPath path1 = pathLoops[i] as DigraphPath;
         for (int j = i + 1; j < pathLoops.Count; j++)
         {
             DigraphPath path2 = pathLoops[j] as DigraphPath;
             if ((path1.Source != path2.Source) | (path1.Target != path2.Target))
             {
                 continue;
             }
             DigraphLoop loop = new DigraphLoop(new DigraphPath[] { path1, path2 });
             loop.Reduce();
             if (list.Contains(loop))
             {
                 continue;
             }
             list.Add(loop);
         }
     }
 }