离散数学实验题目-关系
目錄
第一章 實驗概述 3
1.1 實驗目的 3
1.2 實驗內容 3
1.3 實驗環境 3
第二章 實驗原理和實現過程 4
2.1 實驗原理 4
2.2 實驗過程(算法描述) 4
2.2.1 程序整體思路 4
2.2.2具體算法流程 4
第三章 實驗數據及結果分析 6
第四章 實驗收獲和心得體會 6
4.1 實驗收獲 6
4.2 心得體會 6
第五章 實驗源程序清單 8
5.1 程序代碼 8
第一章 實驗概述
1.1 實驗目的
理解關系的基本概念,關系的矩陣表示,關系的四種性質及對應閉包的構造方法。
通過實驗,幫助學生更好地掌握計算機科學技術常用的離散數學中的概念、性質和運算,培養邏輯思維;通過實驗提高學生編寫實驗報告、總結實驗結果的能力,提高理論聯系實際的能力;使學生具備程序設計的思想,能夠獨立完成簡單的算法設計和分析。通過實驗報告的編寫,掌握目錄、頁碼等文檔編輯技巧。
1.2 實驗內容
鍵盤輸入一個關系的關系矩陣,先判定關系性質,再計算其自反閉包、對稱閉包和傳遞閉包。
基本要求:程序需具有基本的容錯控制,在輸入錯誤時有處理手段;程序界面友好,需要輸入的地方有輸入說明,說明輸入的內容和格式要求等;實驗原理和實現過程應該詳細分析問題,給出解決思路,描述算法思想,不能用源程序代替算法;測試數據應全面,包括非法輸入的處理結果等都應包含在內;程序代碼關鍵部分要加注釋。實驗報告文檔要求有目錄格式,封面不編頁碼,目錄和正文單獨編頁碼。
1.3 實驗環境
C或C++語言編程環境實現。
第二章 實驗原理和實現過程
2.1 實驗原理
關系的基本概念,關系的矩陣表示,關系的四種性質及對應閉包的構造方法。
2.2 實驗過程(算法描述)
2.2.1 程序整體思路
自反性:
從給定的關系矩陣來斷判關系R是否為自反是很容易的。若M(R的關系矩陣)的主對角線元素均為1,則R是自反關系;若M(R的關系矩陣)的主對角線元素均為0,則R是反自反關系;若M(R的關系矩陣)的主對角線元素既有1又有0,則R既不是自反關系也不是反自反關系。本算法可以作為判等價關系算法的子程序給出。
對稱性:
從給定的關系矩陣來判斷關系R是否為對稱是很容易的。若M(R的關系矩陣)為對稱矩陣,則R是對稱關系;若M為反對稱矩陣,則R是反對稱關系。因為R為對稱的是等價關系的必要條件,所以,本算法可以作為判等價關系算法的子程序給出。
傳遞性:
從給定的關系矩陣來斷判關系R是否為傳遞是很容易的。若M(R的關系矩陣)為傳遞矩陣,則R是傳遞關系;若M為非傳遞矩陣,則R是非傳遞關系;本算法可以作為判等價關系算法的子程序給出。
2.2.2具體算法流程
自反性算法實現
對稱性算法實現:
傳遞性算法實現
第三章 實驗數據及結果分析
第四章 實驗收獲和心得體會
1、更好地理解掌握計算機科學技術常用的離散數學中的關系的概念、性質和運算,培養邏輯思維;
2、通過實驗提高編寫實驗報告、總結實驗結果的能力,提高理論聯系實際的能力;
3、具備程序設計的思想,能夠獨立完成簡單的算法設計和分析;
4、通過實驗提高了報告的編寫,掌握目錄、頁碼等文檔編輯技巧;
5、學會用計算機編程語言解決離散數學問題;
6、具有基本的程序調試能力;
7、學會分析問題,給出解決思路,描述算法思想;
第五章 實驗源程序清單
/**@Author: STZG*@Language: C++*/#include <bits/stdc++.h>using namespace std;const int N=100+10;int n;int a[N][N];//原關系矩陣int b[N][N];//自反閉包int c[N][N];//對稱閉包int d[N][N];//傳遞閉包int main(){cout<<"請輸入關系矩陣大小(0<n<=100):"<<endl;scanf("%d",&n);while(n<=0||n>100){cout<<"關系矩陣大小不符合要求,請重新輸入(0<n<=100):"<<endl;scanf("%d",&n);}cout<<"請輸入關系矩陣(0/1):"<<endl;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&a[i][j]);d[i][j]=c[i][j]=b[i][j]=a[i][j];}}bool flag[5]={1,1,1,1,1};for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j){b[i][j]=1;//求自反性if(!a[i][j]){flag[0]=0;//判斷自反性}else{flag[1]=0;//判斷反自反性}}if(a[i][j]){c[j][i]=1;//求對稱if(!a[j][i])flag[2]=0;if(i!=j&&a[j][i])flag[3]=0;}for(int k=1;k<=n;k++){if(a[i][j]&&a[j][k]&&!a[i][k])flag[4]=0;//判斷傳遞性if(d[i][j]&&d[j][k]&&!d[i][k])d[i][k]=1;//求傳遞性}}}cout<<(flag[0]||flag[1]?flag[0]?"自反性":"反自反性":"既不是自反性也不是反自反性")<<"、"<<(flag[2]||flag[3]?flag[2]?"對稱性":"反對稱性":"既不是對稱性也不是反對稱性")<<"、"<<(flag[4]?"傳遞性":"非對稱性")<<endl;cout<<"自反閉包:"<<endl;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){printf("%d%c",b[i][j]," \n"[j==n]);}}cout<<"對稱閉包:"<<endl;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){printf("%d%c",c[i][j]," \n"[j==n]);}}cout<<"傳遞閉包:"<<endl;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){printf("%d%c",d[i][j]," \n"[j==n]);}}//cout << "Hello world!" << endl;return 0;}總結
以上是生活随笔為你收集整理的离散数学实验题目-关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离散数学实验题目-集合
- 下一篇: 两只塔姆沃斯牛 The Tamworth