网站大量收购独家精品文档,联系QQ:2885784924

基于矩阵变换算法的图同构识别.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于矩阵变换算法的图同构识别

题目:(例如)基于矩阵变换算法的图同构识别 实验环境: 1、硬件环境:个人机,CPU主频:2.3GHZ 内存:4GB 2、软件环境:操作系统:windows 编程语言:C++ 实验任务解决方案: 实验思路:设两个无向图G=(V,E),G’=(V’,E’),G,G’同构当且仅当两图的邻接矩阵、行间同或矩阵、行间异或矩阵具有相同的行行置换。 矩阵算法步骤 根据定义,求出同型矩阵AAG、AAG’. 计算出行间同或矩阵RAG、RAG’,行间异或矩阵RXG、RXG’. 以图G=(V,E)的行间异或矩阵为参照,对RXG的每一行,从RXG’搜索所有行,找到一个匹配。若不存在相应匹配,则两图不同构;若匹配,转步骤(4). 判断邻接矩阵AG、AG’,行间同或矩阵中是否存在同样的匹配,若匹配存在,调整邻接矩阵AG’、行间异或矩阵RXG’、行间同或矩阵RAG’对应的行和列;若不匹配,则不同构. 2、基于矩阵变换算法的流程图。 3、基于矩阵变换算法实现的关键代码。 //*********************************冒泡排序 void wensen_mp(int mp[],int n) { int t; for(int i=0;in-1;i++) { for(int j=0;jn-1-i;j++) { if(mp[j]mp[j+1]) { t=mp[j]; mp[j]=mp[j+1]; mp[j+1]=t; } } } } /////////////////////////核心代码 //异或矩阵行转换 void wensen_hx(int **p1,int **p13,int **p14,int **p2,int **p23,int **p24,int n) { int *p77=new int[n];//用于替换的临时一维数组,存放p13 int *p88=new int[n];//用于替换的临时一维数组,存放p23 int *p33=new int[n];//用于替换的临时一维数组,存放p1 int *p44=new int[n];//用于替换的临时一维数组,存放p14 int *p55=new int[n];//用于替换的临时一维数组,存放p2 int *p66=new int[n];//用于替换的临时一维数组,存放p24 int *p99=new int[n];//用于行行替换的临时数组 int t; int tt;//进行跳转判断 int ttt=0;//进行跳转判断 //行行替换 for( int i=0;in;i++) { //首先进行行赋值给另外一个数组p13 for(int i77=0;i77n;i77++) { p77[i77]=p13[i][i77]; } //首先进行行赋值给另外一个数组p1 for(int i33=0;i33n;i33++) { p33[i33]=p1[i][i33]; } //首先进行行赋值给另外一个数组 for(int i44=0;i44n;i44++) { p44[i44]=p14[i][i44]; } //p77,p33,p44冒泡排序 wensen_mp(p77,n); wensen_mp(p33,n); wensen_mp(p44,n); //开始进行比较,p12的每一行与p23的每一行进行比较 for(int y=i;yn;y++) { tt=0; //首先进行行赋值给另外一个数组 for(int i88=0;i88n;i88++) { p88[i88]=p23[y][i88]; } //首先进行行赋值给另外一个数组 for(int i55=0;i55n;i55++) { p55[i55]=p2[y][i55]; } //首先进行行赋值给另外一个数组 for(int i66=0;i66n;i66++) { p66[i66]=p24[y][i66]; } //p88,p55,p66冒泡排序 wensen_mp(p88,n); wensen_mp(p55,n); wensen_mp(p66,n); //开始比较 for(int a=0;an;a++) { if(p77[a]==p88[a]) { tt=a; if(a==n-1)//也就是各个都相等,

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档