Himpunan dan Notasi

Gabungan, irisan, subset, dan pembacaan simbol himpunan.

Daftar isi

Himpunan memberikan cara baku untuk menyatakan kumpulan objek beserta hubungan antar kumpulan tersebut, mulai dari keanggotaan, gabungan, irisan, hingga subset. Topik ini membahas pembacaan simbol-simbol notasi himpunan, makna setiap operasinya, serta pemetaannya ke tipe set pada Python dan fungsi himpunan pada NumPy. Setelah topik ini dipahami, notasi seperti A∪BA \cup B, A∩BA \cap B, dan A⊆BA \subseteq B dapat dibaca dan diterjemahkan ke kode tanpa menebak maknanya.

Himpunan dan keanggotaan#

Himpunan adalah kumpulan objek yang keanggotaannya terdefinisi dengan jelas, dan objek penyusunnya disebut anggota (element). Suatu himpunan ditulis dengan kurung kurawal, misalnya A={2,4,6,8}A = \{2, 4, 6, 8\}. Urutan penulisan tidak berpengaruh dan anggota tidak boleh ganda, sehingga {2,1,1}\{2, 1, 1\} dan {1,2}\{1, 2\} adalah himpunan yang sama. Simbol ∈\in menyatakan keanggotaan, dan tanda garis miring di atasnya membalik maknanya.

2∈A5∉A 2 \in A \qquad 5 \notin A

Ada dua cara menuliskan himpunan. Cara pertama adalah enumerasi, yaitu menyebut seluruh anggotanya seperti pada contoh AA di atas. Cara kedua adalah notasi pembangun himpunan, yang menyifatkan anggotanya tanpa menyebut satu per satu.

A={x∣x genap, 0<x<10} A = \{x \mid x \text{ genap},\ 0 < x < 10\}

Tanda garis tegak pada notasi tersebut dibaca “sedemikian sehingga”. Kalimat lengkapnya adalah himpunan semua xx yang genap dan berada di antara 0 dan 10. Kedua cara menghasilkan himpunan yang sama pada contoh ini. Himpunan tanpa anggota memiliki notasi sendiri, yaitu ∅\emptyset yang dibaca himpunan kosong, dan notasi ini penting pada pembahasan subset.

Gabungan, irisan, dan komplemen#

Operasi himpunan menyusun himpunan baru dari himpunan yang sudah ada. Diagram Venn berikut memperlihatkan dua himpunan AA dan BB di dalam semesta SS, dan setiap daerah pada diagramnya berpadanan dengan satu operasi.

Semesta SABA ∩ BA ∪ B = seluruh daerah berwarnakomplemen A ∪ B
Diagram Venn dua himpunan beserta gabungan, irisan, dan komplemennya

Gabungan A∪BA \cup B mencakup seluruh daerah berwarna, sedangkan irisan A∩BA \cap B hanya daerah tumpang tindih di tengah. Komplemen AcA^c adalah daerah putih di luar AA, yang maknanya selalu bergantung pada semesta yang dipilih. Selisih A−BA - B melengkapi ketiganya dengan mengambil anggota AA yang tidak berada di BB. Definisi formalnya dituliskan sebagai berikut.

A∪B={x∣x∈A atau x∈B}A∩B={x∣x∈A dan x∈B} A \cup B = \{x \mid x \in A \text{ atau } x \in B\} \qquad A \cap B = \{x \mid x \in A \text{ dan } x \in B\}

Kata “atau” pada gabungan bersifat inklusif, sehingga anggota yang berada di kedua himpunan tetap terhitung satu kali. Sifat ini sejalan dengan larangan anggota ganda pada himpunan, dan konsistensi inilah yang membuat notasi himpunan dapat dipercaya ketika dipindahkan ke kode.

Subset dan banyaknya anggota#

Himpunan AA disebut subset dari BB, ditulis A⊆BA \subseteq B, apabila setiap anggota AA juga merupakan anggota BB. Apabila BB masih memiliki anggota tambahan di luar AA, hubungan tersebut disebut subset sungguhan dan ditulis A⊂BA \subset B. Contohnya {1,2}⊂{1,2,3}\{1, 2\} \subset \{1, 2, 3\} karena ada anggota tambahan, sedangkan {1,2,3}⊆{1,2,3}\{1, 2, 3\} \subseteq \{1, 2, 3\} tetap benar sebagai subset biasa. Setiap himpunan menjadi subset dari dirinya sendiri, dan ∅\emptyset menjadi subset dari himpunan apa pun, sehingga pemeriksaan subset selalu perlu menggunakan relasi ini dengan cermat.

Banyaknya anggota suatu himpunan disebut kardinalitas dan ditulis ∣A∣|A|. Kardinalitas ikut menentukan banyaknya subset yang mungkin, karena himpunan dengan nn anggota memiliki 2n2^n subset. Himpunan {a,b}\{a, b\} contohnya memiliki empat subset, yaitu ∅\emptyset, {a}\{a\}, {b}\{b\}, dan {a,b}\{a, b\}. Angka 2n2^n ini muncul berulang kali pada ilmu komputer, antara lain pada banyaknya kombinasi fitur dan banyaknya keadaan bit. Perbedaan keanggotaan dan subset juga perlu dijaga, karena 1∈{1,2}1 \in \{1, 2\} menyatakan anggota, sedangkan {1}⊆{1,2}\{1\} \subseteq \{1, 2\} menyatakan himpunan di dalam himpunan.

Operasi himpunan dalam Python#

Tipe set pada Python mewarisi notasi himpunan nyaris apa adanya, dengan operator ∣| untuk gabungan, &\& untuk irisan, - untuk selisih, dan <= untuk subset. Literal himpunan ditulis dengan kurung kurawal, sedangkan himpunan kosong harus dibuat dengan set() karena {} pada Python menciptakan dictionary. Daftar biasa juga dapat diubah menjadi himpunan dengan set(daftar), dan duplikatnya hilang otomatis pada proses tersebut. Program berikut memeriksa dua himpunan data pembacaan sensor, dan setiap barisnya memetakan satu operasi di atas.

python operasi-himpunan.py
"""Operasi gabungan, irisan, dan subset pada tipe set."""
sensor_a = {"jakarta", "bandung", "surabaya"}
sensor_b = {"bandung", "medan", "jakarta"}

print("gabungan :", sorted(sensor_a | sensor_b))
print("irisan   :", sorted(sensor_a & sensor_b))
print("selisih  :", sorted(sensor_a - sensor_b))
print("subset   :", {"bandung"} <= sensor_a)
print("kartu    :", len(sensor_a), len(sensor_a | sensor_b))
text Keluaran
gabungan : ['bandung', 'jakarta', 'medan', 'surabaya']
irisan   : ['bandung', 'jakarta']
selisih  : ['surabaya']
subset   : True
kartu    : 3 4

Fungsi sorted pada program tersebut sengaja digunakan sebelum pencetakan. Urutan cetak set tidak dijamin oleh Python, sehingga keluaran mentahnya dapat berubah antar eksekusi, sedangkan sorted menghasilkan daftar terurut yang selalu sama. Fungsi len mengukur kardinalitas, dan baris terakhir membandingkan kardinalitas masing-masing himpunan dengan kardinalitas gabungannya. Angka 4 pada keluaran juga menegaskan bahwa gabungan dua himpunan beranggota 3 tidak berjumlah 6, karena dua anggota berada di kedua himpunan.

Di mana hal ini ditemui dalam kode#

Operasi himpunan mendasari banyak kebutuhan sehari-hari. Penyaringan dokumen berdasarkan tag adalah irisan, penggabungan hak akses beberapa peran adalah gabungan, dan penghapusan duplikat dari daftar adalah konversi ke set. Penyusunan jadwal piket dari dua daftar peserta contohnya adalah gabungan, sedangkan pencarian dokumen yang memuat dua tag sekaligus adalah irisan. Pada machine learning, kosakata (vocabulary) hasil tokenisasi disimpan sebagai himpunan untuk pemeriksaan keanggotaan yang cepat, karena pemeriksaan pada set berjalan dalam waktu tetap secara rata-rata. NumPy menyediakan padanan operasi tersebut untuk array bilangan, sebagaimana ditunjukkan program berikut.

python Contoh: operasi himpunan pada array NumPy
import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([3, 4, 5, 6])
print(np.union1d(a, b))
print(np.intersect1d(a, b))
print(np.setdiff1d(a, b))
print(np.isin([2, 7], a))
text Keluaran
[1 2 3 4 5 6]
[3 4]
[1 2]
[ True False]

Fungsi union1d, intersect1d, dan setdiff1d menghitung gabungan, irisan, serta selisih dengan hasil yang selalu terurut, sedangkan isin menjawab pertanyaan keanggotaan untuk setiap elemen masukannya. Pilihan antara set dan fungsi NumPy bergantung pada bentuk data, tetapi makna operasinya tetap sama persis dengan definisi pada bagian sebelumnya.

Ringkasan#

  • Himpunan menyimpan anggota yang unik dan tidak berurutan, dengan notasi enumerasi maupun notasi pembangun himpunan yang dibaca “sedemikian sehingga”.
  • Gabungan A∪BA \cup B mengambil anggota dari salah satu himpunan, irisan A∩BA \cap B mengambil anggota yang ada di keduanya, sedangkan komplemen dan selisih mengambil sisa daerah terhadap semestanya.
  • Relasi A⊆BA \subseteq B berarti seluruh anggota AA ada di BB, dan himpunan dengan nn anggota memiliki 2n2^n subset.
  • Python menerjemahkan operasi tersebut ke operator ∣|, &\&, -, <=, dan len, sedangkan NumPy menyediakan union1d, intersect1d, setdiff1d, serta isin untuk array.

Referensi#