C語言實現關係的閉包運算

2021-10-06 16:38:35 字數 1108 閱讀 6648

問題描述

利用矩陣求解有限集上給定關係的自反和對稱閉包。

輸入格式

首先輸入關係矩陣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,...