問題描述:
利用矩陣求解有限集上給定關係的自反和對稱閉包。
輸入格式:
首先輸入關係矩陣r的維數,回車之後輸入矩陣每個元素,以空格或回車分開。 只能輸入0或1。
輸出格式:
輸出自反閉包關係矩陣r®,對稱閉包關係矩陣s®。
樣例輸入:
40 1 0 0
0 0 0 1
0 0 0 0
1 0 1 0
樣例輸出
r®:1 1 0 0
0 1 0 1
0 0 1 0
1 0 1 1
s®:0 1 0 1
1 0 0 1
0 0 0 1
1 1 1 0
關於關係的定義不再贅述,下面分別給出其求解公式:
自反閉包:設r是集合a上的二元關係。那麼r®=r∪e (e是a上相等關係) ;
對稱閉包:設r是集合a上的二元關係。那麼s®=r∪r^-1;
不難發現,自反閉包本質上就是在原矩陣的基礎上將對角線元素全改為1,而對稱閉包其實就是將原矩陣中為1的元素
a[i][j],其對應的a[j][i]也變為1,這是很容易實現的
#include
#define n 100
intmain()
;scanf
("%d"
,&n)
;for
(i=0
;ifor(i=
0;i}printf
("r(r):\n");
for(i=
0;i)printf
("\n");
}printf
("s(r):\n");
for(i=
0;i(i
printf
("\n");
}}
下面介紹傳遞閉包,
利用定義求解傳遞閉包的部落格單獨寫了一篇,可進行參看
C語言實現矩陣運算
最近在學習機械人運動控制學,用到了矩陣運算,並用c語言實現之 首先宣告該 在ubuntu18.04下執行通過,如若在windows下執行失敗請考慮編譯器版本問題 乙個矩陣最基本的有行數line,列數row和 行數乘以列數個資料 row line 所以用乙個最基本的結構體變數來表示乙個矩陣 矩陣的結構...
C語言實現大整數運算
我們知道,c語言中的整型有short int long。ansi c標準定義的整數型別範圍為 型別 位元數取值範圍 unsigned short int 160至65535 0至2 16 1 signed short int 16 32768至32767 2 15至2 15 1 unsigned i...
用C語言實現Warshall運算
用c語言實現warshall運算 1.先定義兩個整形變數m n。用scanf輸入,m代表陣列的行,n代表陣列的列。然後定義陣列a m n 2.用兩個for迴圈對陣列進行輸入.寫乙個while迴圈迴圈條件為判斷i是否小於矩陣的列。3.用兩個for迴圈對矩陣每個元素進行判斷,判斷是否等於1,如果等於1,...