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 , , dan 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 . Urutan penulisan tidak berpengaruh dan anggota tidak boleh ganda, sehingga dan adalah himpunan yang sama. Simbol menyatakan keanggotaan, dan tanda garis miring di atasnya membalik maknanya.
Ada dua cara menuliskan himpunan. Cara pertama adalah enumerasi, yaitu menyebut seluruh anggotanya seperti pada contoh di atas. Cara kedua adalah notasi pembangun himpunan, yang menyifatkan anggotanya tanpa menyebut satu per satu.
Tanda garis tegak pada notasi tersebut dibaca “sedemikian sehingga”. Kalimat lengkapnya adalah himpunan semua 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 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 dan di dalam semesta , dan setiap daerah pada diagramnya berpadanan dengan satu operasi.
Gabungan mencakup seluruh daerah berwarna, sedangkan irisan hanya daerah tumpang tindih di tengah. Komplemen adalah daerah putih di luar , yang maknanya selalu bergantung pada semesta yang dipilih. Selisih melengkapi ketiganya dengan mengambil anggota yang tidak berada di . Definisi formalnya dituliskan sebagai berikut.
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 disebut subset dari , ditulis , apabila setiap anggota juga merupakan anggota . Apabila masih memiliki anggota tambahan di luar , hubungan tersebut disebut subset sungguhan dan ditulis . Contohnya karena ada anggota tambahan, sedangkan tetap benar sebagai subset biasa. Setiap himpunan menjadi subset dari dirinya sendiri, dan menjadi subset dari himpunan apa pun, sehingga pemeriksaan subset selalu perlu menggunakan relasi ini dengan cermat.
Banyaknya anggota suatu himpunan disebut kardinalitas dan ditulis . Kardinalitas ikut menentukan banyaknya subset yang mungkin, karena himpunan dengan anggota memiliki subset. Himpunan contohnya memiliki empat subset, yaitu , , , dan . Angka 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 menyatakan anggota, sedangkan 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.
"""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))gabungan : ['bandung', 'jakarta', 'medan', 'surabaya']
irisan : ['bandung', 'jakarta']
selisih : ['surabaya']
subset : True
kartu : 3 4Fungsi 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.
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))[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 mengambil anggota dari salah satu himpunan, irisan mengambil anggota yang ada di keduanya, sedangkan komplemen dan selisih mengambil sisa daerah terhadap semestanya.
- Relasi berarti seluruh anggota ada di , dan himpunan dengan anggota memiliki subset.
- Python menerjemahkan operasi tersebut ke operator , ,
-,<=, danlen, sedangkan NumPy menyediakanunion1d,intersect1d,setdiff1d, sertaisinuntuk array.
Referensi#
- Built-in Types — Python Software Foundation — Dokumentasi tipe set beserta operator gabungan, irisan, dan subset yang digunakan pada topik ini.
- numpy.intersect1d — NumPy Developers — Dokumentasi fungsi irisan array yang menyertai contoh NumPy pada bagian akhir.
- Contemporary Mathematics — OpenStax — Buku teks terbuka yang membahas teori himpunan dasar beserta notasi dan diagram Venn-nya.