1

行列(正方行列)が主対角線に対して対称であるかどうかを決定する述語を定義します。述語は次のようになります。ここで、Zは主対角線に対して対称な行列(正方行列)です。

対称(Z)

アイデアは、行と列が等しいことを確認することですが、エクササイズを上げる方法がわかりません...

4

2 に答える 2

3
symmetrical(Z) :-
   transpose(Z,Z).

これで、転置を定義するだけで済みます。

于 2012-11-07T18:40:51.747 に答える
0

古き良き行列I、Jの索引付け:

symmetrical(M) :-
   forall(elem(M, I, J, E), elem(M, J, I, E)).

elem(M, I, J, E) :-
   nth1(I, M, R),
   nth1(J, R, E).

テスト:

?- symmetrical([[a,b],[b,a]]).
true.

?- symmetrical([[a,b],[a,b]]).
false.

@gusbroのコメントを見る前にこれを書いたのですが、まさに彼が提案したものです...

于 2012-11-07T19:48:20.820 に答える