--- type: theoretical --- ## Partitions and Cartesian Products ### Cartesian Product The *Cartesian product* of two sets $A$ and $B$ is the set of all ordered pairs where the first element is from $A$ and the second is from $B$: $$ A \times B = \{ (a, b) \mid a \in A, \, b \in B \} $$ - If $A = \{1, 2\}$ and $B = \{x, y\}$, then: $$ A \times B = \{ (1, x), (1, y), (2, x), (2, y) \} $$ [^1]: The Cartesian product creates pairs from all possible combinations of elements from two sets. ### Partitions A partition of a set $S$ is a collection of non-empty, disjoint subsets $\{S_1, S_2, \dots, S_n\}$ such that: - $S = S_1 \cup S_2 \cup \dots \cup S_n$ - $S_i \neq \emptyset$ for all $i$ - $S_i \cap S_j = \emptyset$ for all $i \neq j$ [^2]: Partitions divide a set into disjoint subsets that cover the entire set. - A partition of $S = \{1, 2, 3, 4\}$ could be $\{\{1, 2\}, \{3, 4\}\}$. --- ## Binary Relations A binary relation $R$ from set $A$ to set $B$ is a subset of the Cartesian product $A \times B$: $$ R \subseteq A \times B $$ - When $A = B$, $R$ is a relation on $A$. ### Representations of Relations #### As [Sets](Mathematical%20Data%20Structures.md) A relation can be represented as a set of ordered pairs. - $R = \{ (1, 2), (2, 3), (3, 1) \}$ #### As [Matrices](Matrices.md) For a finite set $A = \{a_1, a_2, \dots, a_n\}$, the relation matrix $M_R$ is an $n \times n$ matrix where: $$ (M_R)_{ij} = \begin{cases} 1, & \text{if } (a_i, a_j) \in R \\ 0, & \text{otherwise} \end{cases} $$ #### As [Graphs](Graphs.md) A digraph (directed graph) represents elements as vertices and relations as directed edges. - For $R = \{ (1, 2), (2, 3) \}$, draw vertices for 1, 2, 3, with edges from 1 to 2 and 2 to 3. --- ## Properties of Relations ### Reflexive A relation $R$ on set $A$ is *reflexive* if every element is related to itself: $$ \forall a \in A, \, (a, a) \in R $$ ### Symmetric $R$ is *symmetric* if: $$ \forall a, b \in A, \, (a, b) \in R \implies (b, a) \in R $$ ### Antisymmetric $R$ is *antisymmetric* if: $$ \forall a, b \in A, \, (a, b) \in R \land (b, a) \in R \implies a = b $$ ### Transitive $R$ is *transitive* if: $$ \forall a, b, c \in A, \, (a, b) \in R \land (b, c) \in R \implies (a, c) \in R $$ ### Equivalence Relations A relation that is *reflexive*, *symmetric*, and *transitive* is an ***equivalence*** relation. - An equivalence relation partitions the set into equivalence classes. [^3]: Equivalence relations naturally partition a set into equivalence classes, grouping related elements. - For $a \in A$, **the equivalence class** $[a]$ is: $$ [a] = \{ x \in A \mid (a, x) \in R \} $$ - The set of all equivalence classes forms a partition of $A$. --- ## Operations on Relations ### Union The union of two relations $R$ and $S$ on $A$: $$ R \cup S = \{ (a, b) \mid (a, b) \in R \text{ or } (a, b) \in S \} $$ Unions are used in [Kruskall Algorithm's Union-Find](Graph%20Algorithms.md) ### Intersection The intersection of $R$ and $S$: $$ R \cap S = \{ (a, b) \mid (a, b) \in R \text{ and } (a, b) \in S \} $$ ### Composition The composition of relations $R$ and $S$ is: $$ R \circ S = \{ (a, c) \mid \exists b \in A, \, (a, b) \in R \text{ and } (b, c) \in S \} $$ --- ## Algorithms ### Warshall's Algorithm computes the transitive closure of a relation on a finite set. - The smallest transitive relation $R^+$ that contains $R$ is called a **Transitive Closure**. - Determines reachability in graphs; whether there is a path from one vertex to another. #### Steps of Warshall's Algorithm Given the adjacency matrix $M$ of a relation $R$ on set $A = \{a_1, a_2, \dots, a_n\}$: 1. Initialize $T^{(0)} = M$. 2. For $k = 1$ to $n$: - For $i = 1$ to $n$: - For $j = 1$ to $n$: $$ T_{ij}^{(k)} = T_{ij}^{(k-1)} \lor (T_{ik}^{(k-1)} \land T_{kj}^{(k-1)}) $$ 3. After $n$ iterations, $T^{(n)}$ is the transitive closure matrix. --- [^1]: The Cartesian product creates pairs from all possible combinations of elements from two sets. [^2]: Partitions divide a set into disjoint subsets that cover the entire set. [^3]: Equivalence relations naturally partition a set into equivalence classes, grouping related elements.