Javaで等価クラスを実装する簡単な方法は何ですか? その目的のためのライブラリはありますか?
厄介な部分は、効率的でナイーブでない "equal" 演算子の書き方です。
しましょうS = {x,y,z,w,h}
。x->1, y->1, z->1, w->2, h->2
S の等価クラスのマッピングを使用する場合、マッピングをx->10, y->10, z->10, w->20, h->20
同じ等価クラスと見なす必要があります。
セット S の基数が大きくなると、素朴な「等しい」演算子はすぐに時間がかかるようになります。
簡単な方法は何でしょうか?何か案が?
[編集]明確にするために、特定の問題は次のように形式化できます。
S を空でない集合とします。V から整数への部分写像の集合を M で表す。以下で定義される二項関係 \sim が M 上の同値関係を導出することを示すのは比較的簡単です。
m1 と m2 の場合、M の 2 つの部分写像 m1 \sim m2
- V の任意の a に対して、m2(a) が定義されている場合にのみ、m1(a) が定義されます。
V の任意の a,b について、m2(a) と m2(b) が両方とも同じ整数値に定義されている場合に限り、m1(a) と m1(b) は両方とも同じ整数値 'z1' であると定義されます。 'z2' ('z1' と異なる場合とない場合があります)
例。
a->9,b->9,w->1 \sim a->10,b->10,w->0
しかし、言うのは正しくありません
a->5 \sim b->9
ありがとう。