420 likes | 842 Views
BAB 5. ALGORITMA DAN BILANGAN BULAT. DEFINISI ALGORITMA. ALGORITMA ADALAH URUTAN LANGKAH-LANGKAH LOGIS PENYELESAIAN MASALAH YANG DISUSUN SECARA SISTEMATIS. CONTOH ALGORITMA DALAM KEHIDUPAN SEHARI-HARI :. NOTASI UNTUK ALGORITMA. NOTASI KALIMAT DESKRIPTIF
E N D
BAB 5 ALGORITMA DAN BILANGAN BULAT
DEFINISI ALGORITMA • ALGORITMA ADALAH URUTAN LANGKAH-LANGKAH LOGIS PENYELESAIAN MASALAH YANG DISUSUN SECARA SISTEMATIS
NOTASI UNTUK ALGORITMA • NOTASI KALIMAT DESKRIPTIF • NOTASI BAHASA KOMPUTER/BAHASA PEMROGRAMAN • NOTASI PSEUDOCODE
1. NOTASI KALIMAT DESKRIPTIF • Setiap langkah biasanya diawali dengan kata kerja seperti ‘ baca’, ‘hitung’, ‘masukkan’, ‘bagi’, ‘ganti’, dan sebagainya, sedangkan pernyataan bersyarat dinyatakan dengan ‘jika…maka…’. • Contoh : Algoritma Cari Elemen Terbesar • Asumsikan a1 sebagai elemen terbesar sementara. Simpan a1 ke dalam maks.
Bandingkan maks dengan elemen a2. jika a2 lebih besar dari maks, maka nilai maks diganti dengan a2. • Ulangi langkah 2 untuk elemen-elemen berikutnya (a3, a4,…,an). • Berhenti jika tidak ada lagi elemen yang dibandingkan. Dalam hal ini, maks berisi nilai dari elemen terbesar.
2. NOTASI BAHASA KOMPUTER • Dalam bahasa Pascal, algoritma mencari elemen terbesar ditulis abb : procedure CariElemenTerbesar (a : array_integer; n : integer; var maks : integer); {Mencari elemen terbesar di dalam array a[1..n]. Elemen terbesar akan disimpan di dalam maks. array_integer adalah tipe array yang sudah didefinisikan di dalam program utama dengan pendeklarasian berikut : const Nmaks = 1000; {ukuran maksimum array} type array_integer = array[1..Nmaks] of integer;}
var k : integer ; begin maks := a[1]; for k := 2 to n do if a[k] > maks then maks := a[k]; end;
3. NOTASI PSEUDOCODE • Contoh : procedure CariElemenTerbesar (input a1, a2,…, an : integer, output maks : integer ) {Mencari elemen terbesar di antara elemen a1, a2, …, an. Elemen terbesar akan disimpan di dalam maks. Masukan : a1, a2,…,an Keluaran : maks }
Deklarasi k : integer Algoritma : maks ← a1 for k ← to n do if ak > maks then maks ← ak endif endfor
BEBERAPA CONTOH ALGORITMA • ALGORITMA MEMPERTUKARKAN NILAI DARI DUA BUAH PEUBAH Contoh : procedure Tukar (input/output x, y : integer) {Mempertukarkan nilai x dan y Masukan : x dan y Keluaran : x dan y}
Deklarasi temp : integer Algoritma : temp ← x x ← y y ← temp
2. ALGORITMA MENCARI NILAI TERTENTU DI DALAM HIMPUNAN ELEMEN procedurePencarianBeruntun(input a1,a2,…,an : integer, x : integer, output idx : integer) {Mencari x di dalam elemen a1,a2,…,an.Lokasi (indeks elemen) tempat x ditemukan diisi ke dalam idx.Jika x tidak ditemukan, maka idx diisi dengan 0. Masukan : a1,a2,…,an Keluaran : idx}
Deklarasi k : integer Algoritma : k ← 1 while (k < n)and (ak ≠ x) do k← k + 1 endwhile {k = n or ak = x} if ak = x then {x ditemukan} idx ← k else idx ← 0 {x tidak ditemukan} endif
BILANGAN BULAT • BILANGAN BULAT ADALAH BILANGAN YANG TIDAK MEMPUNYAI PECAHAN DESIMAL, MISALNYA : 8, 21, 8765, -34, 0 DAN SEBAGAINYA
SIFAT PEMBAGIAN PADA BILANGAN BULAT • DEFINISI 5.2 : Misalkan a dan b adalah dua buah bilangan bulat dengan syarat a ≠ 0. a habis membagi b (a divides b) jika terdapat bilangan bulat c sedemikian sehingga b = ac. Notasi : a | b jika b = ac, c ∈ Z dan a ≠ 0
TEOREMA EUCLIDEAN : • Misalkan m dan n adalah dua buah bilangan bulat dengan syarat n > 0. jika m dibagi dengan n maka terdapat dua buah bilangan bulat unik q (quotient) dan r (remainder), sedemikian sehingga • m = nq + r dengan 0 ≤ r < n. • n disebut pembagi (divisor), m disebut yang dibagi (dividend), q disebut hasil bagi (quotient) dan r disebut sisa(remainder).
PEMBAGI BERSAMA TERBESAR • DEFINISI 5.3. • Misalkan a dan b dua buah bilangan bulat tidak nol. Pembagi bersama terbesar (PBB) dari a dan b adalah bilangan bulat terbesar d sedemikian sehingga d | a dan d | b. Dalam hal ini dinyatakan PBB(a, b) = d.
SIFAT-SIFAT DARI PBB: • TEOREMA 5.2. • Misalkan a, b, dan c adalah bilangan bulat. • Jika c adalah PBB dari a dan b, maka c | (a + b) • Jika c adalah PBB dari a dan b, maka c | (a – b) • Jika c | a, maka c | ab
TEOREMA 5.3 : • Misalkan m dan n adalah dua buah bilangan bulat dengan syarat n > 0 sedemikian sehingga m = nq + r, 0 ≤ r < n maka PBB(m,n) = PBB(n,r) Maksud Teorema 5.3 PBB dari dua buah bil. bulat sama dgn PBB dari salah satu bil. bulat tsb dengan sisa hasil pembagiannya.
ALGORITMA EUCLIDEAN • Algoritma Euclidean didasrkan pada aplikasi Teorema 5.3 secara berturut-turut sampai kita menemukan sisa pembagian bernilai nol • Diberikan dua buah bilangan tak negatif m dan n (m ≥ n ). Algoritma Euclidean berikut mencari pembagi bersama terbesar, PBB, dari kedua bilangan tsb, yaitu bil. bulat positif terbesar yg hbs membagi m dan n
Algoritma Euclidean • Jika n = 0 maka m adalah PBB(m, n); stop. tetapijika n ≠ 0, lanjutkankelangkah 2. • Bagilah m dgn n danmisalkan r adalahsisanya. • Gantinilai m dengannilai n dannilai n dengannilai r, laluulangkembalikelangkah 1 Catatan: Jika m < n, makapertukarkannilai m dan n.
KOMBINASI LANJAR (LINEAR COMBINATION) • Teorema 5.4. Misalkan a dan b adalahduabuahbil. bulatpositif, makaterdptbil. bulat m dan n sedemikianshg PBB(a, b) = ma + nb. Teorema 5.4 menyatakanbhw PBB duabuahbil. bulat a dan b dptdinyatakansbgkombinasilanjar a dan b dgnkoefisien-koesifiennya.
Relatif Prima : • DEFINISI 5.4 : • Dua buah bilanganbulat a dan b dikatakan relatif prima jika PBB(a, b) = 1
Aritmetika Modulo • DEFINISI 5.5. Misalkan a adalah bil. bulat dan m adalah bilangan bulat > 0. operasi a mod m memberikan sisa jika a dibagi dgn m. Dgn kata lain, a mod m = r sedemikian shg a = mq + r, dgn 0 ≤ r < m Notasi : a mod m = r sedemikian shg a = mq + r, dgn 0 ≤ r < m
KONGRUEN : • Kadang-kadang 2 buah bilangan bulat a dan b, mempunyai sisa yg sama jika dibagi dgn bilangan bulat positif m, dikatakan a dan b kongruen dalam modulo m, lambangnya a ≡ b (mod m). • Jika a tidak kongruen dgn b dlm modulus m, ditulis a ≢ b (mod m)
DEFINISI 5.6. • Misalkan a dan b adalah bilangan bulat dan m adalah bilangan > 0, maka a ≡ b (mod m) jika m habis membagi a-b.
Sifat-sifat pengerjaan hitung pada aritmetika modulo, khususnya thd operasi perkalian dan penjumlahan : • Teorema 5.5 :Misalkan m adalah bilangan bulat positif. • Jika a ≡ b (mod m) dan c adalah sembarang bilangan bulat maka • (a+c) ≡ (b+c)(mod m) • ac ≡ bc(mod m) • ap≡ bp (mod m) untuk suatu bilangan bulat tak negatif p. • Jika a ≡ b (mod m) dan c ≡ d (mod m), maka • (a+c) ≡ (b+d)(mod m) • ac ≡ bd(mod m)
BILANGAN PRIMA • DEFINISI 5.7.Bilangan bulat positif p (p > 1) disebut bilangan prima jika pembaginya hanya 1 dan p. TEOREMA 5.7 (THE FUNDAMENTAL THEOREM OF ARITHMETIC). Setiap bilangan bulat positif yg lebih besar atau sama dgn 2 dpt dinyatakan sbg perkalian satu atau lebih bilangan prima.
Cara menentukan apakah sebuah bilangan merupakan prima atau bukan : • Perhatikan faktor prima dari sebuah bilangan selalu lebih kecil atau sama dengan akar kuadart dari bilangan tsb. • Jadi utk menguji apakah n mrp bilangan prima atau komposit (bilangan selain prima), cukup membagi n dgn sejumlah bil. prima, mulai dari 2, 3, 5,…, bil.prima ≤√n. • Jika n habis dibagi dgn salah satu dari bil. prima tsb, maka n adl bil. komposit. Jika tdk, maka n adl bil. prima.
KRIPTOGRAFI • Kriptografi adalah ilmu sekaligus seni utk menjaga kerahasiaan pesan (data atau informasi) dgn cara menyamarkannya (to crypt artinya menyamar) menjadi bentuk yg tdk mempunyai makna. • Pesan yg dirahasiakan dinamakan plainteks (plaintext, artinya teks jelas yg dpt dimengerti) • Pesan hasil penyamaran disebut chiperteks (chipertext, artinya teks tersandi).
Proses penyamaran dari plainteks ke chiperteks disebut enkripsi (encryption) • Proses pembalikan dari chiperteks ke plainteks disebut dekripsi (decryption) • Kriptografer menggunakan enkripsi utk merahasiakan pesan dan mendeskripsikannya kembali. • Kriptanalis (cryptanalyst) mempelajari metode enkripsi dan chiperteks dgn tujuan menemukan plainteksnya. • Kriptologi (cryptology) adalah studi mengenai kriptografi dan kriptanalisis.
Algoritma Kriptografi : • Jika kunci untuk proses enkripsi sama dgn kunci utk dekripsi,maka algoritma kriptografinya disebut algoritma simetri, contoh : DES (Data Encryption Standard) • Jika kunci utk proses enkripsi berbeda dgn kunci utk dekripsi, maka algoritmanya disebut algoritma nirsimetri , contoh : RSA (Rivest-Shamir-Adleman)
Algoritma RSA : • Pilih dua buah bilangan prima sembarang, sebut a dan b. Jaga kerahasiaan a dan b ini. • Hitung n = a x b. Besaran n tdk dirahasiakan. • Hitung m = (a-1) x (b-1). Sekali m telah dihitung, a dan b dpt dihapus utk mencegah diketahuinya oleh pihak lain. • Pilih sebuah bilangan bulat utk kunci publik, sebut namanya e, yg relatif prima thd m.
Bangkitkan kunci dekripsi, d, dgn kekongruenan ed ≡ 1 (mod m). Lakukan enkripsi thd isi pesan dgn persamaan ci = pie mod n, yg dlm hal ini pi adalah blok plainteks, ci adalah chiperteks yg diperoleh, dan e adalah kunci enkripsi (kunci publik). Harus dipenuhi persyaratan bahwa nilai pi hrs terletak dlm himpunan nilai 0,1,2,…,n-1 utk menjamin hsl perhitungan tdk berada di luar himpunan.
Proses dekripsi dilakukan dgn menggunakan persamaan pi = cid mod n, yg dlm hal ini d adalah kunci dekripsi.
FUNGSI HASH : • Data yg disimpan di dlm memori komputer perlu ditempatkan dlm suatu cara sedemikian shg pencariannya dpt dilakukan dgn cepat. • Setiap data yg berupa record mempunyai field kunci yg unik yg membedakan suatu record dgn record lainnya. • Fungsi hash digunakan utk menempatkan suatu record yg mempunyai nilai kunci k.
Fungsi hash yg paling umum berbentuk h(k) = k mod m Yg dalam hal ini m adalah jumlah lokasi memori yg tersedia. Fungsi h diatas menempatkan record dgn kunci k pd lokasi memori yg beralamat h(k).
International Standard Book Number (ISBN) • ISBN trdiri atas 4 bagian kode : • Kode yg mengindentifikasikan bhs • Kode penerbit • Kode yg diberikan scr unik kpd buku tsb • Sebuah karakter uji (dpt berupa angka atau huruf X utk merepresentasikan angka 10), digunakan utk mendeteksi kesalahan pd karakter ISBN.
Karakter uji dipilih sedemikian sehingga : • Untuk mendapatkan karakter uji, kita cukup menghitung mod 11 = karakter uji