----------------------------
質問:Rは、セットSに定義されたバイナリ関係で、R閉鎖要求が送信されます。
入力:リレーションR、セットA
出力:T(R)、Rの推移閉包であります
ソリューション:ウォーシャルアルゴリズム
----------------------------
推移閉包(推移閉包)R&LT * = R&LT 1 ∪R&LT 2 ∪R&LT 3 ∪∪R&LT ...... N-
転送関係Rの閉鎖を説明すると、T(R)で表されるR *で表すことができる関係です。
ウォーシャルアルゴリズムは次のように動作します。
まず、R行列を表し、
次いで、各素子を介して上から下へ、i番目の列の、列によって最初の列からトラバースを開始します
第i行j列の要素が1である場合、第i行第j列に相当を添加しました。
Pythonのシミュレーションコード:
#行インデックスR用の第1の2次元配列インデックス、及び第二の添字は列インデックスであることを想定。
:ウォーシャルDEF(R&LT)
Nサイズ=(R&LT)
範囲(0 ,. 1-N-)におけるIのための:
:範囲内のJ(0 ,. 1-N-)用
IF R&LT [J] [I] == 1:
R&LT [ J] [:] = R&LT + [I] [:]
戻りR&LT