同値関係
先週の授業で「同値関係」の話が出たのだけど、なんか授業以外で聞いたことある気がする。 同値関係の定義は以下。
ある集合 S において、二項関係 ∼ が次の性質を満たすとき、∼ は S の同値関係であるという。
- 反射律: a ∼ a.
- 対称律: a ∼ b ⇒ b ∼ a.
- 推移律: a ∼ b かつ b ∼ c ⇒ a ∼ c.
上の 3 項をまとめて同値律という。
どこで聞いたのかと思ったら Effective Java プログラミング言語ガイド の
という話っぽい。 内容は equals
をオーバーライドする時は一般契約に従うObject.equals
メソッドをオーバーライドするなら上の同値関係を守るように実装しましょう的なもの。 ちゃんと 反射・対象・推移 って言葉も出てる。 こういうのがきちっと書かれているとちょっとうれしかったりする。