/// <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]))); }
/// <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); } } }