2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  題目:(例如)基于矩陣變換算法的圖同構(gòu)識別</p><p><b>  實(shí)驗(yàn)環(huán)境:</b></p><p>  1、硬件環(huán)境:個(gè)人機(jī),CPU主頻:2.3GHZ 內(nèi)存:4GB</p><p>  2、軟件環(huán)境:操作系統(tǒng):windows</p><p><b>  編程

2、語言:C++</b></p><p><b>  實(shí)驗(yàn)任務(wù)解決方案:</b></p><p>  實(shí)驗(yàn)思路:設(shè)兩個(gè)無向圖G=(V,E),G’=(V’,E’),G,G’同構(gòu)當(dāng)且僅當(dāng)兩圖的鄰接矩陣、行間同或矩陣、行間異或矩陣具有相同的行行置換。</p><p><b>  矩陣算法步驟</b></p>

3、<p>  根據(jù)定義,求出同型矩陣AAG、AAG’.</p><p>  計(jì)算出行間同或矩陣RAG、RAG’,行間異或矩陣RXG、RXG’.</p><p>  以圖G=(V,E)的行間異或矩陣為參照,對RXG的每一行,從RXG’搜索所有行,找到一個(gè)匹配。若不存在相應(yīng)匹配,則兩圖不同構(gòu);若匹配,轉(zhuǎn)步驟(4).</p><p>  判斷鄰接矩陣AG、AG’

4、,行間同或矩陣中是否存在同樣的匹配,若匹配存在,調(diào)整鄰接矩陣AG’、行間異或矩陣RXG’、行間同或矩陣RAG’對應(yīng)的行和列;若不匹配,則不同構(gòu).</p><p>  2、基于矩陣變換算法的流程圖。</p><p>  3、基于矩陣變換算法實(shí)現(xiàn)的關(guān)鍵代碼。</p><p>  //*********************************冒泡排序</p&

5、gt;<p>  void wensen_mp(int mp[],int n)</p><p><b>  {</b></p><p><b>  int t;</b></p><p>  for(int i=0;i<n-1;i++)</p><p><b>  {&l

6、t;/b></p><p>  for(int j=0;j<n-1-i;j++)</p><p><b>  {</b></p><p>  if(mp[j]>mp[j+1])</p><p><b>  {</b></p><p><b>  t

7、=mp[j];</b></p><p>  mp[j]=mp[j+1];</p><p>  mp[j+1]=t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b><

8、/p><p><b>  }</b></p><p>  /////////////////////////核心代碼</p><p><b>  //異或矩陣行轉(zhuǎn)換</b></p><p>  void wensen_hx(int **p1,int **p13,int **p14,int **p2,in

9、t **p23,int **p24,int n)</p><p><b>  {</b></p><p>  int *p77=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p13</p><p>  int *p88=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p23</p><p>  int *p

10、33=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p1</p><p>  int *p44=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p14</p><p>  int *p55=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p2</p><p>  int *p66=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p24<

11、;/p><p>  int *p99=new int[n];//用于行行替換的臨時(shí)數(shù)組</p><p><b>  int t;</b></p><p>  int tt;//進(jìn)行跳轉(zhuǎn)判斷</p><p>  int ttt=0;//進(jìn)行跳轉(zhuǎn)判斷</p><p><b>  //行行替換&l

12、t;/b></p><p>  for( int i=0;i<n;i++)</p><p><b>  {</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組p13</p><p>  for(int i77=0;i77<n;i77++)</p><p><b&g

13、t;  {</b></p><p>  p77[i77]=p13[i][i77];</p><p><b>  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組p1</p><p>  for(int i33=0;i33<n;i33++)</p><p><

14、b>  {</b></p><p>  p33[i33]=p1[i][i33];</p><p><b>  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組</p><p>  for(int i44=0;i44<n;i44++)</p><p><

15、b>  {</b></p><p>  p44[i44]=p14[i][i44];</p><p><b>  }</b></p><p>  //p77,p33,p44冒泡排序</p><p>  wensen_mp(p77,n);</p><p>  wensen_mp(p3

16、3,n);</p><p>  wensen_mp(p44,n);</p><p>  //開始進(jìn)行比較,p12的每一行與p23的每一行進(jìn)行比較</p><p>  for(int y=i;y<n;y++)</p><p><b>  {</b></p><p><b>  tt=

17、0;</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組</p><p>  for(int i88=0;i88<n;i88++)</p><p><b>  {</b></p><p>  p88[i88]=p23[y][i88];</p><p><b>

18、  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組</p><p>  for(int i55=0;i55<n;i55++)</p><p><b>  {</b></p><p>  p55[i55]=p2[y][i55];</p><p><b>

19、  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組</p><p>  for(int i66=0;i66<n;i66++)</p><p><b>  {</b></p><p>  p66[i66]=p24[y][i66];</p><p><b>

20、;  }</b></p><p>  //p88,p55,p66冒泡排序</p><p>  wensen_mp(p88,n);</p><p>  wensen_mp(p55,n);</p><p>  wensen_mp(p66,n);</p><p><b>  //開始比較</b&g

21、t;</p><p>  for(int a=0;a<n;a++)</p><p><b>  {</b></p><p>  if(p77[a]==p88[a])</p><p><b>  {</b></p><p><b>  tt=a;</b&g

22、t;</p><p>  if(a==n-1)//也就是各個(gè)都相等,找到匹配</p><p><b>  {</b></p><p>  //開始進(jìn)行鄰接矩陣對應(yīng)位置比較</p><p>  for(int b=0;b<n;b++)</p><p><b>  {</b>

23、;</p><p>  if(p33[b]==p55[b])</p><p><b>  {</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p>  else if(b<n-1)&

24、lt;/p><p><b>  {</b></p><p>  cout<<"不同構(gòu)\n";</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }

25、</b></p><p>  //開始進(jìn)行同或矩陣</p><p>  for(int c=0;c<n;c++)</p><p><b>  {</b></p><p>  if(p44[c]==p66[c])</p><p><b>  {</b><

26、/p><p><b>  continue;</b></p><p><b>  }</b></p><p>  else if(c<n-1)</p><p><b>  {</b></p><p>  cout<<"不同構(gòu)\n&

27、quot;;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ttt++;//表示成功匹配一行</p><p>  //進(jìn)行行行轉(zhuǎn)換p2</p&

28、gt;<p>  for(int u1=0;u1<n;u1++)</p><p><b>  {</b></p><p>  t=p2[i][u1];</p><p>  p2[i][u1]=p2[y][u1];</p><p>  p2[y][u1]=t;</p><p>&

29、lt;b>  }</b></p><p>  for(int u11=0;u11<n;u11++)</p><p><b>  {</b></p><p>  t=p2[u11][i];</p><p>  p2[u11][i]=p2[u11][y];</p><p>  

30、p2[u11][y]=t;</p><p><b>  }</b></p><p>  //進(jìn)行行行轉(zhuǎn)換p23</p><p>  for(int u2=0;u2<n;u2++)</p><p><b>  {</b></p><p>  t=p23[i][u2];&l

31、t;/p><p>  p23[i][u2]=p23[y][u2];</p><p>  p23[y][u2]=t;</p><p><b>  }</b></p><p>  for(int u22=0;u22<n;u22++)</p><p><b>  {</b><

32、;/p><p>  t=p23[u22][i];</p><p>  p23[u22][i]=p23[u22][y];</p><p>  p23[u22][y]=t;</p><p><b>  }</b></p><p>  //進(jìn)行行行轉(zhuǎn)換p24</p><p>  fo

33、r(int u3=0;u3<n;u3++)</p><p><b>  {</b></p><p>  t=p24[i][u3];</p><p>  p24[i][u3]=p24[y][u3];</p><p>  p24[y][u3]=t;</p><p><b>  }<

34、;/b></p><p>  for(int u33=0;u33<n;u33++)</p><p><b>  {</b></p><p>  t=p24[u33][i];</p><p>  p24[u33][i]=p24[u33][y];</p><p>  p24[u33][y]

35、=t;</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {<

36、/b></p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(y==n-1)//一直循環(huán)到最后都未找到匹配</p><p><

37、;b>  {</b></p><p>  cout<<"不同構(gòu)\n";</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p>

38、<p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //上面的匹配沒有問題,則進(jìn)行行替換</p>

39、<p>  if(tt==n-1)</p><p><b>  {</b></p><p>  if(ttt==n)</p><p><b>  {</b></p><p>  cout<<"同構(gòu)\n";</p><p><b&

40、gt;  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  break;//成功跳出循環(huán)判斷下一行</p><p>&l

41、t;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  基于矩陣變

42、換算法的計(jì)算復(fù)雜度分析(最好、最差、平均情況復(fù)雜度):</p><p>  1.同構(gòu)最好情況是:每一行都互相對應(yīng),所以復(fù)雜度為:3n^2+3n^3+8n^2</p><p>  時(shí)間復(fù)雜度為O(n^3)。</p><p>  2.同構(gòu)最壞情況是:每一行都與最后一行對應(yīng),所以復(fù)雜度為:3n^2+3n^3+8n*n!</p><p>  時(shí)間復(fù)雜

43、度為O(n*n!)</p><p>  3.所以平均時(shí)間復(fù)雜度為O(n*n!)</p><p>  總結(jié)綜合實(shí)驗(yàn)心得體會(huì):</p><p><b>  1.實(shí)例演示</b></p><p><b>  鄰接矩陣:</b></p><p><b>  實(shí)驗(yàn)體會(huì)<

44、/b></p><p>  本課程設(shè)計(jì)是為了判斷無向圖是否同構(gòu),采用了較為容易實(shí)現(xiàn)的鄰接矩陣,同時(shí)用到了同型矩陣、行間異或矩陣、行間同或矩陣等知識。知道了同構(gòu)當(dāng)且僅當(dāng)兩圖的鄰接矩陣、行間同或矩陣、行間異或矩陣具有相同的行行置換。通過他們之間對應(yīng)的關(guān)系,我寫出了這個(gè)算法,并已經(jīng)初步測試過,能正確判斷圖是否同構(gòu)。通過本次的課程設(shè)計(jì),讓我更好的了解了算法的重要性,一個(gè)優(yōu)異的算法能極大的減少運(yùn)行時(shí)間。在本課程設(shè)計(jì)上

45、,在異或矩陣的比對上,為了更好的實(shí)現(xiàn)元素比對,我采用了了冒泡排序法,可以讓它實(shí)現(xiàn)有序的比對,這樣就減少了比對的次數(shù),減少運(yùn)算時(shí)間。本算法還有挺多改進(jìn)的地方,例如,算法復(fù)雜度太大,所以算法還有待進(jìn)一步改善,以達(dá)到更優(yōu)。</p><p><b>  //完全代碼</b></p><p>  #include<iostream></p><p

46、>  using namespace std;</p><p><b>  //定義函數(shù)</b></p><p>  //22222222222222222222222同型矩陣</p><p>  void wensen_tx(int **p1,int **p2,int n)</p><p><b>  

47、{</b></p><p>  for(int i=0;i<n;i++)</p><p><b>  {</b></p><p>  for(int j=0;j<n;j++)</p><p><b>  {</b></p><p>  if(p1[i]

48、[j]>0)</p><p><b>  {</b></p><p>  p2[i][j]=1;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>&l

49、t;/p><p>  p2[i][j]=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><

50、p>  //3333333333333333333333異或矩陣</p><p>  void wensen_yh(int **p1,int **p2,int **p3,int n)</p><p><b>  {</b></p><p>  for( int i=0;i<n;i++)</p><p><

51、;b>  {</b></p><p>  for(int j=0;j<n;j++)</p><p><b>  {</b></p><p><b>  if(i==j)</b></p><p><b>  {</b></p><p&g

52、t;  p3[i][j]=p1[i][i];</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  int sum1,sum12;</p><p><b&g

53、t;  sum1=0;</b></p><p>  for(int k=0;k<n;k++)</p><p><b>  {</b></p><p>  if(p2[i][k]==p2[j][k])</p><p><b>  {</b></p><p>

54、<b>  sum12=0;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  sum12=1;</b></p>

55、;<p><b>  }</b></p><p>  sum1=sum1+(p1[i][k]+p1[j][k])*sum12;</p><p><b>  }</b></p><p>  p3[i][j]=sum1;</p><p><b>  }</b><

56、/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ////44444444444444444同或矩陣</p><p>  void wensen_th(int **p1,

57、int **p2,int **p4,int n)</p><p><b>  {</b></p><p>  for(int i=0;i<n;i++)</p><p><b>  {</b></p><p>  for(int j=0;j<n;j++)</p><p&

58、gt;<b>  {</b></p><p><b>  if(i==j)</b></p><p><b>  {</b></p><p>  p4[i][j]=p1[i][i];</p><p><b>  }</b></p><p&

59、gt;<b>  else</b></p><p><b>  {</b></p><p>  int sum1,sum12;</p><p><b>  sum1=0;</b></p><p>  for(int k=0;k<n;k++)</p><

60、p><b>  {</b></p><p>  if(p2[i][k]==p2[j][k])</p><p><b>  {</b></p><p><b>  sum12=1;</b></p><p><b>  }</b></p>

61、<p><b>  else</b></p><p><b>  {</b></p><p><b>  sum12=0;</b></p><p><b>  }</b></p><p>  sum1=sum1+(p1[i][k]+p1[j][

62、k])*sum12;</p><p><b>  }</b></p><p>  p4[i][j]=sum1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>&

63、lt;/p><p><b>  }</b></p><p>  //////////////////////////輸出函數(shù)</p><p>  void wensen_out(int **p,char *s,int n)</p><p><b>  {</b></p><p>

64、<b>  cout<<s;</b></p><p>  cout<<"\n";</p><p>  for(int i=0;i<n;i++)</p><p><b>  {</b></p><p>  for(int j=0;j<n;j++)

65、</p><p><b>  {</b></p><p>  cout<<p[i][j];</p><p>  cout<<"\t";</p><p><b>  }</b></p><p>  cout<<"

66、\n";</p><p><b>  }</b></p><p><b>  }</b></p><p>  //*********************************冒泡排序</p><p>  void wensen_mp(int mp[],int n)</p>

67、<p><b>  {</b></p><p><b>  int t;</b></p><p>  for(int i=0;i<n-1;i++)</p><p><b>  {</b></p><p>  for(int j=0;j<n-1-i;j+

68、+)</p><p><b>  {</b></p><p>  if(mp[j]>mp[j+1])</p><p><b>  {</b></p><p><b>  t=mp[j];</b></p><p>  mp[j]=mp[j+1];&l

69、t;/p><p>  mp[j+1]=t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

70、>  /////////////////////////核心代碼</p><p><b>  //異或矩陣行轉(zhuǎn)換</b></p><p>  void wensen_hx(int **p1,int **p13,int **p14,int **p2,int **p23,int **p24,int n)</p><p><b>  

71、{</b></p><p>  int *p77=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p13</p><p>  int *p88=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p23</p><p>  int *p33=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p1</p><p>  i

72、nt *p44=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p14</p><p>  int *p55=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p2</p><p>  int *p66=new int[n];//用于替換的臨時(shí)一維數(shù)組,存放p24</p><p>  int *p99=new int[n];//用于行行替換的臨時(shí)數(shù)組<

73、;/p><p><b>  int t;</b></p><p>  int tt;//進(jìn)行跳轉(zhuǎn)判斷</p><p>  int ttt=0;//進(jìn)行跳轉(zhuǎn)判斷</p><p><b>  //行行替換</b></p><p>  for( int i=0;i<n;i++)&

74、lt;/p><p><b>  {</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組p13</p><p>  for(int i77=0;i77<n;i77++)</p><p><b>  {</b></p><p>  p77[i77]=p13[i][i7

75、7];</p><p><b>  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組p1</p><p>  for(int i33=0;i33<n;i33++)</p><p><b>  {</b></p><p>  p33[i33]=p1[i][

76、i33];</p><p><b>  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組</p><p>  for(int i44=0;i44<n;i44++)</p><p><b>  {</b></p><p>  p44[i44]=p14[i]

77、[i44];</p><p><b>  }</b></p><p>  //p77,p33,p44冒泡排序</p><p>  wensen_mp(p77,n);</p><p>  wensen_mp(p33,n);</p><p>  wensen_mp(p44,n);</p>

78、<p>  //開始進(jìn)行比較,p12的每一行與p23的每一行進(jìn)行比較</p><p>  for(int y=i;y<n;y++)</p><p><b>  {</b></p><p><b>  tt=0;</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組</

79、p><p>  for(int i88=0;i88<n;i88++)</p><p><b>  {</b></p><p>  p88[i88]=p23[y][i88];</p><p><b>  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組<

80、/p><p>  for(int i55=0;i55<n;i55++)</p><p><b>  {</b></p><p>  p55[i55]=p2[y][i55];</p><p><b>  }</b></p><p>  //首先進(jìn)行行賦值給另外一個(gè)數(shù)組<

81、/p><p>  for(int i66=0;i66<n;i66++)</p><p><b>  {</b></p><p>  p66[i66]=p24[y][i66];</p><p><b>  }</b></p><p>  //p88,p55,p66冒泡排序&l

82、t;/p><p>  wensen_mp(p88,n);</p><p>  wensen_mp(p55,n);</p><p>  wensen_mp(p66,n);</p><p><b>  //開始比較</b></p><p>  for(int a=0;a<n;a++)</p&g

83、t;<p><b>  {</b></p><p>  if(p77[a]==p88[a])</p><p><b>  {</b></p><p><b>  tt=a;</b></p><p>  if(a==n-1)//也就是各個(gè)都相等,找到匹配</p

84、><p><b>  {</b></p><p>  //開始進(jìn)行鄰接矩陣對應(yīng)位置比較</p><p>  for(int b=0;b<n;b++)</p><p><b>  {</b></p><p>  if(p33[b]==p55[b])</p>&l

85、t;p><b>  {</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p>  else if(b<n-1)</p><p><b>  {</b></p>&l

86、t;p>  cout<<"不同構(gòu)\n";</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //開始進(jìn)行同或矩陣</p>&

87、lt;p>  for(int c=0;c<n;c++)</p><p><b>  {</b></p><p>  if(p44[c]==p66[c])</p><p><b>  {</b></p><p><b>  continue;</b></p>

88、;<p><b>  }</b></p><p>  else if(c<n-1)</p><p><b>  {</b></p><p>  cout<<"不同構(gòu)\n";</p><p><b>  return;</b>&

89、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p>  ttt++;//表示成功匹配一行</p><p>  //進(jìn)行行行轉(zhuǎn)換p2</p><p>  for(int u1=0;u1<n;u1++)</p>&l

90、t;p><b>  {</b></p><p>  t=p2[i][u1];</p><p>  p2[i][u1]=p2[y][u1];</p><p>  p2[y][u1]=t;</p><p><b>  }</b></p><p>  for(int u11=

91、0;u11<n;u11++)</p><p><b>  {</b></p><p>  t=p2[u11][i];</p><p>  p2[u11][i]=p2[u11][y];</p><p>  p2[u11][y]=t;</p><p><b>  }</b>

92、</p><p>  //進(jìn)行行行轉(zhuǎn)換p23</p><p>  for(int u2=0;u2<n;u2++)</p><p><b>  {</b></p><p>  t=p23[i][u2];</p><p>  p23[i][u2]=p23[y][u2];</p>&

93、lt;p>  p23[y][u2]=t;</p><p><b>  }</b></p><p>  for(int u22=0;u22<n;u22++)</p><p><b>  {</b></p><p>  t=p23[u22][i];</p><p> 

94、 p23[u22][i]=p23[u22][y];</p><p>  p23[u22][y]=t;</p><p><b>  }</b></p><p>  //進(jìn)行行行轉(zhuǎn)換p24</p><p>  for(int u3=0;u3<n;u3++)</p><p><b>  

95、{</b></p><p>  t=p24[i][u3];</p><p>  p24[i][u3]=p24[y][u3];</p><p>  p24[y][u3]=t;</p><p><b>  }</b></p><p>  for(int u33=0;u33<n;u33

96、++)</p><p><b>  {</b></p><p>  t=p24[u33][i];</p><p>  p24[u33][i]=p24[u33][y];</p><p>  p24[u33][y]=t;</p><p><b>  }</b></p>

97、<p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  continue;</b>

98、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(y==n-1)//一直循環(huán)到最后都未找到匹配</p><p><b>  {</b></p><p>  cout<<&q

99、uot;不同構(gòu)\n";</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>&l

100、t;b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //上面的匹配沒有問題,則進(jìn)行行替換</p><p>  if(tt==n-1)</p><p><b>  {&

101、lt;/b></p><p>  if(ttt==n)</p><p><b>  {</b></p><p>  cout<<"同構(gòu)\n";</p><p><b>  return;</b></p><p><b>  }&

102、lt;/b></p><p><b>  else</b></p><p><b>  {</b></p><p>  break;//成功跳出循環(huán)判斷下一行</p><p><b>  }</b></p><p><b>  }<

103、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ///////////////////////////////////////主程序</p><p&g

104、t;  int main()</p><p><b>  {</b></p><p>  int n;//圖的頂點(diǎn)數(shù)</p><p>  char *s;//字符串提示</p><p>  char ss='y';</p><p>  cout<<"\n&qu

105、ot;;</p><p>  cout<<"**********************歡迎進(jìn)入李文森圖同構(gòu)判斷*******************\n\n\n";</p><p>  while(ss=='y')</p><p><b>  {</b></p><p>

106、  cout<<"請輸入圖的頂點(diǎn)個(gè)數(shù)\n";</p><p>  cin>>n;//接收第一個(gè)圖的頂點(diǎn)個(gè)數(shù)</p><p>  if(cin.fail())</p><p><b>  {</b></p><p>  cout<<"**********輸入

107、錯(cuò)誤,請重新輸入*************\n";</p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  //************************

108、*****************創(chuàng)建數(shù)組</p><p>  //圖一鄰接矩陣數(shù)組</p><p>  int **p1=new int*[n];</p><p>  for(int i1=0;i1<n;i1++)</p><p><b>  {</b></p><p>  p1[i1]=

109、new int[n];</p><p><b>  }</b></p><p><b>  //圖一同型矩陣</b></p><p>  int **p12=new int*[n];</p><p>  for(i1=0;i1<n;i1++)</p><p><b

110、>  {</b></p><p>  p12[i1]=new int[n];</p><p><b>  }</b></p><p><b>  //圖一行異或矩陣</b></p><p>  int **p13=new int*[n];</p><p> 

111、 for(i1=0;i1<n;i1++)</p><p><b>  {</b></p><p>  p13[i1]=new int[n];</p><p><b>  }</b></p><p><b>  //圖一行同或矩陣</b></p><p&

112、gt;  int **p14=new int*[n];</p><p>  for(i1=0;i1<n;i1++)</p><p><b>  {</b></p><p>  p14[i1]=new int[n];</p><p><b>  }</b></p><p>

113、;  //圖二鄰接矩陣數(shù)組</p><p>  int **p2=new int*[n];</p><p>  for(int i2=0;i2<n;i2++)</p><p><b>  {</b></p><p>  p2[i2]=new int[n];</p><p><b>

114、;  }</b></p><p><b>  //圖二同型矩陣</b></p><p>  int **p22=new int*[n];</p><p>  for(i1=0;i1<n;i1++)</p><p><b>  {</b></p><p>  

115、p22[i1]=new int[n];</p><p><b>  }</b></p><p><b>  //圖二行異或矩陣</b></p><p>  int **p23=new int*[n];</p><p>  for(i1=0;i1<n;i1++)</p><p

116、><b>  {</b></p><p>  p23[i1]=new int[n];</p><p><b>  }</b></p><p><b>  //圖二行同或矩陣</b></p><p>  int **p24=new int*[n];</p>&

117、lt;p>  for(i1=0;i1<n;i1++)</p><p><b>  {</b></p><p>  p24[i1]=new int[n];</p><p><b>  }</b></p><p>  //***********************************

118、***************</p><p>  //接收第一個(gè)鄰接矩陣的二維數(shù)組</p><p>  cout<<"請輸入第一個(gè)圖的鄰接矩陣\n";</p><p>  for(int i11=0;i11<n;i11++)</p><p><b>  {</b></p>

119、;<p>  for(int j11=0;j11<n;j11++)</p><p><b>  {</b></p><p>  cin>>p1[i11][j11];</p><p><b>  }</b></p><p><b>  }</b>&

120、lt;/p><p>  //接收第二個(gè)鄰接矩陣的二維數(shù)組</p><p>  cout<<"請輸入第二個(gè)圖的鄰接矩陣\n";</p><p>  for(int i22=0;i22<n;i22++)</p><p><b>  {</b></p><p>  fo

121、r(int j22=0;j22<n;j22++)</p><p><b>  {</b></p><p>  cin>>p2[i22][j22];</p><p><b>  }</b></p><p><b>  }</b></p><p

122、>  //**************************************************</p><p><b>  //圖一同型矩陣</b></p><p>  wensen_tx(p1,p12,n);</p><p><b>  //圖一異或矩陣</b></p><p&g

123、t;  wensen_yh(p1,p12,p13,n);</p><p><b>  //圖一同或矩陣</b></p><p>  wensen_th(p1,p12,p14,n);</p><p><b>  //圖二同型矩陣</b></p><p>  wensen_tx(p2,p22,n);&l

124、t;/p><p><b>  //圖二異或矩陣</b></p><p>  wensen_yh(p2,p22,p23,n);</p><p><b>  //圖二同或矩陣</b></p><p>  wensen_th(p2,p22,p24,n);</p><p>  //***

125、******************************************輸出</p><p><b>  /*</b></p><p>  s="圖一鄰接矩陣輸出:";</p><p>  out(p1,s,n);</p><p>  s="圖一同型矩陣輸出:";<

126、;/p><p>  out(p12,s,n);</p><p>  s="圖一異或矩陣輸出:";</p><p>  out(p13,s,n);</p><p>  s="圖一同或矩陣輸出:";</p><p>  out(p14,s,n);</p><p>

127、  s="圖二鄰接矩陣輸出:";</p><p>  out(p2,s,n);</p><p>  s="圖二同型矩陣輸出:";</p><p>  out(p22,s,n);</p><p>  s="圖二異或矩陣輸出:";</p><p>  out(p2

128、3,s,n);</p><p>  s="圖二同或矩陣輸出:";</p><p>  out(p24,s,n);</p><p><b>  */</b></p><p>  ////************************************核心代碼,進(jìn)行行轉(zhuǎn)換</p>&

129、lt;p>  cout<<"\n";</p><p>  cout<<"\n";</p><p>  wensen_hx(p1,p13,p14,p2,p23,p24,n);</p><p>  cout<<"\n";</p><p>  //

130、********************************************</p><p><b>  /*</b></p><p>  s="圖二鄰接矩陣輸出:";</p><p>  wensen_out(p2,s,n);</p><p>  s="圖二同型矩陣輸出:&qu

131、ot;;</p><p>  wensen_out(p22,s,n);</p><p>  s="圖二異或矩陣輸出:";</p><p>  wensen_out(p23,s,n);</p><p>  s="圖二同或矩陣輸出:";</p><p>  wensen_out(p2

132、4,s,n);</p><p><b>  */</b></p><p>  cout<<"\n\n\n*********是否繼續(xù)(y?n): ";</p><p><b>  cin>>ss;</b></p><p><b>  }</

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論