关键路径是最长的还是最短的,关键路径是事件结点网络中(( 二 )


为了能按逆序拓扑有序序列的顺序计算各个顶点的vl值,需记下在拓扑排序的过程中求得的拓扑有序序列,这就需要在拓扑排序算法中,增设一个栈,以记录拓扑有序序列,则在计算求得各顶点的ve值之后,从栈顶到栈底便为逆拓扑有序序列 。
packagegraph;
importjava.util.*;
publicclassGrph_CriticalPath
{
Graph_AdjListadjList;
Stack<Integer>T=newStack<Integer>();
intve[];
intvl[];
finalintmax=10000;

publicGrph_CriticalPath(Graph_AdjListadjList)//图的存储结构是用的邻接表
{
this.adjList=adjList;
intlength=adjList.vetexValue.length;
ve=newint[length];
vl=newint[length];
for(inti=0;i<length;i++)
{
ve[i]=0;
vl[i]=max;
}
}

publicvoidgetCriticalPath()
{
topologicalOrder();

intt=T.pop();
T.push(t);
vl[t]=ve[t];
while(!T.isEmpty())
{
intj=T.pop();
for(Graph_AdjList.ArcNodep=adjList.vetex[j].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
if(vl[k]-p.weight<vl[j])
{
vl[j]=vl[k]-p.weight;
}
}
}
for(inti=0;i<ve.length;i++)
{
for(Graph_AdjList.ArcNodep=adjList.vetex[i].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
intee=ve[i];
intel=vl[k]-p.weight;
if(ee==el)
{
System.out.print(i+","+k+"");
}

}
}
}

publicvoidtopologicalOrder()
{
Stack<Integer>S=newStack<Integer>();
S.push(0);
intcount=0;
while(!S.isEmpty())
{
intj=S.pop();
T.push(j);
count++;
Graph_AdjList.ArcNodep=null;
for(p=adjList.vetex[j].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
if(--adjList.degree[k]==0)
{
S.push(k);
}
if(ve[j]+p.weight>ve[k])
{
ve[k]=ve[j]+p.weight;
}
}
}
if(count<adjList.vetexValue.length)
{
System.out.println("图中存在环路!");
return;
}
}

publicvoidprint()
{
while(!T.isEmpty())
{
System.out.print(T.pop()+"");
}
}

publicvoidprintVel()
{
System.out.println();
for(inti=0;i<ve.length;i++)
{
System.out.print(ve[i]+"");
}
System.out.println();
for(inti=0;i<vl.length;i++)
{
System.out.print(vl[i]+"");
}
}


}转自:http://blog.csdn.net/pigli/article/details/5777048
追问好详细,谢谢 。。追答举手之劳
什么叫做关键路径:

关键路径是最长的还是最短的,关键路径是事件结点网络中(

文章插图
关键路径是指设计中从输入到输出经过的延时最长的逻辑路径 。优化关键路径是一种提高设计工作速度的有效方法 。一般地,从输入到输出的延时取决于信号所经过的延时最大路径,而与其他延时小的路径无关 。在优化设计过程中关键路径法可以反复使用,直到不可能减少关键路径延时为止 。EDA工具中综合器及设计分析器通常都提供关键路径的信息以便设计者改进设计,提高速度 。
关键路径通常是决定项目工期的进度活动序列 。它是项目中最长的路径,即使很小浮动也可能直接影响整个项目的最早完成时间 。关键路径的工期决定了整个项目的工期,任何关键路径上的终端元素的延迟在浮动时间为零或负数时将直接影响项目的预期完成时间 。[2]但特殊情况下,如果总浮动时间大于零,则有可能不会影响项目整体进度 。
一个项目可以有多个、并行的关键路径 。另一个总工期比关键路径的总工期略少的一条并行路径被称为次关键路径 。最初,关键路径方法只考虑终端元素之间的逻辑依赖关系 。关键链方法中增加了资源约束 。关键路径方法是由杜邦公司发明的

推荐阅读