Foundationপ্রথম নীতি থেকে
LEVEL 0 · Mathematical Foundations

Equivalence Relation

সমতুল্যতা সম্পর্ক

Reflexive, symmetric আর transitive — তিনটাই। প্রতিটা equivalence relation set-কে partition করে, আর প্রতিটা partition একটা equivalence relation।

also: RST

স্মরণসূত্র: RST — Reflexive, Symmetric, Transitive।

উদাহরণ: =, a ≡ b (mod n), “একই connected component-এ”, “একই git commit থেকে”।

মূল theorem: equivalence relation আর partition একই জিনিস।

[a] = { x : x ∼ a }        a-এর equivalence class

mod 3 ℤ-কে তিনটা class-এ ভাগ করে — পরস্পর-বিচ্ছিন্ন, আর একসাথে পুরো ℤ ঢাকে।

কোডে এটা প্রতিদিন: == কে equivalence relation হতেই হবে, নাহলে dict আর set ভেঙে পড়ে।

float('nan') == float('nan')    # False — reflexive ভেঙেছে

এজন্যই NaN কে list.index() দিয়ে খুঁজে পাওয়া যায় না।

আর নিয়ম: a == b হলে hash(a) == hash(b) হতেই হবে। Java-তে equals() override করে hashCode() না করা সবচেয়ে সাধারণ bug-গুলোর একটা।

GROUP BY আক্ষরিকভাবে একটা equivalence relation দিয়ে partition করে।