Grup: Simetri dan Struktur Dasar Alam Semesta 

Definisi Formal dan Eksistensi Unik:

Sebuah grup $(G, *)$ memenuhi empat aksioma di atas. Teorema Eksistensi dan Ketunggalan:

  • Identitas tunggal: $\exists! e \in G$ (bukti: anggap $e_1, e_2$ identitas, maka $e_1 = e_1*e_2 = e_2$)
  • Invers tunggal: $\forall a \in G, \exists! a^{-1} \in G$ (bukti: anggap $b, c$ invers dari $a$, maka $b = be = b(ac) = (ba)c = ec = c$)

Subgrup dan Teorema Lagrange:

Definisi: $H \subseteq G$ adalah subgrup $(H, *)$ jika memenuhi aksioma grup.

Teorema Lagrange (1770): Jika $G$ grup berhingga dan $H$ subgrup $G$, maka $|H|$ membagi $|G|$.

Bukti: Definisikan koset kiri $gH = {gh : h \in H}$. Semua koset memiliki ukuran $|H|$ dan membentuk partisi $G$. Maka $|G| = [G:H] \cdot |H|$ di mana $[G:H]$ adalah indeks.

Konsekuensi Penting:

  1. Order elemen membagi order grup: $|a| \mid |G|$
  2. Grup dengan order prima: Pasti siklik dan sederhana
  3. Persamaan klasifikasi: $|G| = \sum_{i=1}^k [G : C_G(g_i)]$ (kelas konjugasi)

Grup Berhingga yang Penting:

GrupOrderStrukturSifatAplikasi
Grup Siklik $C_n$$n$$\langle a \mid a^n = e \rangle$Abelian, sederhana jika $n$ primaRotasi diskrit, aritmatika modular
Grup Dihidral $D_n$$2n$$\langle r,s \mid r^n = s^2 = e, srs = r^{-1} \rangle$Non-abelian untuk $n>2$Simetri poligon
Grup Simetri $S_n$$n!$Permutasi ${1,\dots,n}$Non-abelian untuk $n>2$Teori penyandian, kombinatorika
Grup Alternating $A_n$$n!/2$Permutasi genapSederhana untuk $n>4$Teori Galois, mekanika kuantum
Grup Kuaternion $Q_8$$8$${\pm1,\pm i,\pm j,\pm k}$Non-abelian, HamiltonianRotasi 3D, fisika partikel

Teorema Struktur Grup Abelian Berhingga:

Fundamental Theorem: Setiap grup Abelian berhingga isomorfik dengan produk langsung grup siklik:
GCd1×Cd2××CdkGCd1​​×Cd2​​×⋯×Cdk​​
dengan $d_1 \mid d_2 \mid \cdots \mid d_k$ (divisibility condition).

Contoh: Grup Abelian order 12:

  • $C_{12} \cong C_3 \times C_4$
  • $C_2 \times C_6 \cong C_2 \times C_2 \times C_3$

Representation Theory (Awal):

Untuk grup berhingga $G$, representasi adalah homomorfisme $\rho: G \to GL(V)$ dengan $V$ ruang vektor.

Teorema Maschke: Jika karakteristik tidak membagi $|G|$, setiap representasi tereduksi sempurna.

Contoh: Representasi $S_3$:

  • Trivial: $\rho(g) = 1$
  • Sign: $\rho(g) = \text{sign}(g)$
  • Standar 2D: Permutasi vektor basis

Gelanggang: Struktur dengan Dualitas Penjumlahan-Perkalian 💍

Struktur Ideal dan Gelanggang Faktor:

Definisi Ideal: $I \subseteq R$ adalah ideal jika:

  1. $(I, +)$ subgrup dari $(R, +)$
  2. $\forall r \in R, \forall i \in I: r \cdot i \in I$ dan $i \cdot r \in I$

Gelanggang Faktor: $R/I = {r + I : r \in R}$ dengan operasi:

  • $(r+I) + (s+I) = (r+s) + I$
  • $(r+I) \cdot (s+I) = (r \cdot s) + I$

Teorema Isomorfisme Pertama: Jika $\phi: R \to S$ homomorfisme gelanggang, maka:
Im(ϕ)R/Ker(ϕ)Im(ϕ)≅R/Ker(ϕ)

Gelanggang Polinomial dan Aljabar Komutatif:

Gelanggang Polinomial: $R[x] = {a_0 + a_1x + \cdots + a_nx^n : a_i \in R}$

Teorema Hilbert Basis: Jika $R$ gelanggang Noetherian, maka $R[x]$ juga Noetherian.

Gelanggang Lokal: Gelanggang dengan tepat satu ideal maksimal. Sangat penting dalam geometri aljabar.

Gelanggang Matriks dan Aljabar Non-komutatif:

$M_n(R)$: Gelanggang matriks $n \times n$ atas gelanggang $R$.

Sifat: Non-komutatif untuk $n>1$, kecuali $R$ trivial.

Teorema Wedderburn-Artin: Klasifikasi gelanggang Artinian sederhana:
RMn1(D1)××Mnk(Dk)RMn1​​(D1​)×⋯×Mnk​​(Dk​)
dengan $D_i$ gelanggang pembagian.

Lapangan: Kesempurnaan Sistem Aljabar 🌾

Ekstensi Lapangan dan Teori Galois:

Definisi: $F \subseteq E$ adalah ekstensi lapangan, dinotasikan $E/F$.

Derajat: $[E:F] = \dim_F E$ sebagai ruang vektor.

Ekstensi Aljabar: Setiap elemen $E$ adalah akar polinomial atas $F$.

Contoh Penting:

  • $\mathbb{C}/\mathbb{R}$: derajat 2, $\mathbb{C} = \mathbb{R}(i)$
  • $\mathbb{Q}(\sqrt{2})/\mathbb{Q}$: derajat 2

Teori Galois Klasik:

Grup Galois: $\text{Gal}(E/F) = {\sigma: E \to E \mid \sigma|_F = id, \sigma$ automorfisme$}$

Teorema Fundamental Teori Galois: Untuk ekstensi Galois $E/F$, terdapat korespondensi bijektif:
{Subgrup HGal(E/F)}{Mediatekstensi FLE}{Subgrup H⊆Gal(E/F)}↔{Mediatekstensi FLE}
dengan $H \leftrightarrow E^H = {x \in E : \forall h \in H, h(x) = x}$.

Aplikasi Sejarah: Menunjukkan ketidakterselesaian persamaan kuintik dengan radikal (Abel, Galois).

Lapangan Hingga (Galois Fields):

Konstruksi: $\text{GF}(p^n) = \mathbb{F}_{p^n} \cong \mathbb{F}_p[x]/\langle f(x)\rangle$ dengan $f$ irreducibel berderajat $n$.

Struktur Multiplikatif: $\mathbb{F}{p^n}^\times \cong C{p^n-1}$ (grup siklik).

Teorema: Untuk setiap $p^n$, terdapat tepat satu lapangan hingga hingga isomorfisme.

Aplikasi Praktis:

  1. AES Encryption: Menggunakan $\mathbb{F}_{2^8}$ untuk SubBytes
  2. Reed-Solomon Codes: $\mathbb{F}_{2^m}$ untuk koreksi error
  3. Elliptic Curve Cryptography: Kurva atas $\mathbb{F}p$ atau $\mathbb{F}{2^m}$

Aplikasi Kriptografi Modern Secara Mendalam

RSA: Implementasi Lengkap dengan Teori Bilangan:

Teorema Euler: $a^{\phi(n)} \equiv 1 \pmod{n}$ untuk $a$ relatif prima dengan $n$.

Algoritma:

  1. Pilih prima besar $p, q$ (2048-bit masing-masing)
  2. $n = pq$, $\phi(n) = (p-1)(q-1)$
  3. Pilih $e$ dengan $1 < e < \phi(n)$, $\gcd(e, \phi(n)) = 1$
  4. Hitung $d = e^{-1} \mod \phi(n)$
  5. Kunci publik: $(n, e)$, Kunci privat: $(n, d)$

Keamanan: Berdasarkan masalah RSA: diberikan $n, e, m^e \mod n$, cari $m$.

Generalization: Multi-prime RSA: $n = p_1 p_2 \cdots p_k$

Elliptic Curve Cryptography (ECC): Matematika Lengkap:

Kurva Eliptik: $y^2 = x^3 + ax + b$ atas lapangan $\mathbb{F}_p$ dengan $4a^3 + 27b^2 \neq 0$.

Grup Titik: $E(\mathbb{F}_p) = {(x,y) \in \mathbb{F}_p^2 : y^2 = x^3 + ax + b} \cup {\mathcal{O}}$

Penjumlahan Titik: Untuk $P = (x_1, y_1)$, $Q = (x_2, y_2)$:

  • Jika $P \neq Q$: $\lambda = \frac{y_2 – y_1}{x_2 – x_1}$
  • Jika $P = Q$: $\lambda = \frac{3x_1^2 + a}{2y_1}$ (doubling)
  • $x_3 = \lambda^2 – x_1 – x_2$, $y_3 = \lambda(x_1 – x_3) – y_1$

Keamanan ECC: Berdasarkan masalah ECDLP: diberikan $P, kP$, cari $k$.

Perbandingan Keamanan:

text

RSA 2048-bit ≈ ECC 224-bit
RSA 3072-bit ≈ ECC 256-bit
RSA 7680-bit ≈ ECC 384-bit

Kriptografi Berbasis Pasangan (Pairing-Based Cryptography):

Bilinear Pairing: $e: G_1 \times G_2 \to G_T$ dengan:

  1. Bilinear: $e(aP, bQ) = e(P, Q)^{ab}$
  2. Non-degenerate: $e(P, Q) \neq 1$ untuk $P, Q \neq 0$
  3. Computable: Efisien dihitung

Aplikasi: Identity-Based Encryption (IBE), Short signatures, Zero-knowledge proofs.

10.5 Implementasi Komputasional Lanjutan dengan Python

python

import random
from math import gcd
from typing import Tuple, List
import numpy as np

# === GRUP DAN TEORI GRUP ===
class FiniteGroup:
    """Implementasi grup berhingga umum"""
    def __init__(self, elements, operation, identity, inverse_func):
        self.elements = elements
        self.op = operation
        self.e = identity
        self.inv = inverse_func
        self.order = len(elements)
    
    def cayley_table(self) -> np.ndarray:
        """Tabel Cayley untuk grup berhingga kecil"""
        n = self.order
        table = np.zeros((n, n), dtype=int)
        elem_to_idx = {elem: i for i, elem in enumerate(self.elements)}
        
        for i, a in enumerate(self.elements):
            for j, b in enumerate(self.elements):
                result = self.op(a, b)
                table[i, j] = elem_to_idx[result]
        return table
    
    def is_abelian(self) -> bool:
        """Cek apakah grup Abelian"""
        for a in self.elements:
            for b in self.elements:
                if self.op(a, b) != self.op(b, a):
                    return False
        return True
    
    def subgroup_generated_by(self, g) -> List:
        """Subgrup siklik dihasilkan oleh g"""
        current = g
        subgroup = [self.e]
        
        while current != self.e:
            subgroup.append(current)
            current = self.op(current, g)
        
        # Hitung lagi untuk mendapatkan semua
        full_subgroup = []
        for i in range(len(subgroup)):
            full_subgroup.append(subgroup[i % len(subgroup)])
        return sorted(set(full_subgroup), key=lambda x: self.elements.index(x))

# === TEORI BILANGAN UNTUK KRIPTOGRAFI ===
class ModularArithmetic:
    """Aritmatika modular untuk kriptografi"""
    @staticmethod
    def mod_inverse(a: int, m: int) -> int:
        """Mencari invers modular menggunakan extended Euclidean"""
        def extended_gcd(a, b):
            if b == 0:
                return a, 1, 0
            d, x1, y1 = extended_gcd(b, a % b)
            x = y1
            y = x1 - (a // b) * y1
            return d, x, y
        
        d, x, _ = extended_gcd(a, m)
        if d != 1:
            raise ValueError("Invers tidak ada")
        return x % m
    
    @staticmethod
    def miller_rabin(n: int, k: int = 5) -> bool:
        """Test primalitas Miller-Rabin"""
        if n < 2:
            return False
        if n in (2, 3):
            return True
        if n % 2 == 0:
            return False
        
        # Tulis n-1 = 2^s * d
        s = 0
        d = n - 1
        while d % 2 == 0:
            s += 1
            d //= 2
        
        for _ in range(k):
            a = random.randint(2, n - 2)
            x = pow(a, d, n)
            if x in (1, n - 1):
                continue
            for _ in range(s - 1):
                x = pow(x, 2, n)
                if x == n - 1:
                    break
            else:
                return False
        return True
    
    @staticmethod
    def generate_large_prime(bits: int = 512) -> int:
        """Generate bilangan prima besar untuk RSA"""
        while True:
            # Pastikan bilangan ganjil dan bit tertinggi = 1
            p = random.getrandbits(bits)
            p |= (1 << (bits - 1)) | 1  # Set bit tertinggi dan terendah
            
            if ModularArithmetic.miller_rabin(p):
                return p

# === IMPLEMENTASI RSA LENGKAP ===
class RSA:
    """Implementasi lengkap RSA dengan padding"""
    def __init__(self, key_size: int = 2048):
        self.key_size = key_size
        self.p = ModularArithmetic.generate_large_prime(key_size // 2)
        self.q = ModularArithmetic.generate_large_prime(key_size // 2)
        self.n = self.p * self.q
        self.phi = (self.p - 1) * (self.q - 1)
        self.e = 65537  # Fermat prime ke-4, umum digunakan
        self.d = ModularArithmetic.mod_inverse(self.e, self.phi)
    
    def public_key(self) -> Tuple[int, int]:
        return (self.n, self.e)
    
    def private_key(self) -> Tuple[int, int]:
        return (self.n, self.d)
    
    def encrypt(self, m: int) -> int:
        """Enkripsi: c = m^e mod n"""
        return pow(m, self.e, self.n)
    
    def decrypt(self, c: int) -> int:
        """Dekripsi: m = c^d mod n"""
        return pow(c, self.d, self.n)
    
    def sign(self, message_hash: int) -> int:
        """Sign: s = hash(m)^d mod n"""
        return pow(message_hash, self.d, self.n)
    
    def verify(self, message_hash: int, signature: int) -> bool:
        """Verify: hash(m) == s^e mod n"""
        return message_hash == pow(signature, self.e, self.n)

# === GRUP ELIPTIK DAN ECC ===
class EllipticCurve:
    """Implementasi kurva eliptik untuk ECC"""
    def __init__(self, p: int, a: int, b: int):
        self.p = p
        self.a = a
        self.b = b
        
        # Pastikan kurva non-singular
        if (4 * pow(a, 3, p) + 27 * pow(b, 2, p)) % p == 0:
            raise ValueError("Kurva singular")
    
    def is_on_curve(self, point) -> bool:
        """Cek apakah titik ada di kurva"""
        if point is None:  # Titik tak hingga
            return True
        x, y = point
        return (y * y) % self.p == (pow(x, 3, self.p) + self.a * x + self.b) % self.p
    
    def add(self, P, Q):
        """Penjumlahan titik pada kurva eliptik"""
        if P is None:
            return Q
        if Q is None:
            return P
        
        x1, y1 = P
        x2, y2 = Q
        
        if x1 == x2 and y1 != y2:
            return None  # Titik tak hingga
        
        if P != Q:
            # λ = (y2 - y1) * inv(x2 - x1)
            m = (y2 - y1) * ModularArithmetic.mod_inverse(x2 - x1, self.p)
        else:
            # λ = (3x1² + a) * inv(2y1)
            m = (3 * pow(x1, 2, self.p) + self.a) * \
                ModularArithmetic.mod_inverse(2 * y1, self.p)
        
        m %= self.p
        x3 = (m * m - x1 - x2) % self.p
        y3 = (m * (x1 - x3) - y1) % self.p
        
        return (x3, y3)
    
    def scalar_mult(self, k: int, P):
        """Perkalian skalar: kP menggunakan double-and-add"""
        result = None
        addend = P
        
        while k:
            if k & 1:
                result = self.add(result, addend)
            addend = self.add(addend, addend)
            k >>= 1
        
        return result

# === DEMONSTRASI KRIPTOGRAFI ===
def demonstrate_crypto():
    print("=== DEMONSTRASI KRIPTOGRAFI BERBASIS ALJABAR ===")
    
    # 1. RSA Demonstration
    print("\n1. RSA ENCRYPTION (Key size: 1024-bit)")
    rsa = RSA(1024)
    message = 123456789
    encrypted = rsa.encrypt(message)
    decrypted = rsa.decrypt(encrypted)
    print(f"Pesan asli: {message}")
    print(f"Terenkripsi: {encrypted}")
    print(f"Didekripsi: {decrypted}")
    print(f"Berhasil: {message == decrypted}")
    
    # 2. Elliptic Curve Demonstration
    print("\n2. ELLIPTIC CURVE CRYPTOGRAPHY")
    # Gunakan kurva standar secp256k1 (Bitcoin curve)
    p = 2**256 - 2**32 - 977
    a = 0
    b = 7
    curve = EllipticCurve(p, a, b)
    
    # Generator point untuk secp256k1
    G = (
        0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,
        0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
    )
    
    # Private key (random)
    private_key = random.randint(1, p-1)
    # Public key = private_key * G
    public_key = curve.scalar_mult(private_key, G)
    
    print(f"Private key: {hex(private_key)[:20]}...")
    print(f"Public key: ({hex(public_key[0])[:20]}..., {hex(public_key[1])[:20]}...)")
    
    # 3. Group Theory Demonstration
    print("\n3. GROUP THEORY IN ACTION")
    # Grup simetri segitiga sama sisi (D3 ≅ S3)
    print("Grup simetri segitiga (D3) memiliki 6 elemen:")
    print("Rotasi: 0°, 120°, 240°")
    print("Refleksi: 3 sumbu simetri")

if __name__ == "__main__":
    demonstrate_crypto()

Aljabar Homologi dan Topologi Aljabar (Advanced)

Complexes dan Homology:

Complex Rantai: $\cdots \to C_{n+1} \xrightarrow{\partial_{n+1}} C_n \xrightarrow{\partial_n} C_{n-1} \to \cdots$ dengan $\partial_n \circ \partial_{n+1} = 0$

Grup Homologi: $H_n = \text{Ker}(\partial_n)/\text{Im}(\partial_{n+1})$

Aplikasi: Mengklasifikasikan ruang topologi, menghitung jumlah “lubang” dimensi-n.

K-Theory:

Grup K: Untuk gelanggang $R$, $K_0(R)$ adalah grup Grothendieck dari modul proyektif hingga.

Aplikasi: Teori indeks Atiyah-Singer, klasifikasi ruang vektor bundel.

Roadmap Pembelajaran 6 Bulan

Bulan 1-2: Fondasi Grup

  • Minggu 1-2: Definisi grup, contoh, subgrup
  • Minggu 3-4: Koset, teorema Lagrange, grup faktor
  • Minggu 5-6: Homomorfisme, isomorfisme, teorema isomorfisme
  • Minggu 7-8: Grup permutasi, grup dihedral, produk langsung

Bulan 3-4: Gelanggang dan Modul

  • Minggu 1-2: Definisi gelanggang, contoh, homomorfisme
  • Minggu 3-4: Ideal, gelanggang faktor, domain integral
  • Minggu 5-6: Gelanggang polinomial, gelanggang Euklidean
  • Minggu 7-8: Modul, modul bebas, rank

Bulan 5-6: Lapangan dan Aplikasi

  • Minggu 1-2: Definisi lapangan, ekstensi lapangan
  • Minggu 3-4: Lapangan hingga, teori Galois dasar
  • Minggu 5-6: Aplikasi kriptografi (RSA, ECC)
  • Minggu 7-8: Aplikasi teori coding, proyek akhir

Sumber Belajar Rekomendasi

Teksbook Standar:

  1. Pemula: A Book of Abstract Algebra – Charles Pinter
  2. Menengah: Algebra – Michael Artin
  3. Lanjutan: Abstract Algebra – David Dummit & Richard Foote

Online Resources:

  1. MIT OpenCourseWare: 18.701 Algebra I
  2. Harvard Extension: Abstract Algebra (Benedict Gross)
  3. Visual Group Theory – Nathan Carter (buku dengan visualisasi luar biasa)

Software dan Tools:

  1. SageMath: Untuk komputasi aljabar abstrak
  2. GAP: Group, Algorithms, Programming
  3. Magma: Sistem aljabar komputasional

Kesimpulan: Aljabar Abstrak sebagai Fondasi Sains Modern

Aljabar abstrak bukan hanya matematika murni, tetapi bahasa universal untuk memahami struktur dalam:

  1. Kriptografi: Mengamankan komunikasi digital
  2. Fisika Kuantum: Menggambarkan simetri partikel elementer
  3. Ilmu Komputer: Teori automata, kompleksitas komputasional
  4. Kimia: Simetri molekul, kristalografi
  5. Biologi: Struktur protein, analisis filogenetik

Kata Penutup dari Para Matematikawan:

“The study of algebra is not only the study of x’s and y’s; it is the study of the structure of thought itself.” – Israel Gelfand

Pertanyaan Reflektif untuk Anda:

  1. Struktur aljabar apa yang paling menarik bagi Anda?
  2. Apakah Anda melihat pola aljabar dalam bidang studi/pekerjaan Anda?
  3. Bagaimana aljabar abstrak dapat membantu memecahkan masalah dunia nyata?

Saya siap memandu Anda lebih dalam ke topik tertentu atau membantu Anda memulai proyek implementasi praktis!

Leave a Reply

Your email address will not be published. Required fields are marked *