Download - Analisis Algoritma & Struktur Data

Transcript
Page 1: Analisis Algoritma  &  Struktur  Data

Fondasi Matematis

Page 2: Analisis Algoritma  &  Struktur  Data

Bentuk Asimptotis Matematika dasar Summation (Penjumlahan) Rekurensi Set Theory Prinsip Pencacahan

Page 3: Analisis Algoritma  &  Struktur  Data

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.

Page 4: Analisis Algoritma  &  Struktur  Data

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 n22 dihilangkan , maka: 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).

Page 5: Analisis Algoritma  &  Struktur  Data

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)).

Page 6: Analisis Algoritma  &  Struktur  Data

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 .

Page 7: Analisis Algoritma  &  Struktur  Data

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).

Page 8: Analisis Algoritma  &  Struktur  Data

Exponential: Untuk setiap bilangan real a0 dan m, n maka berikut ini berlaku dalam eksponensial: 

a0 = 1 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)

Page 9: Analisis Algoritma  &  Struktur  Data

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

Page 10: Analisis Algoritma  &  Struktur  Data

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)

Page 11: Analisis Algoritma  &  Struktur  Data

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, 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.

Page 12: Analisis Algoritma  &  Struktur  Data

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

Page 13: Analisis Algoritma  &  Struktur  Data

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) 

Page 14: Analisis Algoritma  &  Struktur  Data

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 

Page 15: Analisis Algoritma  &  Struktur  Data

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 sajaT(n) 2 (c. [n/2] lg [n/2] ) + nT(n) c.n lg [n/2] + nT(n) = c.n lg n – c.n.lg 2 + nT(n) = c.n lg n – c.n + nT(n) c.n lg n atau T(n) adalah O(n lg n)

Page 16: Analisis Algoritma  &  Struktur  Data

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.

Page 17: Analisis Algoritma  &  Struktur  Data

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)).

Page 18: Analisis Algoritma  &  Struktur  Data

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)

Page 19: Analisis Algoritma  &  Struktur  Data

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)

Page 20: Analisis Algoritma  &  Struktur  Data

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)

Page 21: Analisis Algoritma  &  Struktur  Data

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 )

Page 22: Analisis Algoritma  &  Struktur  Data

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

Page 23: Analisis Algoritma  &  Struktur  Data

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

Page 24: Analisis Algoritma  &  Struktur  Data

(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

Page 25: Analisis Algoritma  &  Struktur  Data

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

Page 26: Analisis Algoritma  &  Struktur  Data

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|.

Page 27: Analisis Algoritma  &  Struktur  Data

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)!

Page 28: Analisis Algoritma  &  Struktur  Data

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

Page 29: Analisis Algoritma  &  Struktur  Data

1. Susun algoritma untuk menghitung bilangan Fibonacci mulai dari n=0 ..100

2. Buktikan bahwa k 3k = O(3n) ; k=1..n

3. Selesaikan rekurensi T(n) = 2 T(n) + lg n dengan metoda subsitusi

4. Selesaikan rekurensi T(n) = 3 T(n/4) + n lg n dengan metoda master

5. 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