/// <summary> /// Tests whether a complete unique path exists in a graph /// using Euler's Theorem. /// </summary> /// <param name="graph">The <see cref="Subgraph" /> containing the edges.</param> /// <returns><c>true</c> if a sequence exists.</returns> private bool HasSequence(Subgraph graph) { int oddDegreeCount = 0; IEnumerator i = graph.GetNodeEnumerator(); while(i.MoveNext()) { Node node = (Node) i.Current; if (node.Degree % 2 == 1) oddDegreeCount++; } return oddDegreeCount <= 2; }
/// <summary> /// /// </summary> /// <param name="graph"></param> /// <returns></returns> private static Node FindLowestDegreeNode(Subgraph graph) { int minDegree = Int32.MaxValue; Node minDegreeNode = null; IEnumerator i = graph.GetNodeEnumerator(); while (i.MoveNext()) { Node node = (Node) i.Current; if (minDegreeNode == null || node.Degree < minDegree) { minDegree = node.Degree; minDegreeNode = node; } } return minDegreeNode; }