Sirkuit elektronik dalam kopmuter dan devais elektronik lainnya mempunyai input-input, yang masing-masing 0 atau 1, dan menghasilkan output yang juga 0 atau 1. Pada tahun 1938, Claude Shannon menunjukkan bagaimanan aturan-aturan dasar logika, yang pertama kali dikemukakan oleh George Boole di 1854 pada bukunya The Laws of Thoughts, dapat digunakan untuk mendesain sirkuit elektronik. Aturan-aturan ini membentuk dasar dari aljabar Boolean.
Aljabar Boolean adalah aljabar yang digunakan untuk bekerja dengan variabel biner dan operasi logika. Aljabar Boolean didefinisikan sebagai struktur matematika yang terdiri dari himpunan \(B = \{0, 1\}\), dua operator biner \(+\) dan \(\cdot\), dan satu operator uner \('\), yang memenuhi postulat-postulat Huntington berikut untuk \(a, b, c \in B\) :
Operasi-operasi dengan operator-operator \(+\), \(\cdot\), dan \('\) disebut sebagai penjumlahan, perkalian, dan komplemen, sesuai urutannya. Komplemen dari sebuah elemen didefinisikan dengan:
\(\qquad 0' = 1\) dan \(1' = 0\).
Penjumlahan Boolean mempunyai aturan-aturan berikut:
\(\qquad 1 + 1 = 1, \qquad 1 + 0 = 1, \qquad 0 + 1 = 1, \qquad 0 + 0 = 0\).
Perkalian Boolean mempunyai aturan-aturan berikut:
\(\qquad 1 \cdot 1 = 1, \qquad 1 \cdot 0 = 0, \qquad 0 \cdot 1 = 0, \qquad 0 \cdot 0 = 0\).
Tabel 5.1 di bawah memperlihatkan aturan-aturan operasi-operasi pada aljabar Boolean.
Tabel 5.1. (a) Operasi Perkalian, (b) Operasi Penjumlahan, (c) Operasi Komplemen.
Contoh 5.1.1
Cari nilai dari \(1 \cdot 0 + (0 + 1)'\).
Solusi:
Menggunakan definisi dari komplementasi, penjumlahan Boolean, dan perkalian Boolean didapatkan
\(\qquad \begin{align} 1 \cdot 0 + (0 + 1)' & = 0 + 1' \\ & = 0 + 0\\ & = 0. \end{align}\)
Ekspresi Boolean adalah ekspresi yang dibentuk dari variabel-variabel Boolean dan operator-operator Boolean. Misalkan \(x_1, x_2, ..., x_n\) adalah variabel-variabel Boolean, yaitu variabel yang hanya dapat bernilai 0 atau 1. Ekspresi Boolean dalam variabel-variabel \(x_1, x_2, ..., x_n\) didefinisikan secara rekursif sebagai:
Contoh 5.1.2
Berikut adalah contoh-contoh ekspresi Boolean dalam \(x, y, z\) :
Jika tidak menimbulkan kebingungan, simbol \(\cdot\) dapat tidak ditulis dalam ekspresi Boolean. Sebagai contoh ekspresi Boolean \(x \cdot y\) dapat ditulis dengan \(xy\).
Ekspresi Boolean dievaluasi dengan mensubtitusi variabel-variabel dengan elemen-elemen dalam \(\{0, 1\}\).
Contoh 5.1.3
Evaluasi ekspresi Boolean \(a' \cdot (b + c)\) jika \(a = 0\), \(b =1\) dan \(c = 0\).
Solusi:
\(\quad 0' \cdot (1 + 0) = 1 \cdot 1 = 1\)
Terdapat banyak identitas-identitas dalam aljabar Boolean. Tabel 5.x di bawah mendaftar identitas-identitas yang sering digunakan.
Tabel 5.2. Identitas-identitas Aljabar Boolean.
Contoh 5.1.4
Buktikan bahwa:
\(\quad\) \(a + a'b = a + b\)
Solusi:
\begin{array}{r l l} a + a'b &= (a + ab) + a'b & \qquad \small \text{(dengan hukum penyerapan)}\\ & = a + (ab + a'b) & \qquad \small \text{(dengan hukum asosiatif)} \\ & = a + (a + a')b & \qquad \small \text{(dengan hukum distributif)} \\ & = a + 1 \cdot b & \qquad \small \text{(dengan hukum komplemen)} \\ & = a + b & \qquad \small \text{(dengan hukum identitas)} \\ \end{array}
Semua identitas-identitas pada Tabel 5.2 terdiri dari pasangan ekspresi kecuali pada hukum komplemen ganda, sifat unit, dan sifat nol. Keterkaitan antara dua identitas pada setiap pasangan adalah karena prinsip dualitas pada aljabar Boolean. Dual dari ekspresi Boolean didapatkan dengan menukar penjumlahan Boolean dengan perkalian Boolean dan menukar 0 dengan 1.
Contoh 5.1.5
Cari dual dari \(x(y + 0)\) dan \(x'. 1 + (y' + z)\).
Solusi:
Saling menukar tanda .
dan +
dan saling menukar 0
dan 1
dalam ekspresi menghasilkan dualnya. Maka,
Fungsi Boolean adalah fungsi yang dinyatakan dalam ekspresi Boolean.
Contoh 5.2.1
Misalkan \(x\) dan \(y\) adalah variabel Boolean. Fungsi-fungsi berikut adalah fungsi-fungsi Boolean:
\(\quad\) 1. \(f(x) = x\)
\(\quad\) 2. \(f(x, y) = xy'\)
\(\quad\) 2. \(f(x, y) = x'y + xy' + y'\)
\(\quad\) 3. \(f(x, y) = x'y'\)
\(\quad\) 4. \(f(x, y) = (x + y)'\)
\(\quad\) 5. \(f(x, y, z) = xyz'\)
Secara formal fungsi Boolean didefinisikan sebagai berikut.
DEFINISI 5.1
Misal \(B = \{0, 1\}\). Dan misalkan \(B^n = \{(x_1, x_2, ..., x_n) \ | \ x_i \in B \text{ untuk } 1 \leq i \leq n\}\) adalah himpunan tupel-tupel \(n\) elemen dan setiap elemennya adalah anggota himpunan \(B\). Fungsi Boolean derajat \(n\) adalah fungsi dengan domain \(B^n\) dan kodomain \(B\) yaitu \(f: B^n \to B\).
Untuk sembarang nilai-nilai variabel, fungsi Boolean hanya dapat bernilai 0 atau 1. Nilai fungsi Boolean dari suatu nilai-nilai variabel didapatkan dengan mensubtitusi variabel-variabel dengan nilai-nilai yang diinginkan dan mengevaluasi ekspresi dari fungsi Boolean tersebut. Sebagai contoh, jika \(x = 0\) dan \(y = 1\) maka nilai fungsi \(f(x, y) = xy'\) adalah \(f(0, 1) = 0 \cdot 1' = 0\).
Contoh 5.2.2
Cari nilai fungsi Boolean
\(\quad f(x, y, z) = xyz + x'y + y'z\)
jika \(x = 1\), \(y = 0\), dan \(z = 1\).
Solusi:
\(\quad f(1, 0, 1) = 1 \cdot 0 \cdot 1 + 1' \cdot 0 + 0' \cdot 1 = 0 + 0 + 1 = 1\)
Nilai-nilai dari fungsi Boolean untuk semua kombinasi nilai-nilai variabelnya dapat ditunjukkan dalam sebuah tabel.
Contoh 5.2.3
Fungsi Boolean \(f(x, y) = xy'\) mempunyai nilai-nilai \(f(0, 0) = 0\), \(f(0, 1) = 0\), \(f(1, 0) = 1\), dan \(f(1, 1) = 0\). Nilai-nilai ini ditampilkan dalam tabel di bawah.
\(x\) | \(y\) | \(f(x, y)\) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
Contoh 5.2.4
Cari nilai-nilai dari fungsi Boolean \(f(x, y, z) = xy + z'\).
Solusi:
Nilai-nilai fungsi ini ditampilkan pada tabel berikut.
\(x\) | \(y\) | \(z\) | \(xy\) | \(z'\) | \(f(x, y, z) = xy + z'\) |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 1 |
Misalkan \(f\) adalah sebuah fungsi Boolean, komplemen dari \(f\), dinotasikan dengan \(f'\), dapat dicari dengan menggunakan hukum de Morgan.
Contoh 5.2.5
Cari komplemen fungsi \(f(x, y, z) = x(y'z' + yz)\)
Solusi:
\[ \begin{aligned} f'(x, y, z) &= (x(y'z'+yz))' \\ &= x'+(y'z'+yz)' \\ &= x'+(y'z')'(yz)' \\ &= x' + (y+z)(y'+z'). \\ \end{aligned} \]
\(x\) | \(y\) | \(f(x, y)\) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Diberikan nilai-nilai dari sebuah fungsi Boolean, kita dapat selalu mencari ekspresi Boolean bentuk kanonik (bentuk baku) yang mewakili fungsi tersebut. Terdapat dua bentuk kanonik dari suatu fungsi Boolean:
Contoh 5.2.6
Fungsi Boolean dengan nilai-nilai seperti pada tabel di bawah
\(x\) | \(y\) | \(f(x, y)\) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
mempunyai dua bentuk kanonik:
Sebelum kita membahas bagaimana cara mendapatkan bentuk kanonik penjumlahan minterm dan bentuk kanonik perkalian maxterm kita akan membahas terlebih dahulu definisi dari minterm dan maxterm.
DEFINISI 5.2
Minterm dari variabel Boolean \(x_1, x_2, ..., x_n\) adalah perkalian Boolean \(y_1y_2...y_n\) dimana \(y_i = x_i\) atau \(y_i = x_i'\) untuk \(1 \leq i \leq n\).
Maxterm dari variabel Boolean \(x_1, x_2, ..., x_n\) adalah penjumlahan Boolean \(y_1 + y_2 + ... + y_n\) dimana \(y_i = x_i\) atau \(y_i = x_i'\) untuk \(1 \leq i \leq n\).
Dengan kata lain, minterm dari \(n\) variabel adalah perkalian \(n\) variabel yang setiap variabelnya muncul tepat satu dalam bentuk dengan komplemen atau tanpa komplemen. Sedangkan maxterm dari \(n\) variabel adalah penjumlahan \(n\) variabel yang setiap variabelnya muncul tepat satu dalam bentuk dengan komplemen atau tanpa komplemen.
Contoh 5.2.7
Contoh 5.2.8
Misalkan suatu fungsi Boolean tiga variabel \(x\), \(y\), dan \(z\). Maka,
Contoh 5.2.9
Fungsi Boolean \(f(x, y, z) = x'y'z + xy'z' + xyz\) adalah fungsi bentuk kanonik penjumlahan minterm dan mempunyai tiga buah minterm yaitu \(x'y'z\), \(xy'z'\), dan \(xyz\).
Minterm-minterm didapatkan dengan metode berikut: dalam kombinasi nilai variabel, setiap variabel yang bernilai 0 dinyatakan dalam bentuk komplemennya, sedangkan variabel yang bernilai 1 dinyatakan dalam bentuk variabel itu sendiri (tanpa komplemen).
Sedangkan maxterm-maxterm didapatkan dengan metode berikut: dalam kombinasi nilai variabel, setiap variabel yang bernilai 0 dinyatakan dalam bentuk tanpa komplemennya (bentuk variabel itu sendiri), sedangkan variabel yang bernilai 1 dinyatakan dalam bentuk komplemennya.
Tabel 5.3 berikut menampilkan minterm dan maxterm untuk dua variabel Boolean \(x\) dan \(y\).
Tabel 5.3. Minterm dan Maxterm dari Kombinasi Nilai Dua Variabel.
Tabel 5.4 berikut menampilkan minterm dan maxterm untuk tiga variabel Boolean \(x\), \(y\), dan \(z\).
Tabel 5.4. Minterm dan Maxterm dari Kombinasi Nilai Tiga Variabel.
Diberikan nilai-nilai dari suatu fungsi Boolean \(f(x_1, x_2, ..., x_n)\), kita dapat mencari bentuk kanonik dari fungsi tersebut dengan metode berikut:
Contoh 5.2.10
Tinjau fungsi Boolean \(f(x,y,z)\) yang dinyatakan oleh tabel di bawah. Nyatakan fungsi tersebut dalam bentuk kanonik penjumlahan minterm dan perkalian dari maxterm.
Solusi:
Bentuk Penjumlahan Minterm
Perhatikan tabel berikut.
Pada tabel dapat dilihat fungsi \(f(x, y, z)\) bernilai 1 ketika \(f(0, 0, 1)\), \(f(1, 0, 0)\), dan \(f(1, 1, 1)\). Dari tabel minterm kombinasi nilai variabel \((0, 0, 1)\) mempunyai bentuk minterm \(x'y'z\), \((1, 0, 0)\) mempunyai bentuk minterm \(xy'z'\), dan \((1, 1, 1)\) mempunyai bentuk minterm \(xyz\). Sehingga, fungsi Boolean ini dalam bentuk kanonik penjumlahan minterm dinyatakan dengan
\(\qquad f(x, y, z) = x'y'z + xy'z' + xyz\)
Bentuk Perkalian Maxterm
Perhatikan tabel berikut.
Pada tabel dapat dilihat fungsi \(f(x, y, z)\) bernilai 0 ketika \(f(0, 0, 0)\), \(f(0, 1, 0)\), \(f(0, 1, 1)\), \(f(1, 0, 1)\), dan \(f(1, 1, 0)\). Dari tabel maxterm kombinasi nilai variabel \((0, 0, 0)\) mempunyai bentuk maxterm \(x + y + z\), \((0, 1, 0)\) mempunyai bentuk maxterm \(x + y' + z\), \((0, 1, 1)\) mempunyai bentuk maxterm \(x + y' + z'\), \((1, 0, 1)\) mempunyai bentuk maxterm \(x' + y + z'\), dan \((1, 1, 0)\) mempunyai bentuk maxterm \(x' + y' + z\). Sehingga, fungsi Boolean ini dalam bentuk kanonik perkalian maxterm dinyatakan dengan
\(\qquad f(x, y, z) = (x + y + z)(x + y' + z)(x + y' + z')(x' + y + z')(x' + y' + z)\)
Fungsi Boolean yang tidak dalam bentuk kanonik dapat dicari bentuk kanonik penjumlahan minterm-nya dengan pertama mengekspansi ekspresinya ke dalam penjumlahan dari suku-suku bentuk perkalian. Lalu, setiap suku diperiksa untuk melihat apakah suku itu sudah dalam bentuk minterm. Jika belum, terapkan hukum identitas dan sifat unit untuk variabel yang tidak termasuk dalam perkalian pada suku tersebut. Contoh berikut menjelaskan prosedur ini.
Contoh 5.2.11
Nyatakan fungsi Boolean \(f(x, y, z) = x + y'z\) dalam bentuk kanonik penjumlahan minterm.
Solusi:
Suku pertama dari fungsi ini \(x\) tidak terdapat dua variabel \(y\) dan \(z\), maka dengan hukum identitas dan sifat unit
\(\qquad x = x \cdot 1 = x(y + y') = xy + xy'\)
Ekspansi suku pertama ini masih belum terdapat variabel \(z\), maka dengan menerapkan hukum identitas dan sifat unit kembali
\(\qquad xy + xy' = xy(z + z') + xy'(z + z') = xyz + xyz' + xy'z + xy'z'\)
Suku kedua tidak terdapat variabel \(x\), maka dengan hukum identitas dan sifat unit
\(\qquad y'z = (x + x')y'z = xy'z + x'y'z\)
Gabung semua suku hasil ekspansi, kita dapatkan
\begin{array}{r l l} f(x, y, z) &= x + y'z & \\ & = xyz + xyz' + xy'z + xy'z' + xy'z + x'y'z & \\ \end{array}
Karena terdapat dua \(xy'z\), maka dengan hukum idempoten kita dapat menghilangkan salah satunya, sehingga ktia dapatkan
\[ f(x, y, z) = xyz + xyz' + xy'z + xy'z' + x'y'z \]
Contoh 5.2.12
Cari bentuk kanonik penjumlahan minterm dari fungsi \(f(x, y, z) = (x + y)z'\)
Solusi:
\begin{array}{r l l}
f(x, y, z) &= (x + y)z' & \\
& = xz' + yz' & \qquad \small \text{(dengan hukum distributif)} \\
& = x1z' + 1yz' & \qquad \small \text{(dengan hukum identitas)} \\
& = x(y + y')z' + (x + x')yz' & \qquad \small \text{(dengan sifat unit)} \\
& = xyz' + xy'z' + xyz' + x'yz' & \qquad \small \text{(dengan hukum distributif)} \\
& = xyz' + xy'z' + x'yz' & \qquad \small \text{(dengan hukum idempoten)} \\
\end{array}
Fungsi Boolean bukan dalam bentuk kanonik dapat juga dicari bentuk kanonik perkalian maxterm-nya dengan pertama mengubahnya ke bentuk perkalian suku-suku bentuk penjumlahan dengan menggunakan hukum distributif. Lalu, variabel-variabel yang tidak terdapat dalam suku-suku bentuk penjumlahan ditambahkan menggunakan sifat nol. Prosedur ini dijelaskan dalam contoh berikut.
Contoh 5.2.13
Cari bentuk kanonik perkalian maxterm dari fungsi Boolean \(f(x, y, z) = xy + x'z\).
Solusi:
Pertama, ubah fungsi menjadi perkalian dari suku-suku bentuk penjumlahan menggunakan hukum distributif:
\[ \begin{array}{r l l} f(x, y, z) &= xy + x'z & \\ & = (xy + x')(xy + z) & \qquad \small \text{(hukum distributif)} \\ & = (x + x')(y + x')(x + z)(y + z) & \qquad \small \text{(hukum distributif)} \\ & = (y + x')(x + z)(y + z)& \qquad \small \text{(sifat unit)} \\ \end{array} \]
Setiap suku bentuk jumlah dari bentuk di atas masing-masing kurang satu variabel, maka
Gabungkan semua suku-suku di atas dan menghilangkan salah satu suku yang tampil lebih dari satu kali, maka kita dapatkan,
\[ f(x, y, z) = (x + y + z)(x + y' + z)(x' + y + z)(x' + y + z') \]
Aljabar Boolean digunakan untuk memodelkan sirkuit elektronik dari perangkat-perangkat elektronik. Setiap input dan setiap output dari perangkat elekntronik dapat dianggap sebagai anggota dari himpunan \(\{0, 1\}\). Komputer, dan juga perangkat elektornik lainnya, dibentuk dari sejumlah sirkuit.
Setiap sirkuit dapat didesain menggunakan aturan-aturan aljabar Boolean yang kita pelajari sebelumnya.
Terdapat tiga gerbang logika dasar yaitu gerbang AND, gerbang OR, dan gerbang NOT (inverter). Gambar 5.1 menunjukkan gambar dari ketiga gerbang logika dasar.
Gambar 5.1. Gerbang-gerbang Logika Dasar.
Fungsi Boolean dapat direpresentasikan dalam bentuk rangkaian gerbang logika. Rangkaian gerbang logika dibangun menggunakan kombinasi gerbang NOT, gerbang OR, dan gerbang AND.
Contoh 5.4.1
Nyatakan fungsi Boolean \(f(x, y, z) = xy + x'y\) ke dalam rangkaian gerbang logika.
Solusi:
Terdapat beberapa cara untuk menggambarkan rangkaian gerbang logika.
(1) Cara pertama
(2) Cara kedua
(3) Cara ketiga