- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第6章图;有向无环图及其应用;何谓“拓扑排序”?;例如:对于下列有向图;B;教学计划的制定;拓扑排序算法思想;C1;拓扑排序算法描述;CountInDegree(G,indegree);
//对各顶点求入度
InitStack(S);
for(i=0;iG.vexnum;++i)
if(!indegree[i])Push(S,i);
//入度为零的顶点入栈;count=0;//对输出顶点计数
while(!EmptyStack(S)){
Pop(S,v);++count;printf(v);
for(w=FirstAdj(v);w;w=NextAdj(G,v,w)){
--indegree(w);//弧头顶点的入度减一
if(!indegree[w])Push(S,w);
//新产生的入度为零的顶点入栈
}
}
if(countG.vexnum)printf(“图中有回路”);对如图所示的图进行拓扑排序,可以得到不同的拓扑序列个数是。;关键路径;;关键路径:路径长度最长的路径
(路径长度是指路径上各活动持续时间之和,不是路径上弧的数目)
;2、如何求关键活动?;a;a;a;a;假设第i条弧为j,k
则对第i项活动言
e(i)=ve(j);
;;;假设第i条弧为j,k
则对第i项活动言
“活动(弧)”的最迟开始时间l(i)
l(i)=vl(k)–dut(j,k);;;;六度空间理论分析与实现;【算法步骤】
①完成系列初始化工作:设变量Visit_Num用来记录路径长度不超过7的顶点个数,初值为0;Start为指定的一个起始顶点,置visited[Start]的值为true,即将Start标记为六度顶点的始点;辅助队列Q初始化为空,然后将Start进队。
②当队列Q非空,且循环次数小于7时,循环执行以下操作(统计路径长度不超过7的顶点个数):
队头顶点u出队;
?依次检查u的所有邻接点w,如果visited[w]的值为false,则将w标记为六度顶点;
?路径长度不超过7的顶点个数Visit_Num加1;
?将w进队。
③退出循环时输出从顶点Start出发,到其他顶点长度不超过7的路径的百分比。;【算法描述】
voidSixDegree_BFS(GraphG,intStart)
{//通过广度优先搜索方法遍历G来验证六度空间理论,Start为指定的一个起点
Visit_Num=0; //记录路径长度不超过7的顶点个数
visited[Start]=true;//置顶点Start访问标志数组相应分量值为true
InitQueue(Q);//辅助队列Q初始化,置空
EnQueue(Q,Start);//Start进队
for(len=1;len=7!QueueEmpty(Q);len++)//统???路径长度不超过7的顶点个数
{
DeQueue(Q,u);//队头顶点u出队
for(w=FirstAdjVex(G,u);w=0;w=NextAdjVex(G,u,w))
//依次检查u的所有邻接点w,FirstAdjVex(G,u)表示u的第一个邻接点
//NextAdjVex(G,u,w)表示u相对于w的下一个邻接点,w≥0表示存在邻接点
if(!visited[w]) //w为u的尚未访问的邻接顶点
{
visited[w]=true; //将w标记为六度顶点
Visit_Num++; //路径长度不超过7的顶点个数加1
EnQueue(Q,w); //w进队
}//if
}//结束至多7次for循环
cout100*Visit_Num/G.vexnum;
//输出从顶点Start出发,到其他顶点长度不超过7的路径的百分比
}
?
文档评论(0)