Analisis Algoritma & Struktur Data Fondasi Matematis
Topik bahasan Bentuk Asimptotis Matematika dasar Summation (Penjumlahan) Rekurensi Set Theory Prinsip Pencacahan
Bentuk Asimptotis Kerumitan (Complexity) suatu algoritma biasanya dinyatakan dalam bentuk asimptotis Ada 3 bentuk asimptotis Notasi T(n) = (g(n)) Notasi T(n) = O(g(n)) Notasi T(n) = Ω(g(n)) Definisi: Suatu fungsi f(n) dikatakan menjadi anggota dari himpunan (g(n)) apabila ada tetapan positif c1, c2, dan n0 sedemikian rupa sehingga f(n) berada diantara c1.g(n) dan c2.g(n), untuk semua nilai n n0, atau c1.g(n) f(n) c2.g(n) untuk n n0.
Contoh: andaikan f(n) = ½ n2 – 3n maka apakah kompleksitas f(n) = (n2) ? Cari c1 dan c2 sehingga: c1. n2 ½ n2 – 3n c2 n2 untuk semua n n0. bila faktor n2 dihilangkan , maka: c1 ½ - 3/n c2, atau : c2 ½ - 3/n dan c1 ½ - 3/n untuk n 7, maka c1=1/14 dan c2=1/2 Kesimpulan: f(n) = (n2).
Defenisi: Suatu fungsi f(n) dikatakan menjadi anggota himpunan O(g(n)) apabila ada tetapan positif c dan n0 sedemikian rupa sehingga f(n) berada diantara 0 dan c.g(n) untuk semua nilai n n0, atau 0 f(n) c.g(n) untuk n n0. Notasi (g(n)) lebih ketat dibanding O(g(n)), atau (g(n)) O(g(n)) Defenisi: Suatu fungsi f(n) dikatakan menjadi anggota himpunan (g(n)) apabila ada tetapan c dan n0 sedemikian rupa sehingga f(n) berada diatas c.g(n), untuk semua n n0, atau biasa ditulis dalam bentuk: 0 c.g(n) f(n), untuk semua n n0. Untuk dua fungsi f(n) dan g(n), maka f(n) = (g(n)) jika dan hanya jika f(n)=O(g(n)) dan juga f(n) = (g(n)).
Matematika Dasar Monotonicity: Suatu fungsi f(n) dikatakan “monoton bertambah” (monotonically increasing) apabila untuk m n ternyata f(m) f(n). Sejalan dengan itu maka f(n) dikatakan “monoton berkurang” (monotonically decreasing) apabila untuk m n ternyata f(m) f(n). Floor : Untuk setiap bilangan real x, floor(x) adalah bilangan integer terbesar yang lebih kecil atau sama dengan x, dan disimbol sebagai x .
Ceiling: Untuk setiap bilangan real x, ceiling(x) adalah bilangan integer terkecil yang lebih besar atau sama dengan x, dan disimbol sebagai x . Dengan demikian maka: (x – 1) < floor(x) x ceiling(x) < x+1 untuk setiap bilangan real x. Polinomial : polynomial n ber-derajat d adalah fungsi p(n) dalam bentuk: p(n) = ai ni untuk i=0 … d, dimana konstante a0, a1, a2, ... ad adalah koefisien dari polinomial dimana ad 0. Suatu polinomial disebut positif secara asimptotik apabila ad > 0, sehingga bisa dituliskan bahwa p(n) = (nd).
Exponential: Untuk setiap bilangan real a0 dan m, n maka berikut ini berlaku dalam eksponensial: a1 = a a-1 = 1/a (am)n = amn (an)m = (am)n am an = am+n Untuk bilangan e = 2.71828... berlaku relasi eskponensial: ex = 1 + x + x2 / 2! + x3 / 3! + ... = xi / i! utk i=0 s/d ex = 1 + x + (x2)
Beberapa sifat logaritma: a = blogb a logc (ab) = logc a + logc b Logaritma: Notasi logaritma yang akan digunakan adalah sebagai berikut: lg n = log2 n (logaritma basis 2) ln n = loge n (logaritma basis bilangan natural e) lgk n = (lg n)k ( pemangkatan logaritma) lg lg n = lg (lg n) (komposisi logaritma) Beberapa sifat logaritma: a = blogb a logc (ab) = logc a + logc b logb an = n logb a logb a = logc a / logc b logb (1/a) = - logb a logb a = 1/loga b alogb n = nlogb a
n! = (2 n) (n/e)n (1 + (1/n)) n! = O(nn) n! = (2n) n! = (n lg n) Factorial : Notasi n! dibaca sebagai faktorial n dapat didefinisikan untuk n 0, sebagai berikut: n! = 1 bila n=0, = n.(n-1)! bila n>0. dengan kata lain, n! = 1.2.3 ... N Pendekatan Stirling: n! = (2 n) (n/e)n (1 + (1/n)) n! = O(nn) n! = (2n) n! = (n lg n)
Fibonacci : bilangan Fibonacci didefinisikan sbb: F(i) = F(i-1) + F(i-2), untuk i 2. Berdasarkan definisi tersebut maka deret bilangan Fibonacci adalah sbb: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... Golden ratio: = (1 + 5) / 2 = 1.61803 ... ’ = (1 - 5) / 2 = -0.61803 ... Fibonacci F(i) = (i - ’i ) / 5.
Penjumlahan (Summation): a1 + a2 + a3 + ... + an = ai utk i=1 s/d n. (c.ak + bk) = c ak + bk untuk k=1 s/d n (f(k)) = ( f(k) ) untuk k =1 s/d n k = 1 + 2 + 3 + .. + n = n(n+1)/2 = (n2) xk = 1 + x + x2 + x3 + ... + xk, utk k = 0 s/d n = (xn+1 – 1) / (x – 1) Hn = 1 + ½ + 1/3 + ¼ + ... + 1/n = 1/k untuk k=1 s.d n (harmonik) Teleskopik: n (ak – ak-1) = an – a0 dan n-1 (ak – ak+1) = a0 – an
Product : n ak = a1.a2. a3. ... An Induksi Matematis: Buktikan bahwa persamaan benar untuk n=1 Buktikan bahwa juga benar untuk (n+1) Contoh: n k = ½ n(n+1) Untuk n=1, k = 1 terbukti karena ½ (1)(1+1) = 1. Untuk n+1, n+1 k = n k + (n+1) = ½ (n+1)(n+2), terbukti karena : = ½ n(n+1) + (n+1) = (n+1)( ½ n + 1) = (n+1) ( ½ (n+2) ) = ½ (n+1)(n+2)
Rekurensi Kompleksitas algoritma sering dinyatakan dalam bentuk persamaan rekurensi yang melibatkan fungsi asimptotis. Bentuk ini sebenarnya mewakili bentuk rekursif dari suatu program. Misalnya suatu progam “merge-sort” dinyatakan sbb: T(n) = (1) bila n=1 = 2 T(n/2) + (n) bila n > 1 Ada empat cara menyelesaikan rekurensi: subsitusi, iterasi, master dan metoda homogen
Metoda Subsitusi: Contoh: buktikan T(n) = 2T(n/2 + n adalah O(n lg n). Untuk suatu nilai c harus dibuktikan bahwa: T(n) c.n lg n, subsitusi n dengan n/2, maka T(n/2) c.[n/2] lg [n/2], tentu saja T(n) 2 (c. [n/2] lg [n/2] ) + n T(n) c.n lg [n/2] + n T(n) = c.n lg n – c.n.lg 2 + n T(n) = c.n lg n – c.n + n T(n) c.n lg n atau T(n) adalah O(n lg n)
Selesaikan T(n) = 3 T(n/4) + n T(n) = n + 3 T(n/4) Metoda Iterasi: Selesaikan T(n) = 3 T(n/4) + n T(n) = n + 3 T(n/4) T(n) = n + 3 (n/4 + 3 T(n/16)) T(n) = n + 3 (n/4 + 3 T(n/16 + 3 T(n/64))) T(n) = n + 3 n/4 + 9 n/16 + 27 T(n/64) dst T(n) n+3n/4 + 9n/16 + 27n/64 + ... + 3log4 n (1) n (3/4)i + (nlog4 3) = 4n + o(n) = O(n) Note: suku ke-i adalah 3i n/4i, habis ketika n/4i=1 atau i > log4 n.
Metoda Master: Bentuk umum : T(n) = a T(n/b) + f(n) Theorema: Bila a1 dan b>1 adalah tetapan dan f(n) adalah suatu fungsi, kemudian andaikan T(n) didefinisikan pada bilangan bulat positif melalui rekurensi: T(n) = a T(n/b) + f(n), dimana n/b bisa dinyatakan sebagai n/b atau n/b maka T(n) dapat dibatasi secara asimptotik, sebagai berikut: Bila f(n) = O(nlogb a - ), dimana >0 tetapan, maka T(n) = (nlogb a) Bila f(n) = (nlogb a), maka T(n) = (nlogb a lg n) Bila f(n) = (nlogb a + ), dimana >0 tetapan, dan bila a.f(n/b) c.f(n) dengan konstante c < 1, dan n cukup besar, maka T(n) = (f(n)).
Contoh: selesaikan T(n) = 9 T(n/3) + n Pada bentuk ini: a = 9, b=3, dan f(n) = n, sehingga dapat diterapkan kasus 1 sehingga T(n) = (nlogb a) = (nlog3 9) = (n2). Perlu diperhatikan bahwa f(n)=O(nlog3 9 - ) dengan =1. Selesaikan T(n) = T(2n/3) + 1. Pada bentuk ini: a=1, b=3/2, dan f(n)=1, sehingga nlogb a = nlog3/2 1 = n0 = 1 dengan demikian dapat diterapkan kasus 2, karena f(n)=(nlogb a) = (1), jadi solusinya adalah: T(n) = (lg n)
selesaikan melalui analogi: Rekurensi Homogen: a0 T(n) + a1 T(n-1) + a2 T(n-2) + ... + ak T(n-k) = 0 selesaikan melalui analogi: a0 xn + a1 xn-1 + a2 xn-2 + ... + ak xn-k = 0 Contoh: selesaikan T(n) – 3 T(n-1) – 4 T(n-2) = 0, n 0 dan kondisi awal T(0)=0, T(1)=1. Analogi: : x2 – 3 x – 4 = 0, x1= -1 dan x2= 4, shg T(n) = c1 (-1)n + c2 4n Subsitusi kondisi awal, memberikan c1= -1/5 dan c2 = 1/5, dengan demikian: T(n) = -1/5 (-1)n + 1/5 4n = 1/5 [ 4n – (-1)n ] = O(4n)
Rekurensi tak Homogen, bentuknya: a0 T(n) + a1 T(n-1) + a2 T(n-2) + ... + ak T(n-k) = bn P(n) dimana: b adalah tetapan, dan P(n) adalah polinomial dalam n berderajat d. Contoh: selesaikan T(n)=2 T(n-1) + 3n atau: T(n) – 2T(n-1) = 3n sehingga: b=3 dan P(n)=1 kalikan dengan 3 : 3 T(n) – 6 T(n-1) = 3n+1 ganti n dengan n+1 : T(n+1) – 2 T(n) = 3n+1 Perkurangkan keduanya : T(n+1) – 5 T(n) + 6 T(n-1) = 0 Persamaan karakteristik : x2 - 5 x + 6 = 0, solusinya (x-2)(x-3)=0 sehingga penyelesaiannya dapat dilakukan sebagaimana persamaan rekurensi homogen. T(n)=c1.(2n) + c2.(3n) atau O(3n)
Bila mungkin tuliskan bentuk tak homogen menjadi: (a0 xk + a1 xk-1 + a2 xk-2 + ... + ak ) (x – b)d+1= 0 Contoh: selesaikan T(n) – 2T(n-1) = (n+5)3n Disini b=3, P(n)=n+5, polinomial dengan d=1 Bentuk tak homogen menjadi (x-2)(x-3)1+1 atau (x-2)(x-3)2 Solusinya: T(n)=c1.2n + c2.3n + c3.n.3n = O(n.3n )
Set Theory Himpunan (set) adalah kumpulan objek yang disebut elemen himpunan atau anggota (member). Jika objek x adalah elemen dari suatu himpunan S, maka dituliskan sebagai: x S dan dibaca “x adalah elemen S”. jika y bukan anggota dari S maka ditulis sebagai y S. Bila 1,2 dan 3 adalah anggota dari himpunan S, maka ditulis: S = {1,2,3} adalah simbol untuk himpunan kosong (empty set), tanpa anggota Z adalah simbol untuk himpunan bilangan bulat (integer) { ... -2, -1, 0, 1, 2, ... } R adalah simbol untuk himpunan bilangan real N adalah simbol untuk himpunan bilangan natural { 0, 1, 2, 3, ...} adalah simbol “subset”, bila semua elemen A ada didalam B, maka A B adalah simbol “proper subset”, bila elemen A ada dalam B, tapi A B
Beberapa hukum untuk set: empty set laws : A = , A = A Operasi pada set: intersection AB = { x : x A dan x B } union AB = { x : x A atau x B } difference A – B = { x : x A dan x B } Beberapa hukum untuk set: empty set laws : A = , A = A idempotency laws : AA = A, AA = A commutative laws : AB = BA, AB = BA associative laws : A(BC) = (AB)C, A(BC) = (AB)C distributive laws : A(BC) = (AB) (AC), A(BC) = (AB) (AC) absorption laws : A(AB) = A, A(AB) = A DeMorgan’s laws : A – (BC) = (A – B)(A – C), A – (BC) = (A – B)(A – C) complement’s laws : ~A adalah set dimana semua elemen A tidak ada= U – A ~(~A) = A, A~A = 0, A~A = U (universe) ~(AB) = ~A ~B, ~(AB) = ~A ~B
Contoh: A = {a, b} dan B = {a, b, c} maka : (Cartesian product) dari himpunan A dan B disimbol AxB, adalah himpunan semua pasangan-berurutan (ordered pairs) Contoh: A = {a, b} dan B = {a, b, c} maka : A x B = { (a, a), (a,b), (a, c), (b, a), (b, b), (b, c) } Relasi: Relasi Biner, relasi antara dua objek, ditulis a R b, dimana (a, b) S. Contoh: { (a,b) : a, b N, a < b } Relasi Reflexive: adalah relasi a R a , R AxA yang berlaku bagi semua a A Relasi Symmetric, bila a R b maka juga b R a, misalnya ‘=‘ adalah symmetric
Relasi Transitive, apabila a R b dan b R c menyebabkan a R c, untuk semua a,b,c A. Contoh ‘=‘, ‘<‘ dan ‘ ‘ semuanya transitive Fungsi f pada himpunan A dan B merupakan relasi biner pada AxB sehingga untuk semua a A terdapat satu elemen b B sehingga (a,b) f. Hubungan fungsional sering ditulis sebagai: f : AB atau b = f(a). A disebut domain dan B disebut co-domain. Contoh: relasi biner f = { (a, b) : a N dan b = a mod 2 } adalah sebuah fungsi f : N {0,1} relasi biner g = {(a, b) : a N dan a + b adalah genap } bukan fungsi karena utk satu nilai a ada lebih dari satu nilai b yang memenuhi
Prinsip Pencacahan Rule of Sum: jumlah cara untuk memilih suatu elemen dari salah satu dari dua himpunan disjoint adalah jumlah kardinalitas dari himpunan tersebut. Apabila A dan B adalah dua himpunan berbatas yang disjoint (tidak ada elemen yang sama pada kedua himpunan) maka |AB| = |A| + |B|. Rule of Product : jumlah cara untuk memilih satu pasangan ter-urut adalah jumlah cara untuk memilih elemen pertama dari pasangan itu dikalikan dengan jumlah cara untuk memilih elemen keduanya. Apabila A dan B adalah dua himpunan berbatas, maka |AxB| = |A|.|B|.
Permutasi k dari n elemen ( k n) adalah: Permutasi: permutasi pada himpunan berbatas S adalah rentetan ber-urut dari semua elemen S dimana setiap elemen hanya boleh muncul satu kali. Sebagai contoh bila S={a, b, c} maka ada 6 permutasi dari S, yaitu: abc, acb, bac, bca, cab, cba. Permutasi dari himpunan dengan n elemen (n-set), adalah n! (n-faktorial). Permutasi k dari n elemen ( k n) adalah: n.(n-1).(n-2)...(n-k+1) = n! / (n-k)! Kombinasi: kombinasi sepanjang k, atau k-combination dari himpunan n-set S adalah k-subset dari S. Formula untuk mencacah jumlah k-combination dari n-set adalah: n! C(n,k) = ------------ k! (n – k)!
Binomial Coefficient: C(n,k) adalah koefisien binomial pada ekspansi (x + y)n sebagai berikut: (x + y)n = n C(n,k) xk yn-k Pascal ‘s Identity : C(n+1,k) = C(n,k-1) + C(n,k) Vandermonde’s Identity : C(m+n, r) = k C(m,r-k) C(n,k) utk k=0..r Pigeonhole Principle : Bila ada N objek ditempatkan dalam k lokasi, maka paling sedikit ada satu lokasi yang memuat N/k objek
Tugas Susun algoritma untuk menghitung bilangan Fibonacci mulai dari n=0 ..100 Buktikan bahwa k 3k = O(3n) ; k=1..n Selesaikan rekurensi T(n) = 2 T(n) + lg n dengan metoda subsitusi Selesaikan rekurensi T(n) = 3 T(n/4) + n lg n dengan metoda master Paling sedikit berapa mahasiswa dalam suatu kelas algoritma agar paling kurang ada enam orang yang akan menerima nilai yang sama dalam sistem penilaian A,B,C,D,E