/// <summary>
        /// balances the layers by moving vertices with
        /// the same number of input-output edges to feasible layers with fiewer nodes  /// </summary>
        /// <param name="dag">the layered graph</param>
        /// <param name="layering">the layering to change</param>
        /// <param name="nodeCount">shows how many nodes are represented be a node</param>
        /// <param name="cancelObj"></param>
        static internal void Balance(Graph dag, int[] layering, int[] nodeCount, CancelToken cancelObj)
        {
            Balancing b = new Balancing(dag, layering, nodeCount);

            b.Run(cancelObj);
        }
 /// <summary>
 /// balances the layers by moving vertices with
 /// the same number of input-output edges to feasible layers with fiewer nodes  /// </summary>
 /// <param name="dag">the layered graph</param>
 /// <param name="layering">the layering to change</param>
 /// <param name="nodeCount">shows how many nodes are represented be a node</param>
 /// <param name="cancelObj"></param>
 static internal void Balance(Graph dag, int[] layering, int[] nodeCount, CancelToken cancelObj) {
     Balancing b = new Balancing(dag, layering, nodeCount);
     b.Run(cancelObj);
 }