欢迎来到天天文库
浏览记录
ID:59461218
大小:18.50 KB
页数:5页
时间:2020-11-02
《离散数学之图的矩阵表示及基本运算.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四图的矩阵表示及基本运算实验目的 学习图在计算机中的矩阵表示,并能利用课堂所学知识进行出度和入度的计算。实验内容与要求 根据输入的整数对,输出一个图形的邻接矩阵。并求出各结点的出度和入度。实验准备 图可以用多种方式来表示,其中邻接矩阵是一种较简单的方式。复习关于邻接矩阵的描述。明确一下内容:1.如何使用邻接矩阵表示图。2.利用图的邻接矩阵求结点的出度和入度的方法。#includeint**g(intn){int**a,i,j;a=newint*[n];//分配指针数组for(i
2、=0;i3、(M*a,inti);voidMaccessibility(M*a,M*Ma);voidMatrixMultiple(M*a,M*b,M*m);voidMatrixAdd(M*a,M*b);};voidOperators::CreateMatrix2(M*x,intn,intisOrient){x->n=n;x->isOrient=isOrient;x->ele=g(x->n);}voidOperators::CreateMatrix(M*x){intn,isOrient;cout<<"Matrix'sn=";cin>>n;cout<4、<"Isthegraphoriented?1=yes,0=no:";cin>>isOrient;CreateMatrix2(x,n,isOrient);}voidOperators::Input(M*x){inti,j;while(1){cout<<"Inputtheedge'sstart-pointandend-point,-1istofinishinputing:";cin>>i>>j;if(i==-15、6、j==-1)break;x->ele[i][j]=1;if(!x->isOrient)x->ele[j][i]=1;}}voi7、dOperators::Show(M*x){inti,j;if(x->isOrient)cout<<"Theorientedmatrix:"<n;i++){for(j=0;jn;j++)cout<ele[i][j]<<"";cout<n;j++)if(x->ele[i][j]8、)deg++;returndeg;}intOperators::deg_in(M*x,inti){intdeg=0;for(intj=0;jn;j++)if(x->ele[j][i])deg++;returndeg;}voidOperators::MatrixMultiple(M*a,M*b,M*temp){inti,j,k;for(i=0;in;i++)for(j=0;jn;j++)for(k=0;kn;k++)temp->ele[i][j]+=a->ele[i][k]*b->ele[k][j];fo9、r(i=0;in;i++)for(j=0;jn;j++)b->ele[i][j]=temp->ele[i][j];}voidOperators::MatrixAdd(M*a,M*b){inti,j;for(i=0;in;i++)for(j=0;jn;j++)a->ele[i][j]+=b->ele[i][j];}voidOperators::Maccessibility(M*a,M*Ma){inti,j;Mp,temp;CreateMatrix2(&p,a->n,a->isOrient);CreateM10、atrix2(&temp,a->n,a->isOrient);MatrixAdd(&p,a);MatrixAdd(Ma,a);for(i=0;i<=a->n;i++){MatrixMultiple(a,&p,&temp)
3、(M*a,inti);voidMaccessibility(M*a,M*Ma);voidMatrixMultiple(M*a,M*b,M*m);voidMatrixAdd(M*a,M*b);};voidOperators::CreateMatrix2(M*x,intn,intisOrient){x->n=n;x->isOrient=isOrient;x->ele=g(x->n);}voidOperators::CreateMatrix(M*x){intn,isOrient;cout<<"Matrix'sn=";cin>>n;cout<
4、<"Isthegraphoriented?1=yes,0=no:";cin>>isOrient;CreateMatrix2(x,n,isOrient);}voidOperators::Input(M*x){inti,j;while(1){cout<<"Inputtheedge'sstart-pointandend-point,-1istofinishinputing:";cin>>i>>j;if(i==-1
5、
6、j==-1)break;x->ele[i][j]=1;if(!x->isOrient)x->ele[j][i]=1;}}voi
7、dOperators::Show(M*x){inti,j;if(x->isOrient)cout<<"Theorientedmatrix:"<n;i++){for(j=0;jn;j++)cout<ele[i][j]<<"";cout<n;j++)if(x->ele[i][j]
8、)deg++;returndeg;}intOperators::deg_in(M*x,inti){intdeg=0;for(intj=0;jn;j++)if(x->ele[j][i])deg++;returndeg;}voidOperators::MatrixMultiple(M*a,M*b,M*temp){inti,j,k;for(i=0;in;i++)for(j=0;jn;j++)for(k=0;kn;k++)temp->ele[i][j]+=a->ele[i][k]*b->ele[k][j];fo
9、r(i=0;in;i++)for(j=0;jn;j++)b->ele[i][j]=temp->ele[i][j];}voidOperators::MatrixAdd(M*a,M*b){inti,j;for(i=0;in;i++)for(j=0;jn;j++)a->ele[i][j]+=b->ele[i][j];}voidOperators::Maccessibility(M*a,M*Ma){inti,j;Mp,temp;CreateMatrix2(&p,a->n,a->isOrient);CreateM
10、atrix2(&temp,a->n,a->isOrient);MatrixAdd(&p,a);MatrixAdd(Ma,a);for(i=0;i<=a->n;i++){MatrixMultiple(a,&p,&temp)
此文档下载收益归作者所有