Пример #1
0
        private void Builder(int layer,
                             List <DAG.Node> previousLayer, List <DAG.Arc> usedArcs, int height)
        {
            if (height == 0)
            {
                return;
            }
            List <DAG.Node> nextLayer = new List <DAG.Node>();
            List <DAG.Arc>  layerArcs = new List <DAG.Arc>();

            foreach (var node in previousLayer)
            {
                int   mappedIndex = GetOriginalVertexIndex(node.vertexIndex);
                int[] connected   = GetConnected(mappedIndex);
                Array.Sort(connected);
                foreach (var connectedVertex in connected)
                {
                    AddNode(
                        layer, node, connectedVertex, layerArcs, usedArcs, nextLayer);
                }
            }
            usedArcs.AddRange(layerArcs);
            if (!nextLayer.Any())
            {
                return;
            }
            else
            {
                dag.AddLayer(nextLayer);
                Builder(layer + 1, nextLayer, usedArcs, height - 1);
            }
        }