等価クラスで推移閉包とソートについて質問したいと思います。推移閉包と等価クラス
私はブール値行列を持っていますので、ブール値行列から、推移閉包を計算し、等価クラスを見つけ、これらの等価クラスをすべて注文してください。例えば
:私は2つの等価クラス{{0を有するグラフ
0 <-> 1
|
v
2
を有します。 1}; {2}}の後にこのクラスをソートした結果は{2}です。 1}
1)推移的閉包からなぜ等価クラスを見つけることができるのか、もっと理解したいですか?私に例を挙げてください。私は例で分かりやすい。
2)これは例です。ここれる機能eq
の出力とsort
は、 を同じである理由を私は理解していないAsking about return type, list and set data structure in OCaml
と:私はから
let matrix =
[|[| false; true; false; false|];
[| false; false; false; false|];
[| true; true; false; true|];
[| false; false; false; false|];
|]
(* compute a transitive closure of a matrix *)
let transClosure matrix =
let n = Array.length matrix in
for k = 0 to n - 1 do
let mk = matrix.(k) in
for i = 0 to n - 1 do
let mi = matrix.(i) in
for j = 0 to n - 1 do
mi.(j) <- max mi.(j) (min mi.(k) mk.(j))
done;
done;
done;
matrix;;
(* compute transitive closure of boolean matrix *)
let tc_ma = transClosure matrix;;
(* compute equivalence classes on transitive closure*)
let eq = equivalence_classes tc_ma;;
(* sorting all equivalence classes *)
let sort = sort_equivalence_classes tc_ma eq;;
これらの機能
equivalence_classes
と
とsort_equivalence_classes
上述のアルゴリズムでテストしてい両方の機能の出力:[[3; 1; 0]; [1]]
;なぜ私にこの結果をもたらしたのか分かりません。どこにありますか?2
?どのように私は期待した結果を得ることができますか?
はあなたの例ではtransClosure関数が行列を変更しない非常に
本当にありがとうございました。ありがとう:) – Quyen