拓扑排序算法及实现

时间:2015-11-19 08:03:22

标签: java algorithm topological-sort

我正在研究以下问题的算法:

我们有一定数量的课程,每门课程都有我们的先决条件。找到最长的课程序列,使得序列中的每门课程,前一课程都是先决条件。

我知道这显然是拓扑排序会派上用场的问题,但我对算法和实现有些困难。对于算法,我首先想到的是我们应该能够运行一个标准的拓扑排序算法,并且当我们“看到”它时,只需保留一个计数器,该计数器计算一个课程是否为pre-req。

我已经决定最好将图表表示为邻接列表。这里有一个粗略的概念,我到目前为止的实施情况,

 public Vertex{
     private String courseName;
     private Vertex[] edges; //Represents all of this courses pre-reqs.

     public addEdge(Vertex v); //Add's a pre-req
     public getEdges();        //Returns array of edges
     public getEdge(int index);//Return edge at specific index
 }

然后在主程序中,“图形”将只是一个顶点数组:

 Vertex graph[] = new Vertex[num];

如果有人对算法或实现有任何想法,链接,提示等,请随时分享。我的目标是O(n + m)时间,其中n是课程数,m是预先要求的数量。

0 个答案:

没有答案