Upload
resti-yuliyanti
View
92
Download
6
Embed Size (px)
Citation preview
DIKTAT KULIAH
MMAATTEEMMAATTIIKKAA DDIISSKKRRIITT
Oleh: Amir Hamzah
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT SAINS DAN TEKNOLOGI AKPRIND 2011
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
2
Kata Pengantar
Puji syukur dipanjatkan kehadirat Allah Subhanallah Wa Ta’ala, karena
hanya atas petunjuk dan redhaNya akhirnya diktat ini dapat terselesaikan. Diktat
ringkas ini mungkin masih sangat sedikit dapat membantu dalam penyampaian
materi matematika diskrit kepada mahasiswa. Akan tetapi mengingat terbatasnya
buku yang ada di perpustakaan dan masih sedikitnya buku-buku berbahasa indonesia
tentang matematika diskrit yang sering menjadi kendala bagi para mahasiswa.
Perlu pula disampaikan di sini bahwa buku ini sebatas mengampu materi
Matematika Diskreet, yang disampaikan dalam 3 sks. Uraian-uraian dibuat sesingkat
mungkin dengan beberapa contoh penyelesaian masalah. Tentu saja diperlukan
buku-buku tambahan bagi mahasiswa untuk dapat menguasai materi-materi lebih
mendalam, mengingat pentingnya peran matematika diskrit dalam bidang
Informatika.
Akhirnya mudah-mudahan tulisan singkat ini dapat membantu para
mahasiswa. Kritik dan koreksi kami ucapkan terima kasih.
Yogyakarta, Maret 2011
Penulis
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
3
i
DAFTAR ISI
BAB I . Logika Proposisi ………………………………………………… 1
BAB II. Logika Prdikatif ………………………………………………….. 10
BAB III. Himpunan, Relasi dan Fungsi ……………………………………. 16
BAB IV. Algoritma ………………………………………………………… 26
BAB V. Induksi dan Rekursi ……………………………………………… 32
BAB VI. Pengantar Teori Graf …………………………………………….. 40
BAB VI Algoritma Graf …………………………………………………… 48
BAB VII Tree ……………………………………………………………….. 53
BAB I
LOGIKA PROPOSISI
1.1. Proposisi dan Kalimat terbuka
Perhatikan stetemen-statemen dalam bahasa sehari-hari berikut :
1. Satu hari setelah hari Jumat adalah hari Sabtu
2. Surabaya adalah ibukota Indonesia
3. Hari Ini hari Apa ya?
4. Silahkan keluar ruang !
Perhatikan pula statemen-statemen dalam ekspresi matematika berikut :
1. 2 + 3 = 15
2. (3+5)10 < 100
3. (X + 10 ) >15
4. (X-Y) = Y +20
Jika diperhatikan kalimat-kalimat di atas, baik kalimat sehari-hari maupun
statemen matematika maka ada perbedaan yang dapat ditetapkan, yaitu :
- Kalimat pertama dan kalimat kedua adalah kalimat-kalimat yang dapat
ditetapkan sebagai kalimat yang BENAR atau kalimat yang SALAH.
Dengan kata lain statemen pertama dan kedua adalah statemen-statemen
yang dapat diberi nilai kebenaran.
- Kalimat-kalimat yang ketiga dan keempat adalah kalimat-kalimat yang
tidak dapat ditetapkan sebagai BENAR atau SALAH, atau statemen tersebut
tidak dapat diberi nilai kebenaran.
Definisi 1: Statemen-statemen yang dapat ditetapkan sebagai BENAR atau SALAH,
atau statemen yang dapat diberi NILAI KEBENARAN dinamakan
sebagai PROPOSISI.
Definisi 2 : Jika statemen tidak dapat ditetapkan sebagai BENAR atau SALAH
tetapi dengan cara tertentu dapat diubah menjadi statemen BENAR atau
SALAH maka statemen tersebut dinamakan sebagai KALIMAT
1
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
2
TERBUKA. Kalimat terbuka kadang disebut juga sebagai FUNGSI
PROPOSISI.
Contoh 1.1: Manakah dari statemen-statemen berikut yang merupakan proposisi
dan manakah yang merupakan kalimat terbuka.
1. Indonesia adalah negara miskin
2. Jepang adalah negara miskin juga
3. Negara itu adalah negara miskin
4. (2 + 9 ) =X +12
Jawab :
1. Statemen 1. adalah proposisi, bernilai BENAR
2. Statemen 2 adalah proposisi, bernilai SALAH
3. Statemen 3 adalah kalimat terbuka, bisa benar bisa salah
4. Statemen 4 adalah kalimat terbuka, bisa benar bisa salah
1.2. Pengubahan Kalimat terbuka menjadi proposisi
Kalimat terbuka pada statemen 3 dapat diubah menjadi BENAR atau
SALAH jika variabel Negara digantikan negara tertentu. Demikian juga statemen 4
dapat diubah menjadi benar atau salah dengan mengganti X dengan nilai tertentu.
Dalam pembahasan lain mencari X pada kalimat terbuka dalam suatu
hubungan persamaan atau pertidaksamaan sedemikian sehingga kalimat terbuka
MENJADI PROPOSISI yang BERNILAI BENAR sering dinamakan menyelesaikan
persamaan/pertidaksamaan atau mencari akar persamaan/pertidaksamaan.
Contoh 1.2. : Perhatikan kalimat terbuka berikut :
X2 - 4X =-3 untuk X bilangan real
Ubahlah agar menjadi proposisi. Ubahlah pula menjadi proposisi
YANG BENAR.
Jawab : Untuk "sekedar" merubah menjadi proposisi maka sembarang nilai X dapat
diberikan, sehingga misalnya :
X2 - 4X =-3 untuk X bilangan real dan X adalah 5 (sembarang)
Kalimat tersebut adalah proposisi (meskipun nilainya salah).
Untuk merubah menjadi proposisi yang benar, kalimatnya :
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
3
X2 - 4X =-3 untuk X bilangan real dan X bernilai 1 ATAU 3.
1.2. Operasi pada proposisi
Satu atau lebih proposisi dapat dioperasikan membentuk proposisi baru
dengan beberapa operasi logika.
a. NEGASI ( ¬ )
Negasi dari suatu proposisi p adalah proposisi yang memiliki nilai kebenaran
KEBALIKAN (ingkaran) dari nilai kebenaran proposisi p. Negasi dari p
dinotasikan sebagai : ¬ p
Negasi dari suatu proposisi memiliki kebenaran seperti tersaji dari tabel
kebenaran sebagai berikut :
p ¬ p
T
F
F
T
T = True
F = False
Contoh 1.3. : carilah negasi dari proposisi-proposisi berikut :
1. Jakarta ibukata indonesia
2. 2+2 =5
Jawab :
1. Tidaklah benar Jakarta ibukota indonesia
2. Tidak benar bahwa 2+2=5
b. KONJUNGSI (∧) (AND)
Jika dimiliki proposisi p dan q maka konjungsi (dibaca :"DAN") dari proposisi p
dan q adalah proposisi dengan tabel kebenaran sebagai berikut.
P q p ∧ q
T
T
F
F
T
F
T
F
T
F
F
F
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
4
Contoh 1.4 :
Tentukan nilai kebenaran dari proposisi-proposisi majemuk berikut :
Jika p bernilai T dan q bernilai F tentukan nilai kebenaran proposisi berikut :
1. ¬ p ∧q
2. (p∧q) ∧ ¬ p
3. ¬ (p∧q) ∧ (¬ p)
Jawab :
Berdasarkan nilai awal p dan q dan tabel kebenaran adalah :
1. ¬ T ∧ F ⇔ F ∧ F
⇔ F
2. (T∧F) ∧ ¬ T ⇔ (F) ∧ ¬ T
⇔ (F) ∧ F
⇔ F
3. ¬ (T∧F) ∧ (¬ T) ⇔ ¬ (F) ∧ (F)
⇔ T ∧ (F)
⇔ F
c. DISJUNGSI (∨) (OR)
Jika dimiliki proposisi p dan q maka konjungsi (dibaca :"ATAU") dari proposisi
p dan q adalah proposisi dengan tabel kebenaran sebagai berikut.
P q p ∨ q
T
T
F
F
T
F
T
F
T
T
T
F
Contoh 1.5. :
Buatlah notasi-notasi yang sesuai untuk pernyataan-pernyataan berikut :
1. Tidak benar bahwa saya tidak datang ke pesta
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
5
2. Saya akan datang ke tempatmu jumat atau selain senin
3. Saya dan dia makan di rumah atau kamu makan di restoran
Jawab :
1. p="pergi ke pesta" , kalimat pertama di notasikan sebagai ¬ ¬ p
2. p ="saya datang ke tempatmu jumat" dan q="saya datang ketempat mu senin"
proposisi no.2 menjadi : p ∨ (¬q)
3. p="saya makan dirumah" , q="dia makan dirumah" r="kamu mmakan di
restoran"
proposisi no.3. menjadi : (p ∧ q) ∨ r
Contoh 1.6. :
Tentukan nilai kebenaran dari proposisi berikut jika :
P = T , q = T dan r = T
1. ¬p ∨ ¬q
2. ( p ∧ ¬q) ∨ (q ∧ r)
3. ¬(p∨q) ∧(¬q)∨(p∧r)
Jawab:
1. ¬p ∨ ¬q ⇔ ¬T ∨ ¬T
⇔ F ∨ F
⇔ F
2. ( p ∧ ¬q) ∨ (q ∧ r) ⇔ ( T ∧ ¬T) ∨ (T ∧ T)
⇔ ( T ∧ F) ∨ (T ∧ T)
⇔ ( F) ∨ (T )
⇔ T
3. ¬(p∨q) ∧(¬q)∨(p∧r) ⇔ ¬(T∨T) ∧(¬T)∨(T∧T)
⇔ ¬(T) ∧(F)∨(T)
⇔ (F) ∧(F)∨(T)
⇔ (F)∨ (T)
⇔ T
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
6
d. EXCLUSIVE OR (XOR) (⊕)
Jika dimiliki proposisi p dan q maka EXCLUSIVE OR (XOR) dari proposisi p
dan q adalah proposisi dengan tabel kebenaran sebagai berikut.
P q p ⊕ q
T
T
F
F
T
F
T
F
F
T
T
F
Perlu diberi catatan untuk mudah membedakan OR dan XOR adalah pada XOR
hanya kan bernilai TRUE jika dau proposisi bernilai berbeda: T dan F atau F dan T .
e. IMPLIKASI (→ )
Jika dimiliki proposisi p dan q maka IMPLIKASI p q (dibaca : JIKA p
MAKA q) dari proposisi p dan q adalah proposisi dengan tabel kebenaran sebagai
berikut.
P q p q
T
T
F
F
T
F
T
F
T
F
T
T
Dalam implikasi p q maka :
p disebut hipotesis/antesede/premis
q disebut konklusi /kesimpulan
Catatan : p q meskipun dibaca jika p maka q tidaklah sama dengan statemen
dalam bahasa pemrograman, yaitu statemen : if .. then
Dalam IMPLIKASI : p q maka baik p maupun q keduanya adalah proposisi
yang dapat bernilai benar atau salah.
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
7
Dalam statemen IF ..THEN … misalnya :
IF X<5 THEN Y:=12
X<5 adalah PROPOSISI setelah sebelumnya X diberi nilai tertentu
Y:=12 bukanlah proposisi tetapi statemen pengisian (ASSIGNMENT)nilai Y dengan
data 12
Catatan lain dalam implikasi adalah bahwa hubungan "jika p maka q" tidak
mensyaratkan hubungan sebab akibat, misalnya :
1. p = "kamu belajar" , q = "kamu lulus ujian"
Proposisi : p q dapat dimaknai : "jika kamu belajar maka kamu lulus ujian"
Disini terlihat hubungan kasusalitas
2. p="1+1 = 2" q="Jakarta ibokota Indonesia"
Proposisi : p q berarti :"Jika 1+1=2 maka Jakarta ibukota Indonesia"
Kalimat tersebut tampak "aneh" dan tidak logis, tetapi dari sisi operasi implikasi
kalimat tersbut masih dapat diterima.
1.3. Ekivalensi proposisi majemuk
Proposisi-proposisi tunggal dapat digabung menjadi proposisi gabungan
disebut COMPOUND PROPOSITION (komposisi majemuk). Komposisi majemuk
ini dapat bernilai SELALU benar atau selalau salah.
TAUTOLOGY : komposisi majemuk yang bernilai selalau benar, misal : p ∨ ¬ p
CONTRADICTION : komposisi majemuk yang bernilai selalu salah, misal : p ∧ ¬
p
Tautlogy dan kontradiksi dapat dibuktikan dari tabel kebenaran berikut :
P ¬ p p ∨ ¬ p p ∧ ¬ p
T
F
F
T
T
T
F
F
EKIVALENSI : ( ⇔ )
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
8
Proposi majemuk juga dinyatakan sebagai EKIVALEN SECARA LOGIKA
(logically equivalence) jika proposisi-proposisi tersebut memiliki tabel kebenaran
yang sama.
Contoh 1.7. : Ujilah apakah ekivalensi ini benar :
¬ (p ∨ q) ⇔ ¬ p ∧ ¬ q
Jawab :
Untuk menjawab ekivalensi ini dapat ditempuh dengan beberapa langkah :
Langkah 1:
Buat dua kolom tabel kebenarn p dan q
p q T T F F
T F T F
Langkah 2:
Tambahkan satu kolom dan cari kebenaran p ∨ q .
P q p ∨ q T T F F
T F T F
T T T F
Langkah 3:
Tambahkan satu kolom dan cari kebenaran : ¬ (p ∨ q) . Dengan membalik saja.
Pada langkah 3 ini kebenaran dari RUAS KIRI sudah ditentukan.
P q p ∨ q ¬(p ∨ q) T T F F
T F T F
T T T F
F F F T
Langkah 4:
Tambahkan DUA kolom untuk ¬p dan kolom ¬ q . Isikan kebenarnnya.
Logika proposisi (Bab 1)
Amir Hamzah/ Teknik Informatika
9
P q p ∨ q ¬(p ∨ q) ¬p ¬q
T
T
F
F
T
F
T
F
T
T
T
F
F
F
F
T
F
F
T
T
F
T
F
T
Langkah 5:
Tambahkan satu kolom (terakhir) yaitu kolom proposisi : ¬p ∧ ¬ q . Isikan
kebenarnnya. Diperoleh :
P q p ∨ q ¬(p ∨ q) ¬p ¬q ¬p ∧ ¬ q
T
T
F
F
T
F
T
F
T
T
T
F
F
F
F
T
F
F
T
T
F
T
F
T
F
F
F
T
Pembuktian selesai : nampak kolom ¬(p ∨ q) dan kolom ¬p ∧ ¬ q memiliki
kebenaran yang sama. Kesimpulan adalah benar ekivalensi :
¬(p ∨ q) ⇔ ¬p ∧ ¬ q
LATIHAN :
1. Tentukan apakah ekivalensi ini benar?
¬(p ∨ q) ⇔ ¬p q
2. Buktikan ekivalensi
p q ⇔ (p∧¬q) (r∧¬r)
petunjuk : Untuk menguji ekivalensi melibatkan 3 variabel mula-mula susun
3 kolom kebenaran dari variabel penyusunnya, kolom p,q dan r.
BAB II
LOGIKA PREDIKATIF
1.2. Predikat dan Fungsi Proposisi
Perhatikan kalimat berikut :
"john seorang mahasiswa"
"andi seorang mahasiswa"
Dua buah kalimat tersebut mengandung dua bagian yaitu "John", "Andi" dan
"seorang mahasiswa". Bagian pertama dapat digantikan oleh nama-nama orang
siapapun, sehingga dapat juga diganti dengan x. Bagian kedua adalah keterangan
tentang bagian pertama. Bagian kedua disebut sebagai PREDIKAT dari bagian
pertama.
Dua kalimat tersebut merupakan proposisi yang dapat diubah menjadi
kalimat terbuka.
"x seorang mahasiswa"
Selanjutnya predikat dapat dinotasaikan dengan sebuah huruf besar, yaitu misalnya
P. Sehingga jika P mewakili predikat "seorang mahasiswa"
"john seorang mahasiswa" dapat ditulis sebagai P(john)
"andi seorang mahasiswa" dapat ditulis sebagai P(andi)
dan
"x seorang mahasiswa" ditulis sebagai P(x)
Pada pembahasan selanjutnya predikat dinotasikan sebagi huruf besar dan objek
yang dikenai predikat tersbut diwakili oleh huruf kecil.
P(x) merupakan statemen yang belum dapat diberi nilai kebenaran. P(x)
disebut sebagai fungsi proposisi.
1.3. Fungsi proposisi dengan dua atau lebih variabel
Perhatikan kalimat berikut :
"john duduk di depan andi"
Jika predikat "duduk didepan" dinotasikan dengan Q, maka :
Q(john,andi) bermakna : john duduk didepan andi"
10
Logika predikatif (Bab 2)
Amir Hamzah/ Teknik Informatika
11
Q(x,y) bermakna : x duduk didepan y, yang merupakan fungsi proposisi dua
variabel.
Q(y,x) bermakna : y duduk didepan x, yang merupakan kondisi yang lain dengan
Q(x,y).
Pada fungsi proposisi dua variabel atau lebih, maka urutan variabel harus
diperhatikan. Urutan variabel yang berbeda memiliki makna yang berbeda.
Perhatikan kalimat :
"siti duduk diantara joko dan sano"
Fungsi proposisi R(x,y,z) dapat diajukan. R memiliki arti "duduk diantara .. dan .."
"ali dan rudi bermain melawan romeo dan yuli"
Fungsi proposisi S(a,b,c,d) dapat diajukan dengan S="bermain melawan"
1.4. Operasi pada Fungsi proposisi
Dua atau lebih fungsi proposisi dapat digabungkan membentuk fungsi proposisi
yang baru.
Perhatikan kalimat berikut :
"Jika joko pelajar maka ia dapat korting"
Dapat diekspresikan : P(joko) Q(joko)
Dimana: P = "seorang pelajar"
Q= "mendapat korting"
"Jika seseorang adalah pelajar maka ia akan dapat koritng"
ditulis : P(x) Q(x)
Kalimat :
"Jika seseorang rajin belajar dan ikut ujian , ia tak akan tinggal kelas"
dapat dinotasikan sebagai :
B(x) ∧ U(x) ¬ T(x)
Dimana: B = "rajin belajar "
U= "ikut ujian
T="tinggal kelas"
1.5. Semesta Pembicaraan
Logika predikatif (Bab 2)
Amir Hamzah/ Teknik Informatika
12
Dalam suatu fungsi proposisi yang melibatkan satu, dua atau banyak variabel,
maka masing-masing variabel akan dapat dievaluasi dalam suatu himpunan tertentu
yang disebut sebagai SEMESTA pembicaraan. Semesta pembicaraan menjadi
memungkinkan menerjemahkan fungsi proposisi menjadi proposisi yang dengan
jelas dapat dievaluasi benar atau salah.
Contoh :
1. M(x)="x adalah seorang mahasiswa"
Maka semesta pembicaraan x adalah manusia
2. Q(x,y)="x duduk dedepan y"
Semesta pembicaraan x, y adalah orang-orang yang sedang nonton bioskup
3. R(x,y)= "x2+y2 >0"
Semesta pembicaraan adalah x,y bilangan real; biasa ditulis : x,y∈ℜ
1.6. Kuantifikasi Fungsi Proposisi
Suatu fungsi proposisi dapat diubah menjadi proposisi dengan melakukan
penggantian variabel dengan nilai data yang dimungkinkan oleh semesta
pembicaraan.
Contoh :
1. Fungsi proposisi : Q(x)="x adalah binatang galak"
Dengan x adalah semua singa yang hidup didunia
Diubah menjadi proposisi yang BENAR="singa liar dihutan adalah binatang
galak"
Diubah menjadi proposisi yang SALAH="singa sirkus adalah binatang
galak"
2. Fungsi proposisi : R(x,y)="x2+y2>0" dengan semesta pembicaraan x,y∈ℜ
Diubah menjadi proposisi yang BENAR "22+32>0"
Diubah menjadi proposisi yang SALAH "02+02>0"
Cara lain untuk merubah fungsi proposisi menjadi proposisi dapat juga dengan
cara memberi kuantor (quantifier). Dikenal dua macam kuantor yaitu :
Logika predikatif (Bab 2)
Amir Hamzah/ Teknik Informatika
13
KUANTOR UNIVERSAL (universal quantifier): ∀
"disimbolkan dengan ∀=dibaca SEMUA"
Contoh :
Fungsi proposisi : Q(x)="x2 -1 >0" , untuk semesta x bilangan real
Belum memiliki nilai kebenaran.
Jika diberi kuantor ∀ akan menjadi proposisi :
∀x Q(x)="x2 -1 >0" , x∈ℜ
dibaca:"Untuk semua x dengan x bilangan real berlaku x2 -1 >0"
ini adalah proposisi yang SALAH karena jika x=0 maka 02-1 <0
Dengan demikian kuantor ∀ membuat Q(x) menjadi proposisi
(bernilai SALAH).
KUANTOR EXISTENSIAL (existensial quantifier): ∃
"disimbolkan dengan ∃=dibaca ADA BEBERAPA/ SEBAGIAN"
Contoh :
Fungsi proposisi : Q(x)="x2 -1 >0" , untuk semesta x bilangan real
Belum memiliki nilai kebenaran.
Jika diberi kuantor ∃ akan menjadi proposisi :
∃x Q(x)="x2 -1 >0" , x∈ℜ
dibaca:" Ada sebagian x dengan x bilangan real berlaku x2 -1 >0"
∃x Q(x)="x2 -1 >0" , x∈ℜ Telah memiliki nilai kebenaran, yaitu :BENAR
Kuantifikasi juga dapat dilakukan pada fungsi proposisi dengan cacah variabel 2
atau lebih. Perhatikan :
∀x ∀y Q(x)="x2 + y2 >0" , x,y∈ℜ
dibaca:"Untuk Semua x untuk semua y berlaku x2 + y2 >0"
sebuah proposisi yang salah karena untuk x=0 dan y=0 : 0+0>0 adalah salah.
Contoh : Tentukan nilai kebenaran proposisi-propossisi berikut :
1. ∀x Q(x)="x + 1 > x" , x∈ℜ
2. ∀x ∃y Q(x)="x2 + y >0" , x,y∈ℜ
Logika predikatif (Bab 2)
Amir Hamzah/ Teknik Informatika
14
3. ∃x∀y Q(x)="x2 + y >0" , x,y∈ℜ
4. ∃x∃y Q(x)="x2 + y >0" , x,y∈ℜ
Jawab:
1. BENAR karena semua bilangan real +1 selalu lebih besar dari bilangan
itu sendiri.
2. BENAR, karena untuk setiap x real , selalu ada y sehingga x2 + y >0
menjadi benar. Untuk x>0 y>0 maka x2 + y >0 selalu benar.
Untuk x =0 akan ada y (misal ambil y>0) sehingga x2 + y >0 selalu
benar.
Untuk x <0 maka kuadrat x >0 sehingga akan ada y sehingga x2 + y >0
selalu benar.
3. SALAH, karena jika diambil sembarang x : misal x= 3 maka tidak dapat
ditemukan SEMUA y bilangan real sehingga x2 + y >0 menjadi selalu
benar. Hanya ada sebagian y saja , yaitu untuk y > -3
4. BENAR, karena dipilih sembarang X selalu ada Y sehingga x2 + y >0
benar.
Ekivalensi Kuantor Universal/Existensial Dengan Konjungsi /Disjungsi :
Andaikan seluruh semesta pembicaraan x dapat didaftarkan menjadi x1, x2, …,xn
maka kuantor universal dan eksistensial dapat dinyatakan dengan kesetaraan :
1. Kuantor universal ∀ :
∀x ⇔ x1 ∧ x2 ∧ x3 ∧ …. ∧ xn
2. Kuantor Existensial ∃ :
∃x ⇔ x1 ∨ x2 ∨ x3 ∨ …. ∨ xn
Contoh :
Tentukan nilai kebenaran ∃x P(x) dimana P(x) ="x2>10" dengan semesta
pembicaraan adalah bilangan bulat positif tidak lebih dari 4.
Jawab : Semesta pembicaraan x adalah : 1,2,3,4
Logika predikatif (Bab 2)
Amir Hamzah/ Teknik Informatika
15
∃x P(x) ⇔ P(x1) ∨ P(x2) ∨ P(x3) ∨ P(x4)
⇔ P(1) ∨ P(2) ∨ P(3) ∨ P(4)
⇔ (12>10) ∨ (22>10) ∨ (32>10) ∨ (42>10)
⇔ F ∨ F ∨ F ∨ T
⇔ T
BAB III
HIMPUNAN, RELASI & FUNGSI
3.1.HIMPUNAN
Konsep himpunan adalah dasar semua sistem bilangan. Pada hakekatnya
bilangan adalah himpunan yang jumlah anggotanya tidak terhingga. Himpunan
dapat diekspresikan dengan minimal dua cara :
1. Cara Mendaftar :
Contoh : A ={1,2,3,4}
B={ 1,3, 5, 7, 9}
2. Cara Menuliskan syarat keanggotaan :
Contoh : A={x | x bilangan positif < 5 }
B={x | x bilangan positif GANJIL dibawah 10}
Anggota himpunan dinotasikan sebagai ∈ dan bukan anggota dinotasikan dengan ∉.
Dengan demikian untuk A dan B diatas berlaku :
1 ∈ A ; 2 ∈ A ; 5 ∉ A
1 ∈ B ; 5 ∈ B ; 10 ∉ B
3.1.1. Sub Himpunan dan Himpunan Kuasa
Misalkan X dan Y adalah dua himpunan. Jika setiap anggota X adalah
anggota Y maka X adalah sub himpunan (himpunan bagian) dari Y, ditulis : X ⊆ Y
Jika setiap anggota X adalah anggota Y tetapi X ≠ Y maka X dikatakan
sebagai sub himpunan murni dari Y (proper set), ditulis : X⊂Y
Himpunan dari semua sub himpunan murni atau tidak dari suatu himpunan
disebut sebagai himpunan kuasa (power set), ditulis P(A).
Contoh :
Tentukan himpunan kuasa dari A={a,b,c}
Jawab :
P(A) = { ∅ , {a} , {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c} }
Catatan : Himpunan kosong (∅) merupakan sub himpunan dari setiap
16
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
17
himpunan.
3.1.2. Operasi terhadap himpunan
a. IRISAN (intersection) :
Misalkan X dan Y adalah dua himpunan. Maka irisan himpunan X dengan Y
di definisikan sebagai suatu himpunan yang anggotanya adalah anggota X dan
anggota Y. Irisan disimbulkan dengan ∩.
Definisi : X ∩ Y = { x | x ∈ X DAN x ∈ Y }
Contoh :
X={ 1,3,5}
Y={1,2,3,6,7}
X ∩ Y ={1, 3 }
b. GABUNGAN (Union) :
Misalkan X dan Y adalah dua himpunan. Maka gabungan himpunan X
dengan Y di definisikan sebagai suatu himpunan yang anggotanya adalah anggota X
atau anggota Y. Irisan disimbulkan dengan ∪.
Definisi : X ∪ Y = { x | x ∈ X ATAU x ∈ Y }
Contoh :
X={ 1,3,5}
Y={1,2,3,6,7}
X ∪ Y ={1,2, 3,5,6,7 }
c. HIMPUNAN SEMESTA DAN KOMPLEMEN HIMPUNAN
Himpunan semesta dimaksudkan sebagai himpunan yang anggotanya adalah
seluruh elemen yang menjadi pembicaraan. Misalnya himpunan bilangan real,
himpunan bilangan bulat.
Contoh : S={x | x ∈ R }
Himpunan Komplemen (Ac)
Jika dimiliki himpunan A, maka komplemen dari himpunan A adalah
himpunan yang anggotanya bukan anggota A tetapi anggota semesta.
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
18
Contoh : S={x | x ∈ R }
A ={ x | x < 0 }
Maka Ac = {x | x > 0 }
d. SELISIH DUA HIMPUNAN
Misalkan X dan Y adalah dua himpunan. Maka SELISIH himpunan X
dengan Y di definisikan sebagai suatu himpunan yang anggotanya adalah anggota X
TETAPI BUKAN anggota Y. Simbul selisih adalah : -
Definisi : X - Y = { x | x ∈ X dan x ∉ Y }
Contoh : A ={1,3,5}
B ={4,5,6}
Maka A - B { 1,3 }
B - A ={4,6}
e. PASANGAN BERURUT (ordered pairs)
Kadang-kadang diinginkan untuk menuliskan anggota suatu himpunan secara
berpasangan, disebut sebagai pasangan berurt. Pasangan berurut dinotasikan dengan
(a,b) atau <a,b>. Pasangan berurut ini tidaklah sama dengan himpunan dengan dua
buah anggota. Himpunan dengan dua buah anggota maka {a,b} = {b,a} sedangkan
dalam pasangan berurut (a,b) ≠ (b,a).
Contoh konkrit pasangan berurut adalah himpunan titik-titik dalam suatu
bidang dua dimensi (koordinat kartesius). Himpunan titik diwakili oleh kordinat
(x,y). Dengan demikian titik (1,2) tidaklah sama dengan titik (2,1).
Contoh :
Tentukan seluruh pasangan berurut yang dapat dibuat dari himpunan :
A={a,b,c}
Jawab : { (a,b), (a,c), (b,c) , (b,a) , (c,a), (c,b) }
f. PRODUK KARTESIAN (cartesian product)
Produk kartesian dari dua himpunan X dan Y : (X × Y)
Didefinisikan sebagai himpunan seluruh pasangan berurut dengan anggota pertama
dari himpunan pertama dan anggota kedua dari himpunan kedua.
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
19
Contoh : A={a,b} dan B={1,2,3}
Maka A ×B = {(a,1), (a,2), (a,3), (b,1), (b,2), (b,3) }
Produk kartesian dari himpunan dengan dirinya sendiri:
Contoh: Untuk A dan B diatas
Maka :
A × A = {(a,a), (a,b), (b,a), (b,b) }
B × B = {(1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3) }
3.2. RELASI
Pada keadaan tertentu kadang diperlukan menghubungkan anggota suatu
himpunan ke anggota himpunan yang lain. Misalnya dimiliki anggota himpunan :
M=mahasiswa = {amir, ali, badu}
K=mata kuliah = {CALCULUS, BAHASA, IPS}
Relasi yang mungkin tentang pengambilan mata kuliah oleh mahasiswa dapat dibuat
:
(amir,CALCULUS), (amir,BAHASA), (ali,IPS), (badu,BAHASA)
Mendaftar seluruh relasi yang mungkin dari dua himpunan merupakan ekspresi lain
dari PRODUK KARTESIAN.
Relasi Biner :
Misalkan X dan Y adalah dua himpunan. Relasi biner X ke Y adalah sub
himpunan dari produk kartesian X x Y. Jika x,y ∈ R, relasi X ke Y dapat ditulis
sebagai xRy.
Domain (Daerah asal) relasi adalah :
{x ∈ R | (x,y) ∈ R untuk beberapa y ∈ R}
KoDomain (Daerah hasil) relasi adalah :
{y ∈ R | (x,y) ∈ R untuk beberapa x ∈ R}
Contoh:
X={2,3,4}
Y={3,4,5,6,7}
Relasi R dari X ke Y didefinisikan sebagai (x,y) ∈ R jika x membagi habis y.
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
20
Maka:
R={ (2,4), (2,6), (3,3), (3,6), (4,4) }
Jika ditulis ulang relasi R dalam bentuk tabel terlihat :
X Y 2 2 3 3 4
4 6 3 6 4
DOMAIN dari R adalah {2,3,4}
KODOMAIN dari R adalah {3,4,6}
3.2.1. DIGRAF (DIRECTED GRAPH)
Suatu directed graph , biasa disebut sebagai DIGRAF, (grafik berarah) yang
dapat diekspresikan sebagai lingkaran-lingkaran yang dihubungkan satu dengan
yang lain dengan anak panah dapat digunakan dengan tepat menggambarkan suatu
relasi. Gambar 3.1 merupakan suatu Digraf yang menggambarkan relasi R={(1,2),
(1,3), (2,3), (3,3) } atas suatu himpunan X={1,2,3}.
Gambar 3.1. Gambar Directed graf (DIGRAF)
Sifat-sifat Relasi
a. SIFAT REFLEKSIF :
"Relasi R pada himpunan X disebut refleksif jika untuk setiap x berlaku (x,x) ∈ R "
Contoh :
X = {1,2,3}
R1= { (1,2), (1,3), (2,3), (1,1) } tidak refleksif
R2={ (1,1), (1,3), (3,1), (2,2), (3,3),(3,2) } adalah refleksif
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
21
R1 R2
Gambar 3.2. Relasi yang tidak refleksif (R1) dan refleksif (R2)
b. SIFAT SIMETRIS
"Relasi R pada himpunan X disebut simetris jika untuk setiap x,y ∈ X jika (x,y) ∈
R maka (y,x) ∈ R juga."
Contoh :
X = {1,2,3}
R3= { (1,2), (1,3), (2,3), (2,1), (3,1) } tidak simetris karena (3,2) tak ada
R4={ (1,1), (1,3), (3,1), (2,3), (3,3),(3,2) } adalah simetris
Gambar 3.3. Relasi yang tidak simetri (R3) dan simetri (R4)
c. SIFAT ANTISIMETRIS
"Relasi R pada himpunan X disebut antisimetris jika untuk setiap x,y ∈ X jika
(x,y) ∈ R dan x≠y maka (y,x) ∉ R "
Contoh :
X = {1,2,3}
R5= { (1,2), (1,3), (2,3), (2,1), (3,1) } tidak simetris karena (3,2) tak ada
R6={ (1,1), (1,3), (2,3), (3,3) } adalah antisimetris
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
22
Gambar 3.4. Relasi tidak simetris (R5) dan antisimetris (R6)
Perlu dicatat bahwa tidak simetris berbeda dengan antisimetris. Tidak simetris
bermakna tidak semua (x,y) ∈ R terdapat (y,x) ∈ R, sedangkan antisimetris artinya
untuk setiap (x,y) ∈ R maka (y,x) ∉ R
d. SIFAT TRANSITIF
"Relasi R pada himpunan X disebut transitif jika untuk setiap x,y,z ∈ X dan jika
(x,y) ∈ R serta (y,z) ∈ R maka ditemukan (x,z) ∈ R.
Contoh :
X = {1,2,3}
R7= { (1,2), (1,3), (2,3), (2,1), (3,1) } tidak transitif karena:
(1,2)∈R dan (2,1)∈R : tetapi (1,1) ∉ R
R8={ (1,1), (1,3), (3,1), (3,3), (3,2),(1,2) } adalah transitif.
Gambar 3.4. Relasi tidak transitif (R7) dan transitif (R8)
e. URUTAN PARTIAL (partial orders)
"Suatu Relasi R pada himpunan X disebut urutan partial jika R adalah : refleksif,
antisimetris dan transitif"
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
23
Contoh :
X = {1,2,3,4,5}
R ={ (1,1), (1,2), (1,4) ,(1,5), (2,2),(2,4),(2,5),(3,3),(4,4),(5,5) }
adalah urutan partial.
Bukti :
Refleksif karena : (1,1),(2,2),(3,3),(4,4),(5,5) ∈R
Antisimetris karena : (1,2)∈R, (1,4)∈R, (1,5)∈R, (2,4)∈R, (2,5)∈R
dan: (2,1)∉R, (4,1) ∉R, (5,1) ∉R, (4,2) ∉R, (5,2)∉R
Transitif karena : (1,2)∈R, (2,4)∈R, maka (1,4)∈R
(1,2)∈R, (2,5)∈R, maka (1,5)∈R
3.3. FUNGSI
Suatu fungsi adalah relasi yang memenuhi kriteria tertentu. Seperti telah
dibahas dalam produk kartesian, bahwa suatu relasi adalah sub himpunan dari
produk kartesian. Suatu relasi f dalam X dikatakan sebagai fungsi apabila memenuhi
:
1. Domain f adalah X
2. Jika (x,y)(x,y')∈f maka haruslah y=y'
Untuk membedakan suatu relasi biasa dengan fungsi dapat digambarkan dengan dua
macam relasi berikut:
X Y
X Y
a b c d
1 2 3 4 5
Bukan relasi karena tidak memenuhi syarat 1. Gambar 3.5. Bukan Relasi
a b c d
1 2 3 4 5
Bukan relasi karena tidak memenuhi syarat 2. Gambar 3.6. Bukan Relasi
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
24
X Y
Contoh : dimiliki X={1,2,3} dan Y={a,b.c}
Suatu relasi f : X Y = { (1,a), (2,b), (3,a) } adalah sutu FUNGSI
Ekspresi fungsi yang lain dapat ditulis sebagai : f(1)=a , f(2)=b dan f(3)=a
Selanjutnya fungsi sering dinotasikan sebagai aturan pemetaannya, misalnya :
f(x)=x2 ; x∈ℜ, memetakan nilai-nilai x ke x2 . ℜ berarti himpunan bilangan real
f(x)=2x+1 ;x∈ℜ, memetakan nilai-nilai x ke 2x+1
3.3.1. Fungsi Hash
Salah satu fungsi yang penting dalam aplikasi komputer adalah fungsi hash.
Fungsi ini memetakan anggota himpunan bilangan bulat ke bilanagn bulat kedua.
Bilangan bulat kedua adalah sel-sel memori komputer. Jika dimiliki 11 sel memori
komputer dan diberi nomor 0 sampai 10, maka setiap bilangan bulat dapat disimpan
pada lokasi yang diatur menurut fungsi hash. Fungsi hash didefinisikan sebagai :
h(n) = n mod 11
Misal mau disimpan data : 15, 558, 32, dan 132
15 mod 11 =4 maka 15 disimpan dilokasi 4
558 mod 11 =8 maka 558 disimpan dilokasi 8
32 mod 11 =10 maka 32 disimpan dilokasi 10
132 mod 11 =0 maka 132 disimpan dilokasi 0
0 1 2 3 4 5 6 7 8 9 10
Gambar 3.8. Letak bilangan dalam sel memori bedasar fungsi hash.
Tentu saja jika bilangan berbeda misalnya 257 dan 15 kebetulan memiliki
modulo yang sama (15 mod 11=4 dan 257 mod 11=4) maka akan terjadi
a b c d
1 2 3 4 5
Relasi : Syarat 1 dan 2 dipenuhi Gambar 3.7. Relasi
132 15 558 32
Himpunan, Relasi dan Fungsi (Bab III)
Amir Hamzah / Teknik Informatika
25
tabrakan(collision). Bagaimana mengatasi tabrakan maka teknik-teknik hashing
dapat diperdalam pada kesempatan lain.
BAB IV
ALGORITMA
4.1. PENGERTIAN ALGORITMA
Dalam pemecahan masalah dengan bantuan komputer dan pemrograman
diperlukan alur logika pemecahan. Himpunan langkah-langkah yang terhingga dari
alur logika untuk memecahkan masalah disebut sebagai algoritma. Sebagai contoh
pekerjaan "membuat kopi manis" dapat dituliskan algoritmanya sebagai berikut :
Algoritma 1.:
1. Ambil gelas dan taruh di meja
2. Isi gelas dengan kopi
3. Tambahkan gula secukupnya
4. Tuang air panas ke dalam gelas
5. Aduk sampai gula larut semua
6. Selesai
Pada algoritma ada hal-hal prinsipil yang sangat penting yaitu URUTAN
perintah. Urutan perintah pada umumnya tidak dapat dibolak-balik. Misalnya
langkah 1 dengan langkah 2 tidak dapat ditukar. Demikian juga langkah 5 tidak
dapat mendahului langkah 4 (mau ngaduk apa wong airnya belum dituang). Tetapi
kadang ada juga langkah yang dapat dipertukarkan dan tidak menyebabkan
pekerjaan gagal, misalnya langkah 2 dan 3. Gula dulu atau kopi dulu tidak
mempengaruhi hasil akhir.
Contoh lain adalah algoritma mencari nilai terbesar dari 3 bilangan a,b dan c.
Algoritmanya adalah :
Algoritma 2: 1. Max:=a 2. If Max<b then Max:=b 3. If Max <c then Max:=c
Dalam algoritma tersebut notasi := disebut operator penugasan (assignment
operator), yang mempunyai arti, misalnya x:=y, "copy kan isi variabel y ke dalam
x", isi variabel y sendiri nilainya tetap tidak berubah.
Dalam algoritma diatas juga ada pernyataan :If Max<b then Max:=b.
26
Algoritma (Bab IV)
Amir Hamzah/ Teknik Informatika
27
Pernyataan bentuk ini memiliki rumus umum :
If KONDISI then AKSI
Kondisi dapat bernilai benar atau salah . Jika kondisi ini bernilai benar maka
AKSI akan dikerjakan dan jika salah AKSI tidak dikerjakan.
Untuk menguji apakah algoritma diatas benar-benar menemukan nilai
terbesar dari tiga bilangan dapat dilakukan pengujian dengan sembarang data.
Pengujian ini dilakukan langkah demi langkah (biasa disebut sebagai TRACING
atau pelacakan)
Pengujian Dengan data : a=2 ; b=6; c=3
Langkah 1 : Max diisi a , sehingga Max berisi 2
Langkah 2: bandingkan Max dengan b Max<b? 2<6? Benar maka Max diisi b,
sehingga Max berisi 6.
Langkah 3: bandingkan Max dengan c Max<c ? 6<3? Salah maka tidak
mengerjakan apa-apa. Max tetap berisi 6
Hasil : Maksimum adalah 6
4.2. NOTASI UNTUK ALGORITMA
Karena bahasa sehari-hari kadang sulit menjelaskan suatu algoritma, para ahli
komputer lebih menyukai ekspresi algoritma dalam suatu bentuk PSEUDO-CODE
(kode palsu) yang sudah sangat dekat dengan ekspresi bahasa program komputer.
Dalam suatu algoritma selalu dimiliki :
Masukan : data-data yang diperlukan untuk memperoleh hasil
Keluaran : Hasil yang diinginkan setelah algoritma dijalankan.
Dengan demikian algoritma cari nilai terbesar dari tiga bilangan dapat ditetapkan :
Masukan :a,b dan c:
Keluaran : nilai maksimum
Algoritma 3 : Ekspresi algoritmanya : 1. Procedure maks(a,b,c)
2. X:=a
3. If b>X then X:=b
4. If c>X then X:=c
5. Return(X)
Algoritma (Bab IV)
Amir Hamzah/ Teknik Informatika
28
6. End maks
Kadang dikehendaki bahwa aksi yang terkondisikan berupa beberapa aksi.
Dalam keadaan ini ekspresi untuk aksi-aski diletakkan dalam suatu BLOK yang
dimuali dengan begin dan ditutp dengan end. Misalnya :
If kondisi then
Begin ---- ---- End
4.3. ALGORITMA CARI MAKSIMUM DARI DERET
Algoritma mencari maksimum dari 3 bilangan dapat dikembangkan menjadi
mencari maksimum dari n buah bilangan. Misalnya deret bilangan tersebut :
s1,s2,…,sn
Algoritma nya:
Masukan : n dan : s1,s2,…,sn
Keluaran :besar, anggota s terbesar
Algoritma 4 : 1. Procedure mencari_maks(n, s1,s2,…,sn ) 2. besar:=s 3. i:=2 4. While i<=n do 5. Begin 6. If si>besar then besar:=si 7. i:=i+1 8. End 9. Return(besar) 10. End(mencari-maks)
Dalam algoritma diatas ada ekspresi while …do. Ekspresi ini digunakan untuk
mengontrol proses berulang. Pengendalian proses berulang dengan while..do
memerlukan counter yaitu variabel I yang mula-mula diberi nilai 2. Perulangan
dilakukan selam i<=n.
Cara lain untuk mengendalikan perulangan adalah dengan ekspresi forr..do :
For varcounter :=init to limit do
Algoritma (Bab IV)
Amir Hamzah/ Teknik Informatika
29
Aksi
Dalam hal ini aksi dilakukan selam nilai varcounter dari init menuju limit dengan
langkah satu.
Dengan demikian algoritma diatas dapat ditulis ulang menjadi.
Algoritma 5 : 1. Procedure mencari_maks(n, s1,s2,…,sn ) 2. besar:=s 3. for I:=2 to n do 4. If si>besar then besar:=si 5. Return(besar) 6. End(mencari-maks)
4.4. ALGORITMA MENENTUKAN APAKAH BILANGAN PRIMA
Bilangan bulat dapat dikelompokkan menjadi bilangan prima dan bukan prima.
Pada hakekatnya bilangan bukan prima selalu dapat difaktorkan menjadi bilangan-
bilanagn prima. Bilangan prima sendiri didefinisikan sebagai bilangan yang pembagi
habisnya hanya SATU dan bilangan itu sendiri, atau bilangan yang tidak dapat
difaktorkan kecuali dirinya sendiri.
Berikut ini adalah Algoritma mencari bilangan prima.
Masukan : n (bilangan)
Keluaran : TRUE jika n bilangan prima dan FALSE jika bukan
Algoritma 6 : Menentukan apakah bilangan bulat n itu prima/bukan 1. Procedure apakah_prima(n) 2. for I:=2 to n-1 do 3. if (n mod I )=0 then return(SALAH) 4. Return(BENAR) 5. End(apakah_prima)
Misalkan diinginkan menguji algoritma 6. Dapat diusulkan n misalnya = 10.
Untuk I =2 maka (n mod I) yaitu (10 mod 2)=0 dan SALAH akan direturn
Untuk n misalnya = 11
Untuk semua I=2,3,4,..10 (n mod I) tidak pernah benar maka akan direturn
BENAR
Algoritma (Bab IV)
Amir Hamzah/ Teknik Informatika
30
4.5. ALGORITMA EUCLIDES
Salah satu algoritma yang cukup terkenal adalah algoritma euclides : yaitu
algoritma untuk menentukan faktor persekutuan terbesar (FPB) dari dua buah
bilangan bulat. FPB didefinisikan sebagai berikut :
Jika 12 mempunyai faktor {1,2,3,6,12}
Dan 18 memiliki faktor {1,2,3,6,9,18}
Himpunan Faktor Persekutuan {1,2,3,6}
FAKTOR PERSEKUTUAN TERBESAR ADALAH 6
Euclides mengajukan suatu algoritma untuk menentukan FPB sebagai berikut:
Masukan : a,b (dua buah bilangan)
Keluaran : FPB dari a dan B
Algoritma 7 : Menentukan FPB dari a dan b 1. Procedure CariFPB(a,b) 2. If a<b then swap(a,b) 3. while (b<>0) do 4. Begin 5. Bagilah a dengan b untuk mendapat a=bq+r, 0<r<b 6. a:=b 7. b:=r 8. End 9. return(a) 10. End(cariFPB)
Dalam algoritma langkah 2 ada pernyataan swap(a,b), artinya tukarkan isi variabel a
dengan variabel b. swap dapat ditempuh dengan :
temp:=a a:=b b:=temp
4. 6. ALGORITMA REKURSI
Jika dalam bab III telah dibahas bagaimana mendefinisikan suatu fungsi
rekursi, maka secara algoritma penentuan suatu fungsi dapat juga diimplementasikan
Algoritma (Bab IV)
Amir Hamzah/ Teknik Informatika
31
secara rekursi. Dengan kata lain algoritma rekursi adalah penyelesaian langkah-
langkah komputasi untuk suatu persoalan yang dapat didefinisikan secara rekursi,
baik dalam suatu bentuk fungsi atau prosedur.
Contoh : Untuk pesoalan mencari n! , algoritma non rekursi untuk menyelesaikan
adalah sebagai berikut : 1. Procedure CariFaktorial(n) 2. Bantu:=1 3. For i:=1 to n do 4. Bantu:=Bantu * i 5. return(Bantu) 6. End(cariFaktorial)
Adapun algoritma rekursinya adalah sebagai berikut : 1. Procedure CariFaktorial(n) 2. If n=1 then Return(1) 3. Else Return (n * CariFaktorial(n-1)) 4. End(cariFaktorial)
Contoh : Untuk pesoalan mencari suku ke-n deret fibbonacisecara rekursi adalah
sebagai berikut : 1. Procedure Suku-ke-n(n) 2. If n=1 then Return(1) 3. Else if n = 2 then Return (1) 4. Else Return (Suku-ke-n(n-1)+ Suku-ke-n(n-2)) 5. End(Suku-ke-n)
BAB V
INDUKSI DAN REKURSI
5.1. INDUKSI MATEMATIKA
Induksi matematika merupakan teknik pembuktian yang cukup penting untuk
membutikan kebenaran suatu statemen matematika. Induksi matematika diilustrasikan
misalnya dengan suatu gambaran berikut :
Gambar 5.1. Deretan kotak bernomor yang ditandai X
Dimiliki sederetan kotak yang panjangnya tak terhingga bernomor 1,2,3,….
Beberapa kotak ditandai dengan dengan tanda X dengan aturan :
1. Kotak pertama ditandai
2. Jika semua kotak sebelum kotak ke-(n+1) ditandai maka kotak ke ke-(n+1)
juga ditandai.
Akan dibuktikan bahwa dua aturan tersebut menyebabkan semua kotak yang
panjangnya tak hingga tersebut akan ditandai X.
Aturan 1. Menyebabkan kotak 1 ditandai.
Aturan 2. Kotak 2 ditandai karena kotak 1 ditandai, maka kotak 2 harus ditandai
(menurut aturan 2). Jika kotak 1 dan 2 ditandai maka menurut aturan 2 kotak 3 juga
harus ditandai. Jika kotak 1,2, dan 3 ditandai maka kotak 4 juga harus ditandai dan
seterusnya, akibatnya semua kotak ditandai.
Prinsip di atas merupakan prinsip induksi matematika. Misalnya dimiliki
kalimat matematika S(n) yang masih merupakan pernyataan terbuka yang dapat benar
atau salah. Untuk membuktikan bahwa S(n) benar, maka cara pembuktian dengan
induksi matematika secara umum dapat dituliskan dalam dua langkah :
1. dapat dibuktikan S(1) benar
2. Jika S(i) benar untuk semue i<(n+1) maka buktikan s(n+1) benar
32
Induksi dan Rekursi (BabV))
Amir Hamzah/ Teknik Informatika
33
Langkah pertama disebut sebagai langkah dasar (BASIC STEP) dan langkah kedua
disebut langkah induksi (INDUCTION STEP).
Contoh 1:
Buktikan kebenaran pernyataan berikut dengan induksi matematika
n! > 2(n-1) untuk n=1,2,3…
Jawab :
Pembuktian ditempuh dengan mengikuti dua langkah pembuktian.
Langkah Dasar : Apakah benar n! > 2(n-1) untuk n=1 ?
Substitusikan n=1 kedalam pernyataan, diperoleh :
1! > 2(1-1)
1! > 2(0)
1 > 1 ADALAH STATEMEN YANG BENAR
Setelah langkah dasar dapat membuktikan bahwa pernyataan benar.
Langkah Induksi :
Harus dapat ditunjukkan bahwa i! > 2(i-1) benar untuk i=1,2,3…n
Asumsikan bahwa i! > 2(i-1) benar untuk i=1,2,…n
Dengan demikian untuk i=n, i! > 2(i-1) juga benar, yakni
n! > 2(n-1) (ASUMSI)
Untuk i=n+1, apakah (n+1)! > 2((n+1)-1) benar ?
Untuk i=n+1, didapat (n+1)! = (n+1)n!
> (n+1) 2(n-1) (berdasar asumsi)
karena (n+1)>2 maka = 2. 2(n-1)
= 2n
Maka dapat dibuktikan bahwa (n+1)! >2n BENAR
Contoh 2:
Buktikan bahwa S(n): 1+3+5+….(2n-1) =n2 untuk n=1,2,…
Jawab :
Langkah Dasar : S(1) : 1 = 12 adalah benar
Langkah induksi :
Diasumsikan bahwa 1+3+5+..(2i-1)=i2 benar untuk i=n
Induksi dan Rekursi (BabV))
Amir Hamzah/ Teknik Informatika
34
Yaitu 1+3+5+..(2n-1)=n2
Untuk i=(n+1) dimiliki :
1+3+5+ …+(2n-1) +(2(n+1)-1) =
= n2 (asumsi)
n2 + {2(n+1) -1 } = n2 + {2n+2 -1} =
n2 + {2n+1} = (n+1)2
Sehingga dapat dibuktikan bahwa untuk I=(n+1) berlaku :
1+3+5+ …+ (2n-1)+{2(n+1)-1} = (n+1)2 (terbukti)
Contoh 3 :
Gunakan induksi untuk membuktikan bahwa 5n-1 habis dibagi 4 untuk
n=1,2,3,…
Jawab :
Langkah dasar :
untuk n=1 didapat 51 -1 = 5 -1 = 4 ( habis dibagi 4)
Langkah induksi :
untuk n=1,2,…,n asumsikan : didapat 5n -1 habis dibagi 4
Jika 5n -1 habis dibagi 4 (asumsi), akan dibuktikan bahwa
Untuk n+1 , yakni [ 5(n+1) -1 ] habis dibagi 4
Yaitu : 5(n+1) -1 = 5. 5n -1
= (4+1) 5n -1
= 4. 5n + 5n -1
= 4. 5n + (5n -1)
habis dibagi 4 berdasar asumsi :habis dibagi 4
Dapat dibuktikan bahwa kedua ruas adalah habis dibagi 4
Jadi benar bahwa jika (5n -1) habis dibagi 4 maka (5n+1 -1) juga habis
dibagi 4 (TERBUKTI)
5.2.REKURSI
Pendekatan suatu persoalan yang pada tahap tertentu dapat diformulasikan dengan
tahap sebelumnya dengan formula yang sama disebut dengan rekursi. Konsep rekursi
Induksi dan Rekursi (BabV))
Amir Hamzah/ Teknik Informatika
35
ini dapat ditemukan dalam berbagai aspek misalnya DERET, HIMPUNAN dan
ALGORITMA.
Rekursi dalam Himpunan :
Suatu himpunan dapat didefinisikan secara rekursi dengan dua langkah :
1. himpunan awal didefinisikan
2. aturan untuk mendapatkan set baru dari set yang telah ada didefinisikan
Contoh :
S adalah himpunan yang didefinisikan secara rekursi :
(i) 3 ∈ S
(ii) Jika x∈ S dan y∈ S maka x+y∈ S
Himpunan S sebenarnya adalah : {3,6,9,12,…}
Hal ini didapat : jika mula-mula S={3}
Untuk x=3, y=3 maka menurut aturan (ii) (3+3) ∈ S 6∈ S
Untuk x=3, y=6 maka menurut aturan (ii) (3+6) ∈ S 9∈ S
Dst
Rekursi dalam DERET
Kebanyakan deret bilangan memiliki ketaraturan yang dapat didefinisikan
secara rekursi. Definisi rekursi memiliki dua bagian yaitu nilai awal dan bagian
rekursi.
Contoh 1:
Dimiliki deret yang terkenal dengan sebutan deret fibbonacci :
0,1,1,2,3,5,8,…
Secara rekursif deret tersebut dapat didefinisikan dengan statemen berikut :
Deret : f0, f1, f2, ….
Dimana : f0 = 0 dan f1=1
fn=fn-1+fn-2
Untuk mendapat f5 diperoleh dengan cara = f4+f3 = 1+2 =3
FUNGSI REKURSI
Induksi dan Rekursi (BabV))
Amir Hamzah/ Teknik Informatika
36
Konsep rekursi mengandung makna pendefinisian sesuatu dalam"term"
sesuatu itu sendiri pada level yang lebih sederhana. Pandanglah suatu deret bilangan
ganjil sebagai berikut :
1, 3, 5, .... , 2n-1
U1 U2 U3 Un
Jika suku pertama ditulis sebagai U1 , suku kedua ditulis sebagai U2 dan seterusnya
suku ke-n ditulis sebagai Un. Jika daiamati bahwa suku pertama adalah 1 dan suku ke-
2, ke-3 dan seterusnya adalah naik (selisih) dua, sehingga dapat ditulis sebagai :
U1=1
U2= U1 + 2 ;
U3= U2 + 2
...
Un= U(n-1) + 2
Dengan demikian dapat dinyatakan bahwa kecuali suku ke-1 yang dinyatakan sebagai
1 maka suku ke-n adalah merupakan fungsi dari suku ke-(n-1). Oleh karena itu dapat
dinyatakan bahwa suku ke-n dari suatu deret bilangan ganjil dapat ditulis sebagai :
Un= U(n-1) + 2
Ekspresi semua suku untuk deret bilangan ganjil dapat didefinisikan secara
REKURSIF sebagai :
U(n)1 untuk n = 1U(n -1) + 2 untuk n > 1⎧⎨⎩
Sehingga jika akan dicari suku pertama U(1) didapat =1
Suku ke-2, yaitu : U(2) = U(2-1)+2 = U(1) + 2 = 1 + 2 = 3
Suku ke-3, yaitu : U(3) = U(3-1)+2 = (2) + 2 = 3 + 2 = 5 dan seterusnya
Jika diamati suatu definisi fungsi rekursi, tampak ada bagian yang
diformulasikan sebagai dasar (yang tidak mengandung rekursi) dan ada bagian yang
didefinisikan sebagai bagian "rekursi", yaitu bagian yang mengambil bentuk fungsi itu
sendiri pada term (tahap) sebelumnya. Untuk fungsi menentukan suku ke-n deret
bilangan ganjil:
Induksi dan Rekursi (BabV))
Amir Hamzah/ Teknik Informatika
37
Gambar 5.2. Anatomi fungsi rekursi
Contoh : Tuliskan definisi fungsi secara rekursi untuk menentukan suku ke-n dari
deret fibbonaci, yaitu :
1 1 2 3 5 8 13 21 34 55 89 ... dst
dimana suku ke-n adalah jumlah dua suku sebelumnya, atau : Un=Un-1 + Un-2
Jawab : Dari deret dapat diketahui bahwa U(1) = 1 dan U(2)=1
U(3)=U(1)+U(2) ; U(4)=U(2)+U(3) ... dst U(n)=U(n-2)+U(n-1)
Sehingga fungsi rekursi untuk menentukan suku ke-n deret adalah :
U(n)1 untuk n = 11 untuk n = 2U(n -1) + U(n - 2) untuk n > 2
=⎧
⎨⎪
⎩⎪
Rekursi dalam ALGORITMA
Rekursi dalam algoritma sebenarnya merupakan akibat langsung dari
permasalahan yang pada keadaan tertentu dapat diekspresikan secara rekursif. Jika
persoalan dapat didefinisikan secara rekursi maka dapat disusun pemecahan dengan
algoritma rekursif.
Contoh : Definisikan secara rekursi
n! = 1x2x3x4x…n
jawab :
dimiliki kenyatan : 1! = 1
2!=(1)x2 = 2. 1!
3!=(1x2)x3 = 3 . 2!
n! =(1x2x…(n-1)xn = n.(n-1)!
Bagian definisi dasar
Bagian definisi rekursi
Induksi dan Rekursi (BabV))
Amir Hamzah/ Teknik Informatika
38
Dari kenyataan tersebut dapat didefinisikan suatu fungsi rekursi :
Dari fungsi rekursi selanjutnya dapat ditetapkan algoritma rekursinya sebagai beikut:
Masukan : n
Keluaran : n!
Algoritma : 1) Procedure faktorial(n)
2) If n=1 then
3) fak:=1
4) If n>1 then
5) fak:=n*faktorial(n-1)
6) return(fak)
7) End faktorial
Contoh :
Apakah perkalian dua bilangan bulat m dan n dapat dinyatakan secara
rekursi?
Jawab :
Dalam bentuk fungsi non rekursi :
f(n,m) =n*m
f(n,m) = n untuk m=1
= m untuk n=1
= n*(m + 1-1)
= n*(1+(m-1))
=n + {n*(m-1)}
=n + f(n,m-1)
Dengan demikian ekspresi f(n,m)=n*m dapat ditulis secara rekursi menjadi :
1 untuk n=1
f(n)=n! =
n.f(n-1) untuk n>1
Induksi dan Rekursi (BabV))
Amir Hamzah/ Teknik Informatika
39
Contoh :
Tentukan algoritma rekursi untuk xn dengan x real dan n bulat
Jawab :
Algoritma rekursi dapat dirumuskan jika fungsi dapat dirumuskan secara
rekursi. Ekspresi fungsi pangkat non rekursi adalah :
f(x,n)= xn
Dalam bentuk fungsi rekursi :
f(x,n) = xn
= x.x(n-1)
= x.f(x,n-1)
Untuk n=0 dimiliki f(x,0)=x0=1
Dengan demikian definisi rekursi adalah :
Algoritma dapat ditulis sebagai berikut :
Masukan : x real dan n bulat
Keluaran : xn
Algoritma : 8) Procedure caripangkat(x,n)
9) If n=0 then
10) Hasil:=1
11) If n>0 then
12) Hasil:=x*caripangkat(x,n-1)
13) return(Hasil)
14) End caripangkat
m untuk n=1
f(n.m)= n untuk m=1
n.f(n,m-1) untuk n>1, m>1
1 untuk n=0 f(x,n) = x.f(x,n-1)
BAB VI
PENGANTAR GRAF
5.3. DEFINISI GRAF
Graf (Graph) didefinisikan sebagai struktur diskret yang mengandung titik(vertices)
dan garis/sisi (edge) yang menghubungkan titik-titik tersebut. Ada banyak tipe-tpe
yang berbeda dari graf yang merujuk pada cara titik-titik dihubungkan dan
banyaknya garis penghubung. Graf pada kenyataannya dapat diterapkan pada
banyak persoalan, mulai dari transportasi, tournamen, jalur penerbangan, struktur
organisasi sampai jaringan komputer
5.4.TIPE-TIPE GRAF
1. Graf sederhana (Simpe Graf )
Suatu graf G=(V,E) disebut sebagai simple graf jika G mengandung V, yaitu
himpunan tak kosong vertice dan E, yaitu himpunan tak kosong dari edge.
Contoh dari simple graf dapat dilihat pada gambar 6.1, jaringan komputer yang
menghubungkan 7 kota di Amerika dengan catatan setiap dua kota hanya ada sau
line telepon.
Gambar 6.1. Contoh Simple Graf
2. Multiple Graf
Kadang-kadang dijumpai bahwa antar dua kota disambungkan dengan lebih dari
satu line telepon. Graf yang terbentuk dari jaringan telpon dengan multi-line akan
membentuk suatu graf dengan multi line antar dua titik, disebut dengan multiple
graf. 40
Pengantar Graf (Bab VI))
Amir Hamzah/ Teknik Informatika
41
Suatu graf G=(V,E) disebut sebagai multiple graf jika G mengandung :
himpunan vertices V, himpunan edges E dan fungsi f dari E ke {{u,v}| u,v ∈ V, u ≠
v . Egdes e1 dan e2 disebut multiple atau paralel edge jika f(e1)=f(e2)
Contoh multiple graf dapat dilihat pada gambar 6.2.
Gambar 6.2. Contoh Multiple Graf
3. Directed Graf (Digraf)
Jaringan telpon yang menghubungkan antar komputer mungkin tidak
menggunakan saluran yang sama pada dua arah komunikasi. Pada gambar 6.3
menunjukkan arah komukaasi yang tiap dua kota. Graf yang terbentuk disebut
sebagai Directed Graf.
Suatu graf G=(V,E) disebut sebagai Directed graf jika G mengandung V,
yaitu himpunan tak kosong vertice dan E, yaitu himpunan tak kosong dari edge
yang mana E berisi pasangan terurut (yang menunjukkan arah koneksi).
Gambar 6.3 Contoh Directed Graf
5.5.TERMINOLOGI DASAR GRAF
1. Tetangga (Adjacent/ neighbour)
Pengantar Graf (Bab VI))
Amir Hamzah/ Teknik Informatika
42
Dua buah vertices u dan v dalam graf G dikataka sebagai tetangga (adjacent)
dalam G jika {u,v} adalah edge dalam G. Jika e={u,v} adalah edge dalam G maka e
disebut incident dengan vertices u dan v.
Perhatikan graf dalam gambar 6.4. Vertices e,f dan c adalah tetangga
terhadap titik b, sedangkan titik d bukan tetangga terhadap b tetapi tetangga terhadap
c.
Gambar 6.4. Contoh Graf 2. Derajat vertex (Degree of a vertex)
Derajat vertex, ditulis deg(v) adalah banyaknya edge yang merupakan
incident edge bagi vertex tersebut. Misalnya untuk gambar 6.4 :derajat vertex
a,b,c,d,e berturut-turut adalah deg(a)=2 ; deg(b)=3; deg(c)=4; deg(d)=1 dan
deg(e)=4.
5.6.REPRESENTASI MATRIKS UNTUK GRAF
Ada banyak cara untuk merepresentasikan graf selain dengan cara formal
menggunakan diagram. Beberapa yang penting adalah dengan daftar ketetanggaan,
matrik tetangga dan matrik incident.
1. Daftar ketetanggaan (Adjacency list)
Representasi dengan daftar ketetanggaan dapat disajikan dengan membuat
tabel vertex dan tetangga vertexnya. Misalkan dimiliki graf seperti Gambar 6.5.
(a), maka dapat dibuat Daftar edge untuk graf tersebut sebagai berikut :
Tabel 1. Daftar edge untuk Simple Graf Gambar 6.5. (a) vertex Vertex tetangga a b c d e
b,c,d a a,d,e c,e a,c,d
Pengantar Graf (Bab VI))
Amir Hamzah/ Teknik Informatika
43
(a) (b)
Gambar 6.5 (a). Simple Graf ; (b) multiple graf
2. Matrik Tetangga (Adjacency matrix)
Untuk kepentingan penyusunan algoritma dan analisis, representasi dengan
daftar edge dinilai kurang efisien. Cara lain yang diusulkan adalah dengan
matrik tetangga.
Dianggap bahwa dimiliki graf G=(V,E) dengan |V|=n, yaitu graf dengan
jumlah vertex n. Anggap bahwa daftar vertex ditulis sembarang sebagai
v1,v2,...,vn. Matrik tetangga A dari graf G adalah suatu matrik berukuran nxn
yang beranggotakan 0 atau 1. Elemen matrik baris i kolom j berisi 1 jika vertex
vi bertetangga dengan vertex vj dan 0 jika tidak bertetangga. Dengan kata lain
matrik tetangga A =[aij],
dimana :
aij =⎧⎨⎩
1 jika {vi,vj} edge dalam G0 selainnya
Contoh : Matriks tetangga untuk graf pada gambar 6.5. (a) adalah sebagai
berikut
A =
0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥
Sedangkan matrik tetangga untuk multiple graf gambar 6.5. (b) dalah sebagai
berikut:
Pengantar Graf (Bab VI))
Amir Hamzah/ Teknik Informatika
44
A=
0 3 2 0 3 0 1 1 2 1 0 2 0 1 2 0
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
3. Incidency matrix
Cara lain untuk representasi graf adalah dengan incidency matrix. Jika G adalah
graf tak berarah G=(V,E) dan anggap bahwa v1,v2,...,vn adalah vertex dan
e1,e2,...,em adalah edge dalam G maka incidence matrik M adalah matrik ukuran
nxm yang dapat ditulis ebagai M=[mij] dimana :
m =1 jika edge e adalah incident dengan v0 selainnyaij
j i⎧⎨⎩
Gambar 6.6. Graf dengan 5 vertex dan 6 edge
Contoh : Matrix incidency dari graf dalam gambar 6.6. adalah sebagai berikut :
M=
1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1
⎡
⎣
⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥
5.7. PATH (JALUR)
Definisi : Path (jalur) dengan panjang n dari u ke v dalam graf G adalah
sederetan edge e1,e2,...,en dalam G sedemikian sehingga f(e1)={x0,x1},
f(e2)={x1,x2),...,f(en)={xn-1,xn), dimana u=x0 dan v=x. Untuk simpel graf path dapat
ditulis sebagai sederetan vertex dari x0,x1,...,xn. secara unik. Path dikatakan
membentuk circuit jika path mulai dan berakhir pada vertex yang sama.
Pengantar Graf (Bab VI))
Amir Hamzah/ Teknik Informatika
45
Contoh : Untuk gambar 6.6. Path dari a ke e dapat ditulis paling tidak empat
macam, yaitu : a,c,e ; a,d,e ; a,c,d,e dan a,d,c,e
Untuk gambar 6.6. circuit dari a dapat dibentuk antara lain : a,c,d,a ;
a,c,e,d,a ; a,d,c,a dan a,d,e,c,a
5.5.1. Euler Circuit dan Euler Path
Kota Konigsberg Prusia dibagi menjadi empat bagian oleh cabang sungai.
Terdapat 7 jembatan yang menghubungkan 4 wilayah tersebut (Lihat gambar 6.7
(a)). Persoalan yang muncul apakah mungkin dibuat perjalanan yang dimulai dari
suatu wilayah dengan menyeberangi semua jembatan TEPAT SATU KALI dan
kembali ketempat semula. Untuk menjawab pertanyaan tersebut Leonhard Euler
memodelkan persoalan terebut menjadi multiple graf dalam gambar 6.7 (b).
Persoalan yang dikehendaki sekarang menjadi : Apakah ada circuit sederhana dalam
multigraph tersebut yang mengandung semua edge.
Gambar 6.7. Kota Konisberg (a) dan Graf analog-nya (b)
Definisi : Circuit Euler dalam graf G adalah circuit sederhana yang mengandung
semua edge dalam G. Euler path dalam G adalah path sederhana dalam G
yang memuat semua edge dalam G.
G1 G2 G3
Gambar 6.8. Model Graf
Pengantar Graf (Bab VI))
Amir Hamzah/ Teknik Informatika
46
Contoh : Lihat graf G1,G2 dan G3 dalam gambar 6.8. Manakah yang memiliki
euler circuit? Dari yang tidak memiliki euler circuit manakah yang
memiliki euler path?.
Jawab: G1 memiliki euler circuit yaitu :a,e,d,c,e,b,a
G2 dan G3 tidak memiliki euler circuit. G2 tidak memiliki euler path, tetapi
G3 memiliki euler path yaitu :a,c,d,e,b,d,a,b
Jika diamati graf G1, G2 dan G3 dapat disimpulkan bahwa suatu graf akan memiliki
euler circuit apabila tiap-tiap vertexnya memiliki jumlah edge yang genap. Hal ini
dapat dilogikakan bahwa suatu edge yang digunakan untuk jalur masuk ke suatu
vertex tidak dapat lagi digunakan untuk jalur keluar karena suatu edge hanya dapat
dilewati satu kali.
5.5.2. Hamilton Circuit dan Hamilton Path
Apabila euler circuit dan euler path adalah suatu tour sedemikian sehingga
setiap edge tepat dilalui satu kali, maka hamilton circuit dan hamilton path adalah
suatu tour sehingga setiap vertex hanya dilalui satu kali. Secara formal Hamilton
ceircuit didefinisikan sebagai :
Definisi : Sebuah path x0,x1,x2,...,xn dalam graf G=(V,E) disebut hamilton path jika
V=( x0,x1,x2,...,xn ) dan xi ≠ xj untuk 0 ≤ i ≤ j ≤ n. Sedangkan circuit
x0,x1,x2,...,xn,x0 disebut hamilton circuit jika x0,x1,x2,...,xn adalah
hamilton path.
Contoh : Dari graf G1,G2 dan G3 pada gambar 6.9 manakah yang memiliki
hamilton circuit ? jika tidak memiliki hamilton circuit manakah yang
memiliki hamilton path?
G1 G2 G3
Gambar 6.9. Graf-graf
Jawab: Graf G1 memiliki hamilton circuit yaitu :a,b,c,e,d,a; b,c,e,d,a,b dan
beberapa kemungkinan lain. Untuk Graf G2 dan G3 tidak memiliki
Pengantar Graf (Bab VI))
Amir Hamzah/ Teknik Informatika
47
hamilton circuit (dapat dicermati bahwa setiap circuit yang melalui semua
titik (vertex) yang dibuat pasti melalui vertex {a,b} dua kali). Akan tetapi
G2 memiliki hamilton path yaitu : a,b,d,c ; a,b,c,d dan beberapa
kemungkinan lain. Untuk G3 tidak memiliki hamilton path.
BAB VII
ALGORITMA GRAF
PROBLEM JALUR TERPENDEK (SHORTEST PATH PROBLEM)
Banyak persoalan yang dapat dimodelkan dengan graf terbobot (weighted
graph). Graf terbobot adalah suatu graf dengan masing-masing edge diberi bobot
dengan suatu nilai bilangan tertentu. Sebagai contoh sistem transportasi udara dapat
dimodelkan dengan graf terbobot, dimana setiap kota yang dilalui sebagai vertex dan
jalur penerbangan sebagai edge dalam graf dan beaya penerbangan sebagai bobot.
Untuk jalur penghubung 7 kota misalnya beaya penerbangan seperti terlihat dalam
gambar 7.1.
Gambar 7.1. Graf terbobot 7 kota di Amerika
Graf terbobot seperti dalam gambar 7.1. dapat mewakili banyak persoalan, misalnya
selain beaya penerbangan dapat diartikan beaya komunikasi untuk suatu jaringan
komputer , waktu respon oleh komunikasi komputer antar kota atau jarak (km) antar
dua komputer point-to-point dan lain sebagainya.
Berbagai persoalan muncul dengan model graf terbobot. Jika antara dua titik
ada beberapa jalur yang mungkin manakah jalur yang paling murah?. Jika suatu path
yang menghubungkan antara dua titik dalam graf dapat diwakili sebgai jumlah bobot
dalam setiap dua titik yang dilalui maka mencari jalur terpendek dalam suatu path
dapat diartikan mencari jalur sedemikian sehingga jumlah bobot yang dilalui adalah
minimal. Persoalan seperti memegang peran penting dalam penentuan route paket
48
Algoritma Graf (Bab VII))
Amir Hamzah/ Teknik Informatika
49
data dalam suatu jaringan komputer.
Beberapa algoritma diajukan oleh para ahli. Dua yang terpenting akan dibahas
dalam bab ini, yaitu algoritma Dijkstra's.
4. Algortima Dijkstra's untuk Shortest Path Problem
Algoritma jalur terpendek dari suatu graf terbobot G ditemukan oleh Dijkstra's,
seorang ahli matematik bangsa Belanda pada tahun 1959. Untuk ilustrasi dari ide
Dijkstra's dapat diambil sampel misalkan dimiliki graf terbobot seperti gambar 7.2.
Tentukan jalur terpendek untuk suatu path dari a ke z. Meskipun jawaban dapat
dilihat sepintas langsung , namun langkah-langkah dapat digunakan untuk ilustrasi
algoritma Dijkstra's.
Gambar 7.2. Graf terbobot
Jawab: Dua kemungkinan yang ada untuk jalur yang bermula dari a (dimana
awal jalur dimulai) adalah a,b dan a,d. Karena dari dua jalur tersebut yang terkecil
adalah a,d maka diambil jalur a,d sebagai jalur awal. Selanjutnya dari titik d hanya
ada satu kemungkinan jalur , yaitu d,e. Dari titik d ada dua kemungkinan jalur, yaitu
e,b dan e,z ; karena e,z adalah jalur yang lebih pendek maka e,z dipilih. Setelah e,z
terpilih ternyata titik akhir jalur telah didapat, dengan demikian jalur terpendek yang
dihasilkan adalah jalur : a,d,e,z.
Jawaban diatas merupakan penemuan jawaban yang relatif mudah tanpa
menggunakan algoritma resmi. Akan tetapi untuk ukuran graf yang cukup besar
persoalan akan menjadi sulit hanya dengan cara inspeksi dan memerlukan algoritma
yang formal. Pemikiran langkah-langkah seperti diatas diuliskan oleh Dijkstra dalam
suatu algoritma yang dapat diuliskan sebagai berikut.
Penjelasan algoritma Dijkstra's dapat diterangkan sebagai berikut: mula-mula
memberi label a dengan 0 dan semua vertex yang lain dengan nilai ∞ . Digunakan
notasi L0(a)=0 dan L0(v)= ∞. Subscript 0 memiliki maksud sebelum ada iterasi (
Algoritma Graf (Bab VII))
Amir Hamzah/ Teknik Informatika
50
tanda 0 berarti iterasi "ke-0"). Label 0 bermakna panjang jalur terpendek dari a ke
titik tersebut (anggap bahwa path hanya mengandung satu vertex yaitu a).
Algoritma Dijkstra's berproses dengan suatu himpunan vertex yang jelas, sebut
sebagai Sk , yaitu set vertex setelah iterasi ke-k. Mula-mula S diset dengan sebagai
himpunan kosong ∅. Himpunan Sk dibentuk dari Sk-1 dengan ditambah vertex u
(vertex diluar Sk-1) dengan label terkecil. Setelah u dimasukkan ke dalam Sk semua
label dari vertex diluar Sk diupdate sedemikian sehingga Lk(v), label vertex v pada
iterasi ke k adalah jalur terpendek dari a sampai v dengan melibatkan hanya vertex-
vertex dalam Sk.
Andaikan v adalah vertex tidak dalam Sk. Untuk meng-update label dari v , catat
bahwa Lk(v) adalah panjang jalur terpendek dari a ke v dengan menggunakan vertex
yang ada dalam Sk. Updating dapat dilakukan dengan menggunakan : jalur
terpendek dari a ke v dengan menggunakan vertex dalam Sk. Ini dipilih salah satu
dari dua kemungkinan, yaitu :
1. Jalur terpendek dari a ke v hanya menggunakan vertex yang ada dalam Sk-1 atau :
2. Jalur terpendek dari a ke u pada iterasi ke k-1 ditambah dengan panjeng (u,v)
atau dapat ditulis : Lk(a,v)=min{Lk-1(a,v) , Lk-1(u,v)+w(u,v) }
Algoritma Dijkstra's Procedure Dijkstra(G:weighted connected simple graph, with all weights positive) {G has vertices a=v0,v1,...,vn=z and weights w(vi,vj) where w(vi,vj)=∞ if { vi,vj } not an edge in G} for i:=1 to n L(vi)= ∞ L(a):=0 S:=∅ {the label are now initialized so that the label of a is zero and other labels are ∞ and S is the empty set} while z ∈ S begin u:= a vertex not in S with L(u) minimal S:= S ∪ {u} For all vertex not in S If L(u)+w(u,v) < L(u) then L(v):=L(u)+w(u,v) {this adds a vertex to S with minimal label and updates the labels of vertices not in S} end {L(z) = length of shortest path from a to z}
Algoritma Graf (Bab VII))
Amir Hamzah/ Teknik Informatika
51
Sebagai ilustrasi dari langkah-langkah algoritma Dijkstra's adalah sebagai berikut :
Contoh: Temukan jalur terpendek untuk graf terbobot dalam gambar 7.3.
Gambar 7.3. Pelacakan dengan Dijkstra
Jawab:
Penelusuran dimulai dengan memberi bobot sebagai berikut :
Langkah 0 : L0(a)=0; L0(b)= ∞, L0(c)= ∞ , L0 (d)= ∞ , L0 (e)= ∞ dan L0 (z)= ∞
S= ∅
Langkah 1: Dari titik asal a, update bobot vertex yang dapat dibuat jalur dari a, yaitu
vertex b dan vertex c. Didapat untuk b bobotnya =4 (a) dan c bobotnya 2
(a). Maka dipilih c. Sehingga S={a,c}
Langkah 2: Update bobot semua vertex yang terhubung ke titik c melaluui semua
vertex yang telah ada dalam S yaitu {a,c}, yaitu : vertex b=2+1=3 ;
vertex d=2+8=10 dan vertex e=2+10=12. Dipilih terpendek adalah b
sehingga vertex b ditambah kan ke dalam S, menjadi S={a,c,b}
Langkah 3: Update bobot semua vertex yang terhubung ke titik b melalui semua
vertex yang telah ada dalam S yaitu {a,c,b}, yaitu : vertex d=2+1+5=8.
Hanya satu pilihan sehingga vertex d ditambahkan ke dalam S menjadi
S={a,c,b,d}
Langkah 4: Update bobot semua vertex yang terhubung ke titik d melalui semua
vertex yang telah ada dalam S yaitu {a,c,b,d}, didapat : vertex
z=2+1+5+6=14 dan vertex e=2+1+5+2=10 . Dipilih yang terkecil
Algoritma Graf (Bab VII))
Amir Hamzah/ Teknik Informatika
52
bobotnya, yaitu bobot e. Dengan demikian vertex e ditambahkan ke
dalam S, menjadi S={a,c,b,d,e}
Langkah 4: Update bobot semua vertex yang terhubung ke titik e melalui semua
vertex yang telah ada dalam S yaitu {a,c,b,d,e}, didapat satu
kemungkinan saja yaitu vertex z=2+1+5+2+3=13. Dengan demikian
vertex z ditambhakan kedalam S didapat jalur S={a,c,b,d,e,z}. Karena z
sudah ada dalam S maka algoritma selessai. Didapat jalur terpendek
adalah a,c,b,d,e,z dengan panjang jalur 13.
Untuk ilustrasi langkah-langkah Dijkstra's ini dapat diikuti gambar 8.4. Dalam
gambar setiap langkah vertex yang dipilih diberi tanda lingkaran dan vertex yang
dilaluu dalam updating ditulis di dalam kurung.
BAB VIII
TREE
8.1. PENGERTIAN TREE
Tree (pohon) merupakan suatu bentuk khusus dari graf, tepatnya adalah
suatu graf yang tidak memiliki simple circuit. Secara formal dudefinisikan sebagai :
Definisi : Tree adalah graf tak berarah yang semua vertex terhubung tanpa simple
circuit.
Contoh :Untuk memperjelas definisi tersebut dapat dilihat macam-macam graf
dalam gambar 8.1, yaitu graf G1,G2,G3 dan G4. Manakah yang termasuk
tree dan untuk yang bukan tree apakah alasannya.
G1 G2 G3 G4
Gambar 8.1. Graf yang berupa tree dan bukan tree
Jawab: G1 dan G2 adalah tree karena keduanya adalah graf terkoneksi tanpa simple
circuit. G3 adalah bukan tree karena ada simpel circuit, yaitu jalur yang
melibatkan vertex {a,b,e,d}. G4 bukanlah suatu tree karen tidak semua
vertex terhubung (G4 terdiri dua graf, yaitu : {c,e,d,b} dan graf {a,f}
8.2. BEBERAPA TERMINOLOGI TREE
Ada beberapa terminologi terkait dengan tree. Karena istilah tree lahir dari
konteks biologi, maka terminologi tree juga terkait dengan istilah dalam bilogi.
1. Root dan Rooted Tree
Dalam suatu graf yang dibentuk menjadi suatu tree, suatu vertex tertentu dapat
dipilih menjadi root. Seperti halnya pengertian root (akar) dari suatu pohon yang
53
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
54
merupakan landasan dasar berdirinya suatu pohon, maka vertex yang dijadikan
sebagai root akan menjadi dasar dimana vertex-vertex lain dalam tree adalah
keturunan (ancestor) dari vertex tersebut. Dengan demikian dari suatu graf yang
sama dapat dibangun suatu tree yang berbeda karena pemilihan root yang
berbeda. Tree beserta rootnya disebut sebagai Rooted Tree. Perhatikan
pembentukan suatu tree T menjadi rooted tree dalam gambar 8.2
(a) (b) (c)
Gambar 8.2. Rooted Tree ; (a) Tree asli ; (b) Tree dengan a sebagai root Tree dengan c sebagai root
2. Parent, a child dan sibling
Dalam suatu rooted tree suatu titik (kecuali root) selalu merupakan anak (child)
dari suatu parent di atasnya. Untuk gambar 8.2 (b), vertex b,c,d adalah
keturunan dari vertex (orang tua) a. Vertex b,c dan d merupakan suatu sibling,
karena memiliki parent yang sama.
3. Ancestor dan descendant
Ancestor dari suatu vertex adalah seluruh vertex (selain root) dalam jalur
penurunan dari root sampai vertex tersebut. Sedangkan descendant dari suatu
vertex v adaah seluruh vertex dalam tree yang memiliki v sebagai ancestornya.
4. Internal vertices dan leaf
Vertex yang tidak memiliki parent disebut sebagai root. Vertex yang tidak
memiliki children disebut sebagai leaf. Diantaranya , yaitu vertex yang memiliki
parent dan juga children disebut sebagai internal vertex.
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
55
8.3. SPANNING TREE
Perhatikan sistem perhubungan dalam suatu pertambangan seperti dalam
gambar 8.3 (a). Pada setiap musim dingin seluruh jalur tidak dapat dilintasi karena
tertutup salju. Departemen transportasi pertambangan berkeinginan untuk
"membersihkan" salju dari jalan sedemikian sehingga setiap kota masih tetap dapat
terhubung. Keperluan yang dipertimbangkan adalah bagaimana seminimal mungkin
memilih jalur penghubung sehingga beaya pembersihan salju akan menjadi minimal.
Misalkan salah satu hasil adalah seperti dalam gambar 8.3(b). Problem ini
diselesaikan dengan graf terhubung dengan jumlah edge minimum yang
menghubungkan semua vertex. Terlihat bahwa untuk menghubngkan 6 kota (vertex)
minimal harus mimiliki 5 edge, untuk menjamin bahwa pasti ada suatu path yang
dapat dibuat dari sembarang 2 kota. Terlihat bahwa graf seperti ini pasti merupakan
suatu tree.
(a)
(b)
Gambar 8.3. (a). Sistem transportasi; (b) Set jalur yang dibersihkan
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
56
Definisi : Apabila G adalah suatu graf. Spanning tree dari graf G adalah suatu sub-
graf dari G yang mengandung semua vertex dari G sedemikian sehingga
ada jaminan bahwa setiap dua vertex dalam G selalu dapat dtemukan
suatu path.
Contoh : Tentukan spanning tree dari simple graf gambar 8.3. berikut.
Gambar 8.3. Simple graf G
Jawab : Graf G terhubung , tetapi bukan merupakan suatu tree karena mengandung
beberapa circuit. Untuk menghilangkan circuit langkah pertama ditempuh
dengan menghilangkan edge {a,e} (Gambar 8.4.(a), kemudian edge {e,f}
(Gambar 8.4 (b) ), dan terakhir menghilangkan edge (c,g} (Gambar
8.4.(c)).
(a) (b) (c)
Gambar 8.4. Pembentukan spanning tree
8.4. ALGORITMA UNTUK MEMBANGUN SPANNING TREE
Membangun spanning tree dari suatu graf dengan cara satu demi satu
menghilangkan edge yang membentuk circuit merupakan cara yang tidak efisien
karena paling tidak harus diselidiki dulu ada tidaknya circuit, dan ini merupakan
pekerjaan yang bertele-tele untuk ukuran graf yang besar. Cara yang lebih baik dari
cara di atas adalah membangun spanning tree dengan menambahkan edge pada titik-
titik graf sedeimikan sehingga dihasilkan suatu spanning tree yang diinginkan.
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
57
1. Algoritma Depth-First Search
Algoritma ini dimulai dengan memilih (sembarang) vertex sebagai root. Penyusunan
spanning tree dimulai dengan memilih vertex tetangga yang terhubung ke vertex
yang terpilih sebagi anak (dengan catatan vertex tersebut belum dimasukkan ke
dalam tree), dilanjutkan terus-menerus sampai tidak ada lagi vertex yang dapat
dimasukkan ke dalam tree. Jika telah mencapai leaf, langkah diulang mundur satu
level dan dimulai lagi mencari vertex yang belum masuk, demikian seterusnya
sampai seluruh vertex tersusun dalam suatu tree. Untuk memperjelas konsep ini
perhatikan penyusunan spanning tree dari graf gambar 8.5, dimulai dengan
sembarang vertex (dipilih vertex f) sebagai root.
Gambar 8.5. Graf connected G
(a) (b) (c) (d) (e)
Gambar 8.6. Langkah penyusunan spanning tree dengan metode Depth-First Search
Langkah penyusunan dimulai dengan vertex f sebagai root. Tetangga f adalah vertex
d,e,g dan h; dipilih tetangga (sembarang) yaitu g sebagai anak. Dari vertex g, vertex
tetangga yang belum masuk tree adalah (hanya satu) h, sehingga dipilih h sebagai
anak g. Dari vertex h ada dau kemungkinan vertex lain, yaitu i dan k; dipilih k
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
58
sebagai anak h; dan selanjutnya h hanya memiliki satu kemungkinan anak yaitu k.
Setelah k dimasukkan kedalam tree, k adalah leaf, maka langkah mundur ke vertex
sebelumnya yaitu k, dan k tidak memiliki kemungkinan anak lain sehingga langkah
mundur lagi ke vertex h, dan ternyata ada vertex tetangga lain yang dapat dipilih ,
yaitu i; maka dipilih i sebagai anak h. Selanjutnya dilakukan langkah mundur ke
vertex g (tak aa kemungkinan lain), sehingga mundur lagi ke vertex h, yang masih
ada vertex d dan e yang belum dipilih. Proses sampai selesai dapat dicermati dari
gambar 8.6 dari (a) sampai (e).
2. Algoritma Breadth-First Search
Pada langkah awal algortima Breadth-First Search adalah sama dengan
Depth-First Search, yaitu dimulai dengan memilih (sembarang) vertex sebagai
root. Selanjutnya seluruh vertex yang menjadi tetangga dari root tersebut diubah
menjadi anak dari root tersebut. Vertex ini menjadi vertex dalam level 1 dalam
tree. Penyusunan diteruskan dengan memilih tetangga dari seluruh vertex dalam
level 1 sepanjang tidak membentuk circuit. Demikian seterusnya sampai semua
vertex dalam graf tersusun ke dalam tree.
Untuk ilustrasi perhatikan penyusunan spanning tree dari graf dalam gambar
8.7.
Gambar 8.7. Graf untuk disusun spanning tree
Hasil penyusunan (dimulai dengan memilih vertex e sebagai root) adalah dalam
langkah-langkah pada gambar 8.8.
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
59
Gambar 8.8. Penyusunan spanning tree dengan Breadth-First Search
8.5. ALGORITMA UNTUK MINIMAL SPANNING TREE
Andaikan sebuah perusahaan akan membangun jaringan komputer dalam 5
titik . Setiap pasangan dari dua titik terminal diandaikan dapat dihubungkan
dengan leased line (Lihat gambar 8.9). Link seperti apakah yang harus dibangun
sehingg beaya sambungan lima komputer tersebut menjadi minimal. Persoalan
ini adalah persoalan membangun spanning tree yang minimal.
Definisi : Minimal spanning tree dalam suatu graf terkoneksi adalah suatu
spanning tree yang mempunyai total jumlah bobot edge menjadi
minimal.
Gambar 8.9. Beaya antar titik komputer dalam jaringan
Ada beberapa algoritma yang dapat disusun untuk mencari spanning tree yang
minimal. Berikut akan dibahas dua diantaranya.
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
60
8.5.1. Algoritma Prim's
Procedure Prim(G:weighted connected undirected graph with n vertices} T:= a minimum-weight edge For i:=1 to n-2 Begin e:= an edge of a minimum weight incident to vertex in T and not forming a simple circuit in T
if added to T T:= T with e added End { T is minimal spannng tree in G} Sebagai gambaran kita terapkan algoritma Prims untuk jaringan komputer sebagai
berikut :
Langkah 1: Pilih edge yang minimal dari semua edge. Diperoleh :{Chicago-San
Fransisco = 700)
Langkah 2 : Dari salah satu dari dua kota {Chicago atau San Fransisco} pilih edge
tetangga yang minimal yang dapat digandengkan. Diperoleh jalur {San
Fransisco -Denver = 800}
Langkah 3 : Dari salah satu dari tiga kota{Chicago, San Fransisco, Denver} pilih
edge tetangga yang minimal yang dapat digandengkan ke salah satu
kota tersebut. Diperoleh jalur {Chicago -New York = 1200).
Langkah 4 : Dari salah satu dari empat kota{Chicago, San Fransisco, Denver, New
York} pilih edge tetangga yang minimal yang dapat digandengkan ke
salah satu kota tersebut. Diperoleh jalur {New York -Atlanta = 900}
Selesai : Diperoleh jalur spanning tree minimal : Chicago, San Fransisco, Denver,
New York,Atlanta. Lihat Gambar 8.10.
TREE (Bab VIII))
Amir Hamzah/ Teknik Informatika
61
Gambar 8.10. Hasil minimal spanning tree dengan algoritma Prim
8.5.2. Algoritma Kruskal's
Procedure Kruskal(G:weighted connected undirected graph with n vertices} T:= empty graph For i:=1 to n-1 Begin e:= any edge in G with smallest weight that does not form a simple circuit when added to T T:= T with e added End {T with minimal spanning tree} Untuk persoalan jaringan komputer 5 kota dapat dilacak proses mencari minimal
spanning tree dengan algoritma Kruskal adalah sebagai berikut :
Langkah 1: Edge minimal adalah Chicago-San Fransisco, 700
Langkah 2 : Edge minimal selanjutnya adalah San Fransisco-Denver, 800
Langkah 3 : Edge minimal selanjutnya adalah New York- Atlanta San , 900
Langkah 4 : Edge minimal terakhir ditambahkan adalah New York-Chicago, 1200
Selesai: Hasil spanning tree sama dengan metode Prim
DAFTAR PUSTAKA Johnsonbaugh, R., 1998, Matematika Diskrit, edisi Bahasa Indonesia, Jilid 1,
Prenhallindeo, jakarta. Kolman B. And Busby, R.C., 1987, Discrete Mathematical Structures for Computer
Science, 2nd ed, Prentice Hall, Inc., New Jersey. Rosen, K.H., 1991, Discrete Mathematics and Its Applications, 2nd ed, McGraw
Hill, New York. Scaums Outline Series, 1992, 2000 Solved Problem in Discrete Mathematics,
McGraw Hill, New York