Professional Documents
Culture Documents
MATEMATIKA DISKRIT
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI INSTITUT SAINS DAN TEKNOLOGI AKPRIND 2011
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.
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 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
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
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
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
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
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
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 : ( )
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 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
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.
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
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)
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 :
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
14
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.
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
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
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.
18
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
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.
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
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}.
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
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
22
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.
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
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
24
a b c d
1 2 3 4 5
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
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
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,
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)
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
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
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
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)
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)
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 :
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
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)
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
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
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
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
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:
37
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 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 :
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
Contoh :
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 :
39
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
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
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.
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
41
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.
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).
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.
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
43
(a)
(b)
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 :
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:
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
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
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.
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
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.
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
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.
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
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
b,c,e,d,a,b dan
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.
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.
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
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.
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
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}
51
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
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.
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
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}
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
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
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.
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.
55
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
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.
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)
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.
57
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.
(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
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).
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.
Hasil penyusunan (dimulai dengan memilih vertex e sebagai root) adalah dalam langkah-langkah pada gambar 8.8.
59
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
minimal.
Ada beberapa algoritma yang dapat disusun untuk mencari spanning tree yang minimal. Berikut akan dibahas dua diantaranya.
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.
61
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 McGraw Hill, New York Mathematics,