Pernahkah kalian menemukan kalimat matematika yang berisi operasi dengan prioritas/urutan pengerjaan yang sama? Sebagai contoh, 7 - 3 - 2
akan menghasilkan 2
(bukan 6
) karena yang terletak di sebelah kiri dikerjakan terlebih dahulu walaupun kedua pengurangan memiliki prioritas yang sama. Kira-kira mengapa, ya?
Apa itu prioritas? Urutan pengerjaan itu apa?
Dalam matematika, urutan pengerjaan adalah kumpulan aturan/konvensi urutan operasi yang dilakukan saat menghitung sebuah kalimat matematika. Prioritas atau urutan pengerjaan suatu operasi juga disebut dengan preseden (precedence). Prioritas yang lebih tinggi berarti akan dikerjakan terlebih dahulu. Begitu juga sebaliknya.
Keberadaan urutan pengerjaan ini digunakan untuk mengurangi ambiguitas, tetapi tetap hemat notasi. Kalau ingin mendahulukan salah satu operasi, kita bisa menggunakan tanda kurung, (
dan )
, untuk membungkus operasi yang perlu didahulukan. Sebagai contoh, 7 × (3 - 2)
akan menghasilkan 7
(bukan 19
). Kalau ada lebih dari satu tingkat kurung, kita bisa menggunakan jenis kurung yang berbeda untuk menghindari kebingungan. Misalnya, [5 × (4 + 2)] - 7
.
Urutan pengerjaan konvensional yang diadopsi dalam berbagai bidang, termasuk di luar matematika, adalah sebagai berikut:
- tanda kurung,
- perpangkatan dan akar,
- perkalian dan pembagian, lalu
- penjumlahan dan pengurangan.
Kalau kita perhatikan, terdapat beberapa operasi yang menempati prioritas yang sama. Bagaimana menentukan yang didahulukan kalau berturutan? Ini yang disebut dengan sifat asosiatif atau keasosiatifan (associativity).
Apa itu asosiatif?
Dalam matematika, sifat asosiatif adalah sifat suatu operator biner (operasi terhadap dua bilangan) yang tidak mengubah hasil ketika tanda kurungnya diubah. Sebagai contoh, (2 + 3) + 5
sama dengan 2 + (3 + 5)
sama dengan 10
sehingga operasi penjumlahan bersifat asosiatif.
Yang perlu diperhatikan adalah asosiatif tidak mengubah urutan penulisan operator. Asosiatif berbeda dengan komutatif. Contoh yang umum memang memiliki kedua sifat tersebut sehingga tak jarang disalahpahami oleh kebanyakan orang.
Sifat komutatif adalah sifat operator biner yang tidak mengubah hasil ketika urutan penulisan kedua bilangan yang dikenai operasinya ditukar. Sebagai contoh, 2 + 3
sama dengan 3 + 2
sama dengan 5
sehingga operasi penjumlahan bersifat komutatif.
Memang ada, ya, operasi yang bersifat komutatif, tetapi tidak bersifat asosiatif?
Operasi yang bersifat komutatif, tetapi tidak bersifat asosiatif, memang ada, tetapi memang jarang muncul. Sebagai contoh, operasi batu-gunting-kertas (atau gajah-manusia-semut) memiliki sifat komutatif, tetapi tidak bersifat asosiatif.
- batu vs. gunting = batu
- gunting vs. batu = batu
... tetapi ....
- (batu vs. gunting) vs. kertas = kertas
- batu vs. (gunting vs. kertas) = batu
Jadi, operasi batu-gunting-kertas memiliki sifat komutatif, tetapi tidak bersifat asosiatif.[1][2] Ini juga alasan permainan batu-gunting-kertas hanya boleh dimainkan oleh tepat dua orang, tidak boleh kurang ataupun lebih.[3]
Bagaimana dengan operasi non-asosiatif?
Operasi yang tidak memiliki sifat asosiatif memiliki urutan pengerjaan masing-masing. Biasanya, hal ini diatur dengan menentukan suatu operasi sebagai asosiatif kiri atau kanan. Asosiatif kiri adalah mengerjakan dari kiri ke kanan. Asosiatif kanan sebaliknya.
- Asosiatif kiri:
1 ▫ 2 ▫ 3 ▫ 4 = ((1 ▫ 2) ▫ 3) ▫ 4
- Asosiatif kanan:
1 ▪ 2 ▪ 3 ▪ 4 = 1 ▪ (2 ▪ (3 ▪ 4))
Contoh asosiatif kiri adalah pengurangan dan pembagian:
1 - 2 - 3 - 4 = ((1 - 2) - 3) - 4
1 ÷ 2 ÷ 3 ÷ 4 = ((1 ÷ 2) ÷ 3) ÷ 4
Contoh asosiatif kanan adalah perpangkatan:
234 = 2(34)
Namun, ada juga yang wajib menggunakan tanda kurung karena tidak ada konvensinya, misalnya perkalian silang vektor (cross product):
A̅ × (B̅ × C̅) ≠ (A̅ × B̅) × C̅
Penutup
Dengan mengetahui urutan operasi/preseden dan sifat asosiatif tiap operasi, kita bisa mulai untuk mengubah kalimat matematika dari notasi sisipan ke notasi akhiran untuk kalimat yang lebih kompleks. Selanjutnya, kita coba bahas algoritma shunting yard/depo gerbong, yuk! Semoga bermanfaat!
Catatan akhir
Aku menerapkan konsep dalam tulisanku kali ini untuk menyelesaikan masalah pada program pembuat soal di web TTL. Aku juga menyiarkannya di YouTube, loh!