要求自定10个教学目标和局部关系,建立邻接矩阵,计算可达矩阵,进而确定教学目标的层次。
基本思想:
- 制作层级有向图的算法:
1、求可达矩
根据(A+I)k-1≠(A+I)k = (A+I)k+1=M可求得可达矩阵M
2、基于M求层级有向图
基本步骤:
-
-
- 根据有向图制作邻接矩阵,将单位矩阵I与邻接矩阵A相加得(A+I)。
- 依次求(A+I)的二次方、三次方,直至n+1次方,使(A+I)n+1=(A+I)n,则(A+I)n为该邻接矩阵的可达矩阵。
- 根据可达矩阵求层级。
- 找出可达矩阵中全部为1的列,则该列所对应的数字为最高层级,然后去掉该列所对应的行与列中的全部元素;
- 在剩下的矩阵中找出全部为1的列,则该列所对应的数字为次级层级,然后去掉该列所对应的行与列的全部元素;
- 依照前两步依次求出各层级,直至剩余矩阵中没有元素。
-
代码:
#include <iostream>
#define n 5
using namespace std;
int main()
{
int i,j,k,m,t,p,o;