ALGORITMA DAN BILANGAN BULAT 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 : PROSES ALGORITMA CONTOH LANGKAH DALAM ALGORITMA 1. MEMBUAT KUE RESEP KUE MASUKKAN TELUR KE DALAM WAJAN, KOCOK SAMPAI MENGEMBANG 2. KEGIATAN SEHARI-HARI JADWAL HARIAN PUKUL 15.00 : TIDUR SIANG, PUKUL 16.00 : MEMBUAT PR
3. MENGISI VOUCHER KARTU PRABAYAR TELEPON GENGGAM (HP) PANDUAN PENGISIAN TEKAN NOMOR 888 MASUKKAN NOMOR VOUCHER 14 DIGIT
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 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) 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. tetapi jika n ≠ 0, lanjutkan ke langkah 2. Bagilah m dgn n dan misalkan r adalah sisanya. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah 1 Catatan: Jika m ≤ n, maka pertukarkan nilai m dan n.
KOMBINASI LANJAR (LINEAR COMBINATION) Teorema 5.4. Misalkan a dan b adalah dua buah bil. bulat positif, maka terdpt bil. bulat m dan nm sedemikian shg PBB(a, b) = ma + nb. Teorema 5.4 menyatakan bhw PBB dua buah bil. bulat a dan b dpt dinyatakan sbg kombinasi lanjar a dan b dgn koefisien-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) 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