邻接矩阵转为可达矩阵(怎么样用matlab编写程序借助二元矩阵计算可达矩阵)
本文目录
- 怎么样用matlab编写程序借助二元矩阵计算可达矩阵
- 把邻接矩阵转换成邻接表的算法
- 邻接矩阵如下,烦请大神帮忙计算一下它的可达矩阵,最好附上截图,非常感谢!急需!
- 如何写出一个有向图的邻接矩阵,并求解计算其可达矩阵
- 一个邻接矩阵对应一个可达矩阵吗
- 在matlab中怎样编程才能将邻接矩阵转换成可达矩阵
- 有向图邻接矩阵求可达矩阵和层次化处理,解决追加
- 完全图的可达矩阵怎么画
- 求大神帮忙利用matlab软件求可达矩阵,最好是有运算截图
怎么样用matlab编写程序借助二元矩阵计算可达矩阵
编程思路如下:假设邻接矩阵为A,I为链路长度矩阵。经过n步后为可达矩阵M,则有:B=(A+I)^n=I+A+A^2+..A^n再将B中非零元素改为1,零元素不变即为A的n步可达矩阵M; 代码如下:function M=reach(A,I,n)%A,I和n要给定=size(A) %此处row和cow应该相等E=ones(row,cow) %生成单位矩阵EB=zeros(row,cow) %初始全0矩阵BB=B+I;%循环+A^nfor i=1:n B=B+A^i;end%将B中非零元素改为1,零元素不变,即让B和E进行交运算。M=B&Eend
把邻接矩阵转换成邻接表的算法
#include 《stdio.h》#include 《malloc.h》#define INF 32767 //INF表示∞typedef int InfoType;typedef int Vertex;//--------------邻接矩阵存储表示------------#define MAXV 20 //最大顶点个数#define INF 32767 //INF表示∞//以下定义邻接矩阵类型typedef struct{int nunber; //顶点编号InfoType info; //顶点其他信息} VertexType; //顶点类型typedef struct { //图的定义int edges; //邻接矩阵int n,e; //顶点数,弧数VertexType vexs; //存放顶点信息} MGraph; //图的邻接矩阵类型//-------------------邻接表存储表示----------//以下定义邻接表类型typedef struct ANode{ //弧的结点结构类型int adjvex; //该弧的终点位置InfoType info; //该弧的相关信息,这里用于存放权值struct ANode *nextarc; //指向下一条弧的指针} ArcNode;typedef struct Vnode { //邻接表头结点的类型Vertex data; //顶点信息int count; //存放顶点入度,只在拓扑排序中用ArcNode *firstarc; //指向第一条弧} VNode;typedef VNode AdjList; //AdjList是邻接表类型typedef struct{AdjList adjlist; //邻接表int n,e; //图中顶点数n和边数e} ALGraph; //图的邻接表类型//将邻接矩阵g转换成邻接表Gvoid MatToList(MGraph g,ALGraph *&G){int i,j,n=g.n; //n为顶点数ArcNode *p;G=(ALGraph *)malloc(sizeof(ALGraph));// for (i=0;i《n;i++) //给邻接表中所有头结点的指针域置初值// G-》adjlist.firstarc=NULL;for (i=0;i《n;i++) //检查邻接矩阵中每个元素for (j=n-1;j》=0;j--)if (g.edges!=0) //邻接矩阵的当前元素不为0{ p=(ArcNode *)malloc(sizeof(ArcNode)); //创建一个结点*pp-》adjvex=j;p-》info=g.edges;p-》nextarc=G-》adjlist.firstarc; //将*p链到链表后G-》adjlist.firstarc=p;}G-》n=n;G-》e=g.e;}void ListToMat(ALGraph *G,MGraph &g)//将邻接表G转换成邻接矩阵g{int i,n=G-》n;ArcNode *p;for (i=0;i《n;i++){p=G-》adjlist.firstarc;while (p!=NULL){g.edges=p-》info;p=p-》nextarc;}}g.n=n;g.e=G-》e;}void DispMat(MGraph g)//输出邻接矩阵g{int i,j;for (i=0;i《g.n;i++){for (j=0;j《g.n;j++)if (g.edges==INF)printf("%3s","∞");elseprintf("%3d",g.edges);printf("\n");}}void DispAdj(ALGraph *G)//输出邻接表G{int i;ArcNode *p;for (i=0;i《G-》n;i++){p=G-》adjlist.firstarc;printf("%3d: ",i);while (p!=NULL){printf("%3d",p-》adjvex);p=p-》nextarc;}printf("\n");}}//以下主函数用作调试void main(){int i,j;MGraph g,g1;ALGraph *G;int A={{0,5,0,7,0,0},{0,0,4,0,0,0},{8,0,0,0,0,9},{0,0,5,0,0,6},{0,0,0,5,0,0},{3,0,0,0,1,0}};g.n=6;g.e=10;for (i=0;i《g.n;i++)for (j=0;j《g.n;j++)g.edges;printf("\n");printf(" 有向图G的邻接矩阵:\n");DispMat(g);G=(ALGraph *)malloc(sizeof(ALGraph));printf(" 图G的邻接矩阵转换成邻接表:\n");MatToList(g,G);DispAdj(G);printf(" 图G的邻接表转换成邻接邻阵:\n");for (i=0;i《g.n;i++)for (j=0;j《g.n;j++)g1.edges=0;ListToMat(G,g1);DispMat(g1);printf("\n");}
邻接矩阵如下,烦请大神帮忙计算一下它的可达矩阵,最好附上截图,非常感谢!急需!
1:2,3,42:4,5,63:1,4,84:1,2,3,95:2,6,76:2,3,4,7,8,97:5,6,8,98:3,49:1,2,3,4,6
如何写出一个有向图的邻接矩阵,并求解计算其可达矩阵
邻接矩阵很简单,比如a到b有一条路径为5的路那么arr=0。计算能到的其他点,用floyed算法,如果a~b有路,b~c有路,那么a~c有路。
一个邻接矩阵对应一个可达矩阵吗
一个邻接矩阵对应一个可达矩阵。根据查询相关公开信息显示,邻接矩阵是表示顶点之间相邻关系的矩阵,对应一个可达矩阵,是图的一种存储形式,是以二维数组表示有n个顶点的图。
在matlab中怎样编程才能将邻接矩阵转换成可达矩阵
你好!很高兴为你解答,假如n=size(A,1);p=A;for i=2:n p=p+A^i;endp(p~=0)=1;矩阵p即为所求可达矩阵。希望我的回答对你有所帮助!!!
有向图邻接矩阵求可达矩阵和层次化处理,解决追加
所求可达矩阵如上
有内置函数 shortestpath() 或者其他类似的 看看doc有详细说明
完全图的可达矩阵怎么画
设有向图D = (V,E),顶点集V = {v1,v2,····,vn}。定义矩阵为P = \left\{\begin{matrix} 0 \\ 1 \end{matrix}\right.(当vi到vj不可达时,p为0;当vi到vj可达时p为1.)称矩阵P是图D的可达矩阵一般地,设n阶有向图D的邻接矩阵为A,有A可得到图D的可达矩阵,不妨设为P,其步骤如下:1、求出B_{}n= A + A^{}2 + ··· + A^{}n2、把矩阵B_{}n中不为0的元素给为1,而为0的元素不变这样所改换的矩阵就位图D的可达矩阵P。(A表示图的邻接矩阵,P表示图的可达矩阵。)计算可达矩阵,在MATLAB中实现p=dgraf(A)function P=dgraf(A)n=size(A,1);P=A;for i=2:nP=P+A^iendP(P~=0)=1P
求大神帮忙利用matlab软件求可达矩阵,最好是有运算截图
n=size(A,1);p=A;for i=2:n p=p+A^i;endp(p~=0)=1;
p就是可达矩阵
更多文章:
唐三彩基本色彩之一(以下哪个是古代著名“唐三彩”工艺中的基本色彩之一)
2024年3月21日 02:05
nds模拟器中文版下载(nds模拟器下载最新,谁有啊~~可以发我一下吗或者连接都行)
2024年5月16日 12:33