Exemplo n.º 1
0
 private Double[] distTo;       // disTo[i] 保存的是从 v 到 i 的距离
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="g">有向加权非负权图</param>
 /// <param name="s">起点</param>
 public AcyclicSP(DirectedWeightedGraph g, int s)
 {
     edgeTo = new DirectedEdge[g.V];
     distTo = new Double[g.V];
     for (Int32 v = 0; v < g.V; ++v)
     {
         distTo[v] = Double.PositiveInfinity;
     }
     Topological top = new Topological(g);
 }
Exemplo n.º 2
0
        private Double[] distTo;       // disTo[i] 保存的是从 v 到 i 的距离
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="g">有向加权非负权图</param>
        /// <param name="s">起点</param>
        public AcyclicSP(DirectedWeightedGraph g, int s)
        {
            edgeTo = new DirectedEdge[g.V];
            distTo = new Double[g.V];
            for (Int32 v = 0; v < g.V; ++v)
            {
                distTo[v] = Double.PositiveInfinity;
            }
            distTo[s] = 0.0;
            Topological top = new Topological(g);

            foreach (int v in top.Order())
            {
                this.Relax(g, v);
            }
        }
Exemplo n.º 3
0
        public static void Main()
        {
            string      filename = "tinyDAG.txt";
            Digraph     digraph  = new Digraph(File.OpenText(filename));
            Topological top      = new Topological(digraph);

            if (top.IsDAG())
            {
                foreach (int v in top.Order())
                {
                    Console.WriteLine(v);
                }
            }
            //符号图测试
            //string filename = "jobs.txt";
            //SymbolGraph digraph = new SymbolGraph(filename, '/');
            //Topological top = new Topological(digraph.G);
            //if (top.IsDAG())
            //    foreach (int v in top.Order())
            //        Console.WriteLine(digraph.Name(v));
        }