3.1 algorithms - · pdf filedeskripsikan suatu algoritma untuk mencari bilangan terbesar dalam...

40
3.1 ALGORITHMS CHAPTER 3 ALGORITHMS

Upload: hadien

Post on 03-Feb-2018

292 views

Category:

Documents


4 download

TRANSCRIPT

3.1 ALGORITHMS

CHAPTER 3 ALGORITHMS

Algoritma

Definisi 1.Algoritma adalah himpunan hingga perintah yang terincidalam melakukan perhitungan atau pemecahan masalah.

Contoh 1. Program komputer adalah suatu algoritma.

Catatan. Dalam matematika, suatu algoritma merepresentasikanfungsi. Namun, Alan Turing membuktikan bahwa beberapafungsi tidak dapat direpresentasikan suatu algoritma.

Contoh 1

Deskripsikan suatu algoritma untuk mencari bilangan terbesar dalambarisan hingga bilangan bulat.

Solusi.

Dilakukan langkah berikut:

1. Buat nilai maksimum sementara sama dengan bilangan bulatpertama dalam barisan.

2. Bandingkan bilangan bulat berikut dalam barisan dengan maksimumsementara, jika ia lebih besar dari maksimum sementara, makamaksimum sementara dibuat sama dengan bilangan tersebut.

3. Ulangi langkah sebelumnya jika terdapat bilangan bulat lain dalambarisan.

4. Berhenti jika tidak ada bilangan bulat lain di barisan.

5. Nilai maksimum sementara adalah bilangan terbesar dalam barisan.

Pseudocode

Pseudocode dari suatu algoritma memberikanrepresentasi yang jelas dari suatu algoritma danjuga dapat diubah ke dalam satu atau lebihbahasa pemrograman.

Algoritma 1. Cari_Maksimum

Sifat Algoritma

• Input. Algoritma memiliki input dari himpunan tertentu.

• Output. Dari setiap himpunan input, algoritma menghasilkanoutput yang merupakan solusi dari masalah.

• Definiteness. Setiap langkah dalam algoritma harus didefinisikansecara rinci.

• Correctness. Algoritma harus menghasilkan nilai output yang benar.

• Finiteness. Algoritma harus menghasilkan output yang diinginkan dalam sejumlah berhingga langkah.

• Effectiveness. Setiap langkah dalam algoritma dapat dilakukandalam waktu yang berhingga.

• Generality. Prosedur harus dapat diterapkan secara umum, bukan hanya untuk himpunan input tertentu.

Soal 1

Jelaskan Input, Output, Definiteness, Correctness, Finiteness, Effectiveness, danGenerality dari Algoritma 1.

Algoritma Greedy

• Untuk memecahkan masalah optimasi.• Pendekatan termudah adalah dengan

menentukan pilihan terbaik dalam setiaplangkah; dan tidak mempertimbangkankeseluruhan langkah.

• Algoritma yang mencari pilihan “terbaik” dalamsetiap langkah disebut algoritma greedy.

• Namun demikian, algoritma greedy tidak selalumemberikan solusi optimal. Sehingga setelahsuatu algoritma greedy menemukan suatu solusi, perlu diperiksa apakah solusi tersebut optimal.

Contoh 2

Pandang masalah menukar n rupiah dengan lembar uang 100 ribuan, 50 ribuan, 20 ribuan, 10 ribuan, 5 ribuan, dan seribuan dimana digunakan sesedikit mungkin lembar uang.

Kita dapat merancang algoritma greedy dengan melakukanoptimasi pada setiap langkah, yaitu, dalam setiap langkah kitamemilih lembar uang dengan nilai terbesar untuk ditukarkanyang tidak melebihi nilai n.

Sebagai contoh, untuk menukar 287 ribu rupiah, kita memilihlembar 100 ribu (menyisakan 187 ribu). Kemudian dipilih lembar100 ribu kedua (menyisakan 87 ribu), disusul oleh lembar 50 ribu (menyisakan 37 ribu), lembar 20 ribu (menyisakan 17 ribu), lembar 10 ribu (menyisakan 7 ribu), lembar 5 ribu (menyisakan 2 ribu), lembar seribu (menyisakan seribu), dan lembar seribu.

Contoh 2 (Algoritma)

Algoritma 2. Tukar_uang_greedy

Contoh 2 (Bukti solusi optimal)

Lema 1

Misalkan n bilangan bulat positif. Jika n rupiah ditukarkan denganlembar uang 100 ribuan, 50 ribuan, 20 ribuan, 10 ribuan, 5 ribuan, danseribuan di mana digunakan sesedikit mungkin lembar uang, makapaling banyak digunakan 1 lembar 50 ribuan, paling banyak 2 lembar20 ribuan, paling banyak 1 lembar 10 ribuan, paling banyak 1 lembar 5 ribuan, dan paling banyak 4 lembar seribuan.

Selain itu, tidak mungkin terdapat 2 lembar 20 ribuan dan 1 lembar 10 ribuan.

Banyaknya uang yang ditukarkan dalam lembar 50 ribuan, 20 ribuan, 10 ribuan, 5 ribuan, dan seribuan tidak dapat melebihi 99 ribu rupiah.

Bukti.

Dengan kontradiksi

Contoh 2 (Bukti solusi optimal)

Teorema 1

Algoritma greedy (Algoritma 2) menukarkanuang dengan menggunakan sesedikit mungkinlembar uang.

Bukti.

Dengan kontradiksi dan menggunakan Lema 1.

3.2 THE GROWTH OF FUNCTIONS

Notasi Big-O

Pertumbuhan fungsi biasanya dijelaskan denganmenggunakan notasi big-O.

Definisi 2. [Paul Bachmann (1892), dipopulerkan oleh Donald Knuth]Misalkan f dan g fungsi dari bilangan bulat/real ke bilanganreal.f(x) adalah O(g(x)), atau kadangkala ditulis f(x) = O(g(x)), jikaterdapat konstanta C dan k sehingga

|f(x)| C|g(x)|untuk setiap x > k.

Catatan. f(x) adalah O(g(x)) menyatakan bahwa f(x) tumbuhlebih lambat dibandingkan suatu hasil kali konstan dari g(x) pada saat x membesar tanpa batas.

Contoh 3

Tunjukkan bahwa f(x) = x2 + 2x + 1 adalah O(x2).

Solusi.Untuk x > 1 berlaku

x2 + 2x + 1 x2 + 2x2 + x2

x2 + 2x + 1 4x2

Maka, untuk C = 4 dan k = 1:f(x) C x2 jika x > k.

Jadi, f(x) adalah O(x2).

Contoh 3 (Grafik)

Orde Terkecil

Jika f(x) adalah O(x2), apakah f(x) juga O(x3)?

Ya. x3 bertumbuh lebih cepat dari x2, sehingga x3

juga bertumbuh lebih cepat dari f(x).

Maka, biasanya dicari fungsi sederhana terkecilg(x) yang mengakibatkan f(x) adalah O(g(x)).

Contoh 4.

1. Tunjukkan bahwa 30n+8 adalah O(n).

Misalkan c=31, k=8.

Asumsikan n>k=8.

Maka cn = 31n = 30n + n > 30n+8, sehingga 30n+8 < cn.

2. Tunjukkan bahwa n2+1 adalah O(n2).

Misalkan c=2, k=1.

Asumsikan n>1.

Maka cn2 = 2n2 = n2+n2 > n2+1, atau n2+1< cn2.

30n+8 tidaklebih kecil dari ndi mana-mana (n>0), tetapi lebih kecil dari31n di semua titiksebelah kanan n=8.

n>k=8

Contoh 4 (Grafis)

Increasing n

Val

ue

of

funct

ion

n

30n+8

cn =

31n

30n+8

= O(n)

Soal 2

Tunjukkan bahwa n2 bukan O(n).

Big-O untuk polinom

Teorema 2. Misalkan f(x) = anxn + an-1xn-1 + … + a0 suatupolinom dengan a0, a1, …, an bilangan real. Maka f(x) adalah O(xn).

Soal 3.

1. Tentukan Big-O dari 1 + 2 + 3 + … + n

2. Tentukan Big-O dari n!

3. Dengan menggunakan sifat n < 2n, untuk setiap n bilangan bulat positif, tunjukkan bahwa log n adalah O(n).

Fungsi “Populer”

Fungsi yang “populer” digunakan sebagai g(n) adalah1, log n, n, n log n, n2, 2n, n!

Big-O untuk Kombinasi Fungsi

Teorema 3.

• Jika f1(x) adalah O(g1(x)) dan f2(x) adalah O(g2(x)), maka (f1 + f2)(x) adalah O(max(g1(x), g2(x)))

• Jika f1(x) adalah O(g(x)) dan f2(x) adalah O(g(x)), maka (f1 + f2)(x) adalah O(g(x)).

• Jika f1(x) adalah O(g1(x)) dan f2(x) adalah O(g2(x)),

maka (f1f2)(x) adalah O(g1(x) g2(x)).

Big-Omega dan Big-Theta

Definisi 3. [Knuth (1970)] Misalkan f dan g fungsi dari bilangan bulat/real kebilangan real.f(x) adalah(g(x)) jika terdapat konstanta C dan k sehingga

|f(x)| ≥ C|g(x)|untuk setiap x > k.

f(x) adalah (g(x)) jikaf(x) adalah O(g(x)) dan f(x) adalah(g(x)).

Jika f(x) adalah (g(x)), maka dikatakanf(x) berorde g(x) atau

f(x) dan g(x) memiliki orde yang sama.

Soal 4.

1. Telah ditunjukkan (di Soal 3) bahwa

1 + 2 + … + n adalah O(n2).

Apakah deret ini berorde n2?

2. Tunjukkan 3𝑥2 + 8𝑥 log 𝑥 berorde 𝑥2.

Orde Polinom

Teorema 4.Misalkan f(x) = anxn + an-1xn-1 + … + a0 suatupolinom dengan a0, a1, …, an bilangan real. Maka f(x) berorde xn.

3.3 COMPLEXITY OF ALGORITHMS

Kompleksitas Waktu

Kompleksitas waktu dari suatu algoritma dapatdiekspresikan dalam banyaknya operasi yang digunakanoleh algoritma tersebut dengan input berukuran tertentu.

Operasi yang digunakan meliputi perbandingan, penjumlahan, perkalian, pembagian, dan operasi dasarlainnya.

Kompleksitas waktu dinyatakan dalam banyaknya operasi, bukan waktu real yang dibutuhkan, karena setiap komputermembutuhkan waktu yang berbeda untuk melakukanoperasi dasar. Misalnya, suatu processor dengan kapasitas100-Mhz dapat memproses sampai 1 juta instruksi setiapdetik.

Elemen Maksimum dalam Barisan

Tentukan kompleksitas waktu dari Algoritma 1.

Solusi

Banyaknya perbandingan akan digunakan sebagai ukurankompleksitas waktu.

Dalam setiap langkah, dilakukan dua kali perbandingan:

• i ≤ n untuk menentukan apakah akhir dari barisan telahdicapai, dan

• max < ai untuk menentukan apakah maksimum sementaraperlu diganti.

Di akhir prosedur, dilakukan satu kali perbandingan untuk keluardari loop. Sehingga, terdapat tepat 2(n − 1) + 1 = 2n − 1 perbandingan yang digunakan.

Jadi, Algoritma 1 memiliki kompleksitas waktu(n).

Contoh 6.

Apakah yang dihitung oleh algoritma berikut dan apakah kompleksitasnya?

procedure siapa_tahu(a1, a2, …, an: integers)m := 0for i := 1 to n-1

for j := i + 1 to nif |ai – aj| > m then m := |ai – aj|

Solusi.Algoritma menghitung m yang merupakan beda maksimum antara setiapdua bilangan dalam barisan input.Banyaknya iterasi yang dilakukan adalah:

n-1 + n-2 + n-3 + … + 1 = (n – 1)n/2 = 0.5n2 – 0.5nDi dalam iterasi tersebut dilakukan perbandingan untuk variable j, perbandingan |ai – aj| dengan m dan paling banyak 2 kali operasi selisih. Sedangkan perbandingan untuk variable i dilakukan n-1 kali.Sehingga total operasi yang dilakukan paling banyak

4 (0.5n2 – 0.5n) + n – 1 = 2n2 – n – 1.Jadi, kompleksitas algoritma adalah (n2).

Contoh 6. (2)

Algoritma lain yang menyelesaikan masalah yang sama:

procedure max_diff(a1, a2, …, an: integers)min := a1

max := a1

for i := 2 to nif ai < min then min := ai

else if ai > max then max := ai

m := max - min

Banyaknya perbandingan?

Paling banyak 3 (n – 1) = 3n – 3

Sehingga kompleksitas algoritma adalah(n).

Kompleksitas Perkalian MatriksMisalkan C = [cij] adalah matriks m × n yang merupakan hasil kali

A = [aij] matriks m × k dengan B = [bij] matriks k × n.

Algoritma 3. Perkalian_matriks

.

Contoh 6.

Ada berapa banyak operasi penjumlahan dan perkalian bilangan bulat yang digunakan dalamAlgoritma 3 untuk mengalikan dua matriksberukuran nxn?

Solusi.

Ada n2 entri dalam hasil kali A and B. Untukmemperoleh setiap entri diperlukan n perkalian dann − 1 penjumlahan. Maka digunakan n3 perkaliandan n2(n − 1) penjumlahan.

Catatan: Akan ada pula operasi perbandingan.

Kompleksitas Perkalian Matriks (2)

Contoh 6 menunjukkan bahwa mengalikan dua matriks n x n memerlukan O(n3) operasi perkalian dan penjumlahan.

Namun ternyata ada algoritma lain yang lebih efisien dariAlgoritma 3.

• [Volker Strassen (1969)] Menggunakan O(n2.807) operasi.

• [Don Coppersmith and Shmuel Winograd (1990)] Menggunakan O(n2.376) operasi.

• [Andrew Stothers (2010)] Menggunakan O(n2.3736) operasi.

• [Virginia Williams (2013)] Menggunakan O(n2.3729) operasi.

• [Francois Le Gall (2014)] Menggunakan O(n2.37286) operasi.

Mengapa Perlu Algoritma yang LebihBaik untuk Operasi Matriks?

Aplikasi dunia nyata melibatkan matriks dalam

ukuransangat besar.

Algoritma Google’s page rank memerlukanperhitungan nilai eigen dari matriks dengan ukuranbaris dan kolom sebanyak webpage yang ada di internet (!!!).

Webpage di Internet

sumber: http://www.worldwidewebsize.com/

Kompleksitas Algoritma

Solvability dan Tractability

Masalah yang dapat diselesaikan denganmenggunakan suatu algoritma disebut solvable. Masalah di mana tidak ada algoritma yang dapatmenyelesaikannya disebut unsolvable.

Masalah yang dapat diselesaikan menggunakanalgoritma dengan kompleksitas polinomial disebuttractable. Masalah yang tidak memiliki algoritmadengan kompleksitas polinomial disebutintractable.

P Versus NP

Masalah tractable masuk ke dalam Kelas P.

Masalah intractable yang solusinya dapat diperiksa dengan menggunakan algoritmadengan kompleksitas polinomial masuk ke dalam Kelas NP (Nondeterministic Polynomial). Contoh. Integer Factorization Algorithm

Masalah P Versus NP mempertanyakan

Apakah P = NP?

Merupakan salah satu dari 7 Millennium Prize Problems. Pada tahun 2000, Clay Mathematics Institute menawarkan hadiah $1,000,000 untuk solusi setiap problem.

7 Millennium Prize Problems

1. P versus NP

2. The Hodge conjecture

3. The Poincaré conjecture (dibuktikan oleh Grigori Perelman pada tahun 2003)

4. The Riemann hypothesis

5. Yang–Mills existence and mass gap

6. Navier–Stokes existence and smoothness

7. The Birch and Swinnerton-Dyer conjecture