You are on page 1of 65

DIKTAT KULIAH

MATEMATIKA DISKRIT

Oleh: Amir Hamzah

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI INSTITUT SAINS DAN TEKNOLOGI AKPRIND 2011

Logika proposisi (Bab 1)

Kata Pengantar Puji syukur dipanjatkan kehadirat Allah Subhanallah Wa Taala, 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

Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

i DAFTAR ISI

BAB I . BAB II. BAB III. BAB IV. BAB V. BAB VI.

Logika Proposisi 1 Logika Prdikatif .. 10 Himpunan, Relasi dan Fungsi . 16 Algoritma 26 Induksi dan Rekursi 32 Pengantar Teori Graf .. 40

BAB VI BAB VII

Algoritma Graf 48 Tree .. 53

Amir Hamzah/ Teknik Informatika

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 sebagai PROPOSISI. KEBENARAN dinamakan

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

Logika proposisi (Bab 1)

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. 3. 4.

Jepang adalah negara miskin juga Negara itu adalah negara miskin (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 :
Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

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 T F p 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. pq T F F F

P T T F F

q T F T F

Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

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. (pq) p 3. (pq) ( p) Jawab : Berdasarkan nilai awal p dan q dan tabel kebenaran adalah : 1. T F F F F 2. (TF) T (F) T (F) F F 3. (TF) ( 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. pq T T T F

P T T F F

q T F T F

Contoh 1.5. : Buatlah notasi-notasi yang sesuai untuk pernyataan-pernyataan berikut : 1. Tidak benar bahwa saya tidak datang ke pesta
Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

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. (pq) (q)(pr) Jawab: 1. p q T T FF F 2. ( p q) (q r) ( T T) (T T) ( T F) (T T) ( F) (T ) T 3. (pq) (q)(pr) (TT) (T)(TT) (T) (F)(T) (F) (F)(T) (F) (T) T

Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

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. pq F T T F

P T T F F

q T F 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 T T F F

q T F T F

p 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.

Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

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 F T pp T T pp F F

P T F

EKIVALENSI : ( )

Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

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 T T F F q T F T F

Langkah 2: Tambahkan satu kolom dan cari kebenaran p q . P T T F F q T F T F pq 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 T T F F q T F T F pq T T T F (p q) F F F T

Langkah 4: Tambahkan DUA kolom untuk p dan kolom q . Isikan kebenarnnya.

Amir Hamzah/ Teknik Informatika

Logika proposisi (Bab 1)

9 (p q) F F F T p F F T T q F T F T

P T T F F

q T F T F

pq T T T F

Langkah 5: Tambahkan satu kolom (terakhir) yaitu kolom proposisi : p q . Isikan kebenarnnya. Diperoleh : P T T F F q T F T F pq T T T F (p q) F F F T p F F T T q F T F T p q 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 2. Buktikan ekivalensi p q (pq) (rr) q

petunjuk : Untuk menguji ekivalensi melibatkan 3 variabel mula-mula susun 3 kolom kebenaran dari variabel penyusunnya, kolom p,q dan r.

Amir Hamzah/ Teknik Informatika

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)

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) Dimana: P = "seorang pelajar" Q= "mendapat korting" "Jika seseorang adalah pelajar maka ia akan dapat koritng" ditulis : P(x) Kalimat : "Jika seseorang rajin belajar dan ikut ujian , ia tak akan tinggal kelas" dapat dinotasikan sebagai : B(x) U(x) T(x) Q(x) Q(joko)

Dimana: B = "rajin belajar " U= "ikut ujian T="tinggal kelas"

1.5. Semesta Pembicaraan


Amir Hamzah/ Teknik Informatika

Logika predikatif (Bab 2)

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 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 Diubah menjadi proposisi yang SALAH "22+32>0" "02+02>0" dimungkinkan oleh semesta

Cara lain untuk merubah fungsi proposisi menjadi proposisi dapat juga dengan cara memberi kuantor (quantifier). Dikenal dua macam kuantor yaitu :

Amir Hamzah/ Teknik Informatika

Logika predikatif (Bab 2)

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
Amir Hamzah/ Teknik Informatika

Logika predikatif (Bab 2)

14

3. xy Q(x)="x2 + y >0" , x,y 4. xy 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

Amir Hamzah/ Teknik Informatika

Logika predikatif (Bab 2)

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) FFFT T

Amir Hamzah/ Teknik Informatika

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 : 1A;2A;5A 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 : XY 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)

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.

Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

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.
Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

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.

Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

20

Maka: R={ (2,4), (2,6), (3,3), (3,6), (4,4) } Jika ditulis ulang relasi R dalam bentuk tabel terlihat : X 2 2 3 3 4 Y 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

Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

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 xy 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

Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

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"
Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

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:
a b c d 1 2 3 4 5 Bukan relasi karena tidak memenuhi syarat 1. Gambar 3.5. Bukan Relasi

Y
1 2 3 4 5 Bukan relasi karena tidak memenuhi syarat 2. Gambar 3.6. Bukan Relasi

a b c d

Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

24

a b c d

1 2 3 4 5

Relasi : Syarat 1 dan 2 dipenuhi Gambar 3.7. Relasi

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
132 15 558 32

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
Amir Hamzah / Teknik Informatika

Himpunan, Relasi dan Fungsi (Bab III)

25

tabrakan(collision). Bagaimana mengatasi tabrakan maka teknik-teknik hashing dapat diperdalam pada kesempatan lain.

Amir Hamzah / Teknik Informatika

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)

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 sehingga Max berisi 6. Langkah 3: bandingkan Max dengan c Max<c ? 6<3? Salah maka tidak Max<b? 2<6? Benar maka Max diisi b,

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)

Amir Hamzah/ Teknik Informatika

Algoritma (Bab IV)

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. 7. 8. End 9. Return(besar) 10. End(mencari-maks) If si>besar then besar:=si i:=i+1

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
Amir Hamzah/ Teknik Informatika

Algoritma (Bab IV)

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 bilanganbilanagn 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
Amir Hamzah/ Teknik Informatika

Algoritma (Bab IV)

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) 4. Begin 5. 6. 7. 8. End 9. return(a) 10. End(cariFPB) Bagilah a dengan b untuk mendapat a=bq+r, 0<r<b a:=b b:=r do

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
Amir Hamzah/ Teknik Informatika

Algoritma (Bab IV)

31

secara rekursi. Dengan kata lain algoritma rekursi adalah penyelesaian langkahlangkah 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 4. do

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. 4. Else if n = 2 then Return (1) Else Return (Suku-ke-n(n-1)+ Suku-ke-n(n-2))

5. End(Suku-ke-n)

Amir Hamzah/ Teknik Informatika

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))

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. : 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

Langkah Dasar

Setelah langkah dasar dapat membuktikan bahwa pernyataan benar. Langkah Induksi : Harus dapat ditunjukkan bahwa i! > 2(i-1) Asumsikan bahwa i! > 2
(i-1)

benar untuk i=1,2,3n

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
Amir Hamzah/ Teknik Informatika

Induksi dan Rekursi (BabV))

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

Amir Hamzah/ Teknik Informatika

Induksi dan Rekursi (BabV))

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) (ii) 3S 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) Untuk x=3, y=6 maka menurut aturan (ii) Dst (3+3) S (3+6) S 6 S 9 S

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

Amir Hamzah/ Teknik Informatika

Induksi dan Rekursi (BabV))

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, U1 3, U2 5, .... U3 , 2n-1 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 ke2, 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 :

untuk n = 1 1 U(n) U(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:

Amir Hamzah/ Teknik Informatika

Induksi dan Rekursi (BabV))

37

Bagian definisi dasar

Bagian definisi rekursi

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 :
untuk n = 1 1 U(n) = 1 untuk n = 2 U(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! = 1x2x3x4xn
jawab :

dimiliki kenyatan : 1! = 1 2!=(1)x2 = 2. 1! 3!=(1x2)x3 = 3 . 2! n! =(1x2x(n-1)xn = n.(n-1)!

Amir Hamzah/ Teknik Informatika

Induksi dan Rekursi (BabV))

38

Dari kenyataan tersebut dapat didefinisikan suatu fungsi rekursi : 1 untuk n=1 f(n)=n! = n.f(n-1) untuk n>1 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 rekursi?


Jawab :

m dan n dapat dinyatakan secara

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 :

Amir Hamzah/ Teknik Informatika

Induksi dan Rekursi (BabV))

39

m untuk n=1 f(n.m)= n untuk m=1 n.f(n,m-1) untuk n>1, m>1


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 :
1 untuk n=0

f(x,n) = x.f(x,n-1)

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) 11) 12) 13) 14) Hasil:=1 If n>0 then Hasil:=x*caripangkat(x,n-1) return(Hasil) End caripangkat

Amir Hamzah/ Teknik Informatika

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))

41
graf jika G mengandung :

Suatu graf G=(V,E) disebut sebagai multiple

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)

Amir Hamzah/ Teknik Informatika

Pengantar Graf (Bab VI))

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 b a c a,d,e d c,e e a,c,d
Amir Hamzah/ Teknik Informatika

Pengantar Graf (Bab VI))

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 :

1 jika {vi, vj} edge dalam G aij = 0 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:

Amir Hamzah/ Teknik Informatika

Pengantar Graf (Bab VI))

44

A=
3. Incidency matrix

0 3 2 0

3 0 1 1

2 1 0 2

0 1 2 0

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 :
1 jika edge e j adalah incident dengan vi mij = 0 selainnya

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 0 0 0

1 0 1 0 0

1 0 0 1 0

0 0 1 1 0

0 0 0 1 1

0 0 1 0 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.

Amir Hamzah/ Teknik Informatika

Pengantar Graf (Bab VI))

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
Gambar 6.8. Model Graf

G3

Amir Hamzah/ Teknik Informatika

Pengantar Graf (Bab VI))

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
Gambar 6.9. Graf-graf

G3

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


Amir Hamzah/ Teknik Informatika

Pengantar Graf (Bab VI))

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.

Amir Hamzah/ Teknik Informatika

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))

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 (
Amir Hamzah/ Teknik Informatika

Algoritma Graf (Bab VII))

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 vertexvertex 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}

Amir Hamzah/ Teknik Informatika

Algoritma Graf (Bab VII))

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

Amir Hamzah/ Teknik Informatika

Algoritma Graf (Bab VII))

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.

Amir Hamzah/ Teknik Informatika

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))

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 berbeda. Tree beserta rootnya disebut sebagai Rooted Tree. pembentukan suatu tree T menjadi rooted tree dalam gambar 8.2 root yang Perhatikan

(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.

Amir Hamzah/ Teknik Informatika

TREE (Bab VIII))

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

Amir Hamzah/ Teknik Informatika

TREE (Bab VIII))

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 titiktitik graf sedeimikan sehingga dihasilkan suatu spanning tree yang diinginkan.

Amir Hamzah/ Teknik Informatika

TREE (Bab VIII))

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

Amir Hamzah/ Teknik Informatika

TREE (Bab VIII))

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.

Amir Hamzah/ Teknik Informatika

TREE (Bab VIII))

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.

Amir Hamzah/ Teknik Informatika

TREE (Bab VIII))

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.

Amir Hamzah/ Teknik Informatika

TREE (Bab VIII))

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

Amir Hamzah/ Teknik Informatika

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 McGraw Hill, New York Mathematics,

You might also like