对有向无环图顶点重新编号使其邻接矩阵变为下三角矩阵
来源:互联网 发布:淘宝助理5官方下载 编辑:程序博客网 时间:2024/06/06 11:23
对有向无环图顶点重新编号使其邻接矩阵变为下三角矩阵
Status Change_into_LTM(MGraph &G){ //将采用邻接矩阵存储的有向无环图的邻接矩阵转换为下三角矩阵,并输出新旧编号对照表 int topologic_order[G.vexnum];//拓扑序列,反过来就是逆拓扑序列 //topologic_order[G.vexnum - 1 - 新序号] = 旧序号 int num = 0;//拓扑序列指针 FindInDegree(G,indegree);//求入度序列 InitStack(S); for(i = 0;i < G.vexnum;i++) if(!indegree[i]) Push(S,i); while(!StackEmpty(S)){ Pop(S,i); topologic_order[num++] = G.vertices[i].data; for(j = 0;j < G.vexnum;j++) if(G.arcs[i][j] && !(--indegree[j])) Push(S,j); }//while int new_old[G.vexnum];//新旧参照表 for(i = 0;i < G.vexnum;i++) new_old[topologic_order[G.vexnum - 1 - i]] = i; //new_old[旧序号] = 新序号 int keep[G.vexnum][G.vexnum];//缓存数组 for(i = 0;i < G.vexnum;i++) for(j = 0;j < G.vexnum;j++) keep[i][j] = G.arcs[i][j]; for(i = 0;i < G.vexnum;i++) G.vertices[i].data = new_old[G.vertices[i].data]; for(i = 0;i < G.vexnum;i++){ tmp = topologic_order[G.vexnum - 1 - i]; for(j = 0;j < G.vexnum;j++){ if(keep[tmp][j]) G.arcs[i][new_old[j]] = 1; else G.arcs[i][new_old[j]] = 0; }//for }//for for(i = 0;i < G.vexnum;i++) cout << i << "--->" << new_old[i] << endl; return OK;}//Change_into_LTM
阅读全文
0 0
- 对有向无环图顶点重新编号使其邻接矩阵变为下三角矩阵
- Dijkstra算法--有向图的源点到其他顶点的最短路径(连接矩阵、邻接矩阵两种方式)
- 用邻接矩阵存储有向图,并输出各顶点的出入和入度。
- 数据结构之有向网邻接矩阵Dijkstra实现源点至其余各顶点最短路径
- 邻接矩阵有向图
- 邻接矩阵--有向图
- 邻接矩阵求有向图各顶点的入度和出度 (图论基础)
- 有向图邻接矩阵实现
- 邻接矩阵存储有向图
- 邻接矩阵存储有向图
- 邻接矩阵、构造有向图
- 有向图的邻接矩阵
- Java实现拓扑排序:基于邻接矩阵,针对有向无环图
- 邻接矩阵A和A的转置矩阵乘积表示的意义(有向图)
- HDU 2254-奥运(有向图的邻接矩阵+矩阵乘法)
- 上三角矩阵下三角矩阵
- Linux下完成: 已知两三角形顶点坐标,判断其是否有公共边
- 有向图的邻接矩阵类
- 学习日记-WMware安装Mac系统
- 6.18九九乘法表
- 关于坑爹的NDK开发的大坑
- 1004. 成绩排名
- ES6_symbol
- 对有向无环图顶点重新编号使其邻接矩阵变为下三角矩阵
- vs开发环境搭建(头文件,静态库,动态库配置)
- 教你自己写Android第三方库
- ASCII码的常用值为何为000~127位
- 关于Python中字符串格式化的两种方法
- [NOIP] [并查集] NOIP2017Day2 奶酪
- AWS服务器
- Python 练习实例14
- C++11并发之std::thread