离散数学之图的矩阵表示及基本运算.docx

上传人:b****6 文档编号:6321313 上传时间:2023-01-05 格式:DOCX 页数:6 大小:30.32KB
下载 相关 举报
离散数学之图的矩阵表示及基本运算.docx_第1页
第1页 / 共6页
离散数学之图的矩阵表示及基本运算.docx_第2页
第2页 / 共6页
离散数学之图的矩阵表示及基本运算.docx_第3页
第3页 / 共6页
离散数学之图的矩阵表示及基本运算.docx_第4页
第4页 / 共6页
离散数学之图的矩阵表示及基本运算.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

离散数学之图的矩阵表示及基本运算.docx

《离散数学之图的矩阵表示及基本运算.docx》由会员分享,可在线阅读,更多相关《离散数学之图的矩阵表示及基本运算.docx(6页珍藏版)》请在冰豆网上搜索。

离散数学之图的矩阵表示及基本运算.docx

离散数学之图的矩阵表示及基本运算

离散数学之图的矩阵表示及基本运算

实验四图的矩阵表示及基本运算

实验目的

      学习图在计算机中的矩阵表示,并能利用课堂所学知识进行出度和入度的计算。

实验内容与要求

      根据输入的整数对,输出一个图形的邻接矩阵。

并求出各结点的出度和入度。

实验准备

      图可以用多种方式来表示,其中邻接矩阵是一种较简单的方式。

复习关于邻接矩阵的描述。

明确一下内容:

1.如何使用邻接矩阵表示图。

2.利用图的邻接矩阵求结点的出度和入度的方法。

#include

int**g(intn)

{

int**a,i,j;

a=newint*[n];//分配指针数组

for(i=0;i

a[i]=newint[n];//分配每个指针所指向的数组

for(i=0;i

for(j=0;j

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<<"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||j==-1)break;

x->ele[i][j]=1;

if(!

x->isOrient)x->ele[j][i]=1;

}

}

voidOperators:

:

Show(M*x)

{

inti,j;

if(x->isOrient)

cout<<"Theorientedmatrix:

"<

else

cout<<"Theno-orientedmatrix:

"<

for(i=0;in;i++)

{

for(j=0;jn;j++)cout<ele[i][j]<<"";

cout<

}

}

intOperators:

:

deg_out(M*x,inti)

{

intdeg=0;

for(intj=0;jn;j++)

if(x->ele[i][j])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];

for(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);

CreateMatrix2(&temp,a->n,a->isOrient);

MatrixAdd(&p,a);

MatrixAdd(Ma,a);

for(i=0;i<=a->n;i++)

{

MatrixMultiple(a,&p,&temp);

MatrixAdd(Ma,&p);

}

Show(&p);

Show(Ma);

for(i=0;in;i++)

for(j=0;jn;j++)

if(Ma->ele[i][j])Ma->ele[i][j]=1;

}

voidmain()

{

Operatorso;

Mx,y;

o.CreateMatrix(&x);

o.CreateMatrix2(&y,x.n,x.isOrient);

o.Input(&x);

o.Show(&x);

inti;

cout<

for(i=0;i

cout<

"<

cout<

for(i=0;i

cout<

"<

cout<

o.Maccessibility(&x,&y);

o.Show(&y);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1