ANALISIS ALGORITMA STRUKTUR DATA Fondasi Matematis Topik bahasan
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 c 1, c 2, dan n 0 sedemikian rupa sehingga f(n) berada diantara c 1. g(n) dan c 2. g(n), untuk semua nilai n n 0, atau c 1. g(n) f(n) c 2. g(n) untuk n n 0.
� � Contoh: andaikan f(n) = ½ n 2 – 3 n maka apakah kompleksitas f(n) = (n 2) ? Cari c 1 dan c 2 sehingga: c 1. n 2 ½ n 2 – 3 n c 2 n 2 untuk semua n n 0. bila faktor n 2 dihilangkan , maka: c 1 ½ - 3/n c 2, atau : c 2 ½ - 3/n dan c 1 ½ - 3/n untuk n 7, maka c 1=1/14 dan c 2=1/2 Kesimpulan: f(n) = (n 2).
� � Defenisi: Suatu fungsi f(n) dikatakan menjadi anggota himpunan O(g(n)) apabila ada tetapan positif c dan n 0 sedemikian rupa sehingga f(n) berada diantara 0 dan c. g(n) untuk semua nilai n n 0, atau 0 f(n) c. g(n) untuk n n 0. 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 n 0 sedemikian rupa sehingga f(n) berada diatas c. g(n), untuk semua n n 0, atau biasa ditulis dalam bentuk: 0 c. g(n) f(n), untuk semua n n 0. 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 a 0, a 1, a 2, . . . 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 a 0 dan m, n maka berikut ini berlaku dalam eksponensial: a 0 = 1 a 1 = 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 2 / 2! + x 3 / 3! +. . . = xi / i! utk i=0 s/d � ex = 1 + x + (x 2) �
� Logaritma: Notasi logaritma yang akan digunakan adalah sebagai berikut: � lg n = log 2 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 = logc a / logc b logb (1/a) = - logb a = 1/loga b alogb n = nlogb a
� 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! = (2 n) n! = (n lg n)
� Fibonacci : bilangan Fibonacci didefinisikan sbb: F(0) = 0, F(1) = 1, F(i) = F(i-1) + F(i-2), untuk i 2. Berdasarkan definisi tersebut maka deret bilangan Fibonacci adalah sbb: 0, 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): � a 1 + a 2 + a 3 + . . . + 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 = (n 2) � xk = 1 + x 2 + x 3 +. . . + 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 – a 0 dan n-1 (ak – ak+1) = a 0 – an �
� � Product : n ak = a 1. a 2. a 3. . 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) = 2 T( 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) �
� � � � 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+3 n/4 + 9 n/16 + 27 n/64 +. . . + 3 log 4 n (1) n (3/4)i + (nlog 4 3) = 4 n + o(n) = O(n) � Note: suku ke-i adalah 3 i n/4 i , habis ketika n/4 i =1 atau i > log 4 n.
� � � Metoda Master: Bentuk umum : T(n) = a T(n/b) + f(n) Theorema: Bila a 1 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) = (nlog 3 9) = (n 2). Perlu diperhatikan bahwa f(n)=O(nlog 3 9 - ) dengan =1. Selesaikan T(n) = T(2 n/3) + 1. Pada bentuk ini: a=1, b=3/2, dan f(n)=1, sehingga nlogb a = nlog 3/2 1 = n 0 = 1 dengan demikian dapat diterapkan kasus 2, karena f(n)= (nlogb a) = (1), jadi solusinya adalah: T(n) = (lg n)
� Rekurensi Homogen: � a 0 T(n) + a 1 T(n-1) + a 2 T(n-2) +. . . + ak T(n-k) = 0 � selesaikan melalui analogi: � a 0 xn + a 1 xn-1 + a 2 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: : x 2 – 3 x – 4 = 0, x 1= -1 dan x 2= 4, shg T(n) = c 1 (-1)n + c 2 4 n � Subsitusi kondisi awal, memberikan c 1= -1/5 dan c 2 = 1/5, dengan demikian: � T(n) = -1/5 (-1)n + 1/5 4 n = 1/5 [ 4 n – (-1)n ] = O(4 n)
� Rekurensi tak Homogen, bentuknya: a 0 T(n) + a 1 T(n-1) + a 2 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) + 3 n atau: T(n) – 2 T(n-1) = 3 n sehingga: b=3 dan P(n)=1 � kalikan dengan 3 : 3 T(n) – 6 T(n-1) = 3 n+1 � ganti n dengan n+1 : T(n+1) – 2 T(n) = 3 n+1 � Perkurangkan keduanya : T(n+1) – 5 T(n) + 6 T(n-1) = 0 � Persamaan karakteristik : x 2 - 5 x + 6 = 0, solusinya (x-2)(x-3)=0 sehingga penyelesaiannya dapat dilakukan sebagaimana persamaan rekurensi
� Bila mungkin tuliskan bentuk tak homogen menjadi: (a 0 xk + a 1 xk-1 + a 2 xk-2 +. . . + ak ) (x – b)d+1= 0 � Contoh: selesaikan T(n) – 2 T(n-1) = (n+5)3 n � 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)=c 1. 2 n + c 2. 3 n + c 3. n. 3 n = O(n. 3 n )
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
� Operasi pada set: � � � intersection A B = { x : x A dan x B } union A B = { 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 : A A = A, A A = A � commutative laws : A B = B A, A B = B A � associative laws : A (B C) = (A B) C, A (B C) = (A B) C � distributive laws : A (B C) = (A B) (A C), A (B C) = (A B) (A C) � absorption laws : A (A B) = A, A (A B) = A � De. Morgan’s laws : A – (B C) = (A – B) (A – C), A – (B C) = (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) � ~(A B) = ~A ~B, ~(A B) = ~A ~B �
(Cartesian product) dari himpunan A dan B disimbol Ax. B, 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 Ax. A 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 Ax. B sehingga untuk semua a A terdapat satu elemen b B sehingga (a, b) f. Hubungan fungsional sering ditulis sebagai: f : A B 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 |A B| = |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 |Ax. B| = |A|. |B|.
� � � 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 kcombination dari himpunan n-set S adalah ksubset dari S. Formula untuk mencacah jumlah kcombination 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 1. 2. 3. 4. 5. Susun algoritma untuk menghitung bilangan Fibonacci mulai dari n=0. . 100 Buktikan bahwa k 3 k = O(3 n) ; 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
- Slides: 29