/// <summary> /// Creates a topological sort of a undirected /// acyclic graph. /// </summary> /// <typeparam name="TVertex">type of the vertices</typeparam> /// <typeparam name="TEdge">type of the edges</typeparam> /// <param name="visitedGraph"></param> /// <param name="vertices"></param> /// <returns></returns> /// <exception cref="NonAcyclicGraphException">the input graph /// has a cycle</exception> public static void TopologicalSort <TVertex, TEdge>( #if !NET20 this #endif IUndirectedGraph <TVertex, TEdge> visitedGraph, IList <TVertex> vertices ) where TEdge : IEdge <TVertex> { Contract.Requires(visitedGraph != null); Contract.Requires(vertices != null); var topo = new UndirectedTopologicalSortAlgorithm <TVertex, TEdge>(visitedGraph); topo.Compute(vertices); }