• Tidak ada hasil yang ditemukan

Otomatisasi Indeks Ebook Algorithms Dengan Menggunakan Algoritma Knuth-Morris- Pratt Dan Algoritma Quicksort

N/A
N/A
Protected

Academic year: 2017

Membagikan "Otomatisasi Indeks Ebook Algorithms Dengan Menggunakan Algoritma Knuth-Morris- Pratt Dan Algoritma Quicksort"

Copied!
15
0
0

Teks penuh

(1)

BAB 2

LANDASAN TEORI

2.1 Desain Analisis Algoritma

Kovelamudi (2013) menyatakan algoritma dapat di definisikan sebagai prosedur komputasi yang mengambil beberapa nilai atau set nilai-nilai sebagai output. Ini adalah tahap-tahap komputasi yang akan mengubah input menjadi output. Dan merupakan alat untuk untuk memecahkan berbagai permasalahan di dalam komputer. Algoritma harus memiliki kriteria sebagai berikut :

Input : nilai 0 atau lebih disisipkan.

Output : setidaknya akan menghasilkan satu kuantitas. Kepastian : setiap instruksi jelas dan tidak ambigu.

Finiteness :Jika kita menelusuri petunjuk dari sebuah algoritma, maka untuk semua kasus, algoritma akan berhenti setelah memasuki langkah

terakhir.

Efektivitas : Setiap instruksi harus dimulai dari awal sehingga dapat diproses. Sebuah program adalah ekspresi dari algoritma dalam bahasa pemrograman. Kumpulan dari instruksi, yang mana komputer akan mengikuti instruksi untuk memecahkan sebuah masalah.

Sekali sebuah algoritma diberikan kepada sebuah permasalahan dan dijamin akan memberikan hasil yang diharapkan, maka langkah penting selanjutnya adalah menentukan besar biaya yang diperlukan algoritma tersebut untuk memperoleh hasil itu. Proses inilah yang disebut dengan analisis algoritma (Weiss.M.A, 1996). Maksud dilakukannya analisis algoritma (Horowitz & Sahni, 1978) adalah untuk:

1. Memenuhi aktivitas intelektual.

2. Meramalkan suatu hal yang akan terjadi atau yang akan didapat dari algoritma tersebut.

(2)

2.2 Jenis-jenis Algoritma

Jenis-jenis algoritma terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda (Kovelamudi, 2013).

2.2.1 Divide and Conquer

Kovelamudi (2013) paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.

2.2.2 Dynamic Programming

Kovelamudi (2013) paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal dan mengandung beberapa bagian permasalahan yang tumpang tindih. Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi

2.2.3 Greedy Algorithm

(3)

1. Bahasa Semu (pseudocode).

Yaitu dengan menggunakan bahasa sehari-hari, tetapi harus jelas dan struktur. 2. DiagramAlir/Alur (Flowchart).

Yaitu dengan membuat suatu penulisan atau penyajian algoritma berupa diagram yang menggambarkan susunan alur logika dari suatu permasalahan.

2.3 Algoritma Quicksort

Quicksort adalah algoritma pengurutan yang dikembangkan oleh Tony Hoare. Algoritma

Quicksort melakukan perbandingan sebayak n log n untuk mengurutkan data sebanyak n. kondisi paling buruk dari jumlah perbandingan adalah n2. Secara praktis, Quicksort

beroperasi lebih cepat dibanding algoritma dengan kompleksitas n logn n lainnya. Sareen (2013) menyatakan bahwa keuntungan dari penggunaan algoritma Quicksort

adalah cepat dan efisien, sedangkan kerugian yang dapat dialami adalah menghasilkan performa yang buruk apabila data sudah terurut. Berikut adalah sarat dalam melakukan pengurutan ataupun penyortiran algoritma Quicksort;

1. Semua elemen yang ada disebelah kiri pivot harus lebih kecil atau sama dengan pivot, dan semua elemen disebelah kanan pivot harus lebih besar atau sama dengan pivot.

2. Pivot yang sudah diurutkan disusun berdasarkan urutan dari array/list. 3. Conquer yaitu disusun menjadi 2 sub array secara rekursif.

4. Kemudian digabungkan.

5. Permasalahannya yaitu sorting kunci n pada yang bukan urutan penurunan 6. Inputkan bilangan integer n positive, array dari kunci m yang sudah

diindekskan dari pertama hingga data ke-n.

7. Output, array m yang berisi kunci yang tidak menurun 8. Quicksort(rendah, tinggi)

1. Tinggi> rendah

2. kemudian partisi (rendah, tinggi, pivotIndex) 3. Quicksort (rendah, pivotIndex -1)

4. Quicksort (pivotIndex 1, tinggi)

(4)

1. pivotitem = S [rendah] 2. k=low

3. for j = low +1 tinggi

4. lakukan if S [ j ] < pivot item 5. Kemudian k = k + 1

6. Ganti S [ j ] dan m [ k ] 7. pivot = k

8. Ganti S[low] dan S[pivot]

Quicksort adalah algoritma sorting acak berdasarkan paradigma Divide and Conquer

Divide: memilih elemen acak dari x (pivot) dan partisi m ke dalam L elements lebih kecil dari x

E elements sama dengan x G elements lebih besar dari x Recursive: sorting L dan G Conquer: gabungkan L, E dan G

2.3.1 Metode Rekursif dalam Algoritma Quicksort

Quicksort dengan pendekatan rekursif tidak membutuhkan struktur data khusus, seperti

stack, karena setiap kelompok akan berjalan secara rekursif. Robert Sedgewick & Kevin Wayne (2011) menyatakan bahwa terdapat dua bagian pada pendekatan rekursif, yaitu

sort dan partisi. Partisi merupakan bagian yang melakukan tugas untuk mengelompokkan data, sedangkan sort adalah bagian yang melakukan proses rekursif. Semakin besar jumlah data, maka kompleksitas ruang suatu algoritma rekursif akan semakin besar.

(5)

kelompok sehingga kelompok lainnya menjadi kosong. Hal ini akan menyebabkan terjadinya banyak pengulangan pada saat pengurutan data. Nilai pivot pada kasus ini biasanya adalah nilai maksimum atau minimum dari kelompok data yang ingin diurutkan. Kompleksitas dari kasus terburuk ini adalah ½ n2. Kondisi yang ketiga adalah kasus rata-rata, yaitu ketika pivot tidak terpilih secara acak dari data. Kompleksitas dari kasus rata-rata sama dengan kasus terbaik adalah 1.39 n log n.

2.3.2 Implementasi Quicksort

Implementasi Quicksort ( Abdul. K, 2012.) Algoritma:

Subrutin Quicksort(L,p,r) Jika p < r MAKA

q partisi (L,p,r)

Quicksort(L,p,q)

Quicksort(L,q+1,r) Akhir-jika

Akhir – subrutin

Untuk mengurutkan isi keseluruhan Larik L, diperlukan pemanggilan seperti berikut:

Quicksort(L,O, jumlah-elemen(L)-1) Subrutin partisi sendiri seperti berikut:

Subrutin partisi(L,p,r) x L[p] i p j r

Ulang selama benar

Ulang selama L[j] > x j j -1

Akhir-ulang Ulang selama L[j] < x i i – 1

(6)

// Tukarkan L[i] dengan L[j] tmp L[i]

L[i] L[j] L[j] tmp Sebaliknya

Nilai – balik J Akhir-jika Akhir – ulang Akhir - subrutin

(7)

2

Setelah penukaran L[i] dan L[j] dilaksanakan

i j

Setelah i digerakkan ke

kanan sampai L[i] >=6 dan setelah j digerakkan i j Ke kiri sampai L[j]<=6

Setelah penukaran L[i] dan L[j] dilaksanakan Karena i<j tidak berlaku lagi,maka nilai balik berupa j

0 1 2 3 4 5 6 7

7 6 8

L[0..4] L[5..7]

Gambar 2.1 Keadaan setelah pivot didapatkan

(8)

3

2.3.3 Kasus terburuk Running Time Quicksort

Kovelamudi (2013) kasus terburuk untuk Quicksort dapat terjadi ketika pivot adalah elemen terkecil atau terbesar. Salah satu dari objek L dan G memiliki ukuran n-1 dan yang lain memiliki ukuran 0. Running timenya berdasarkan data yang sudah ada, kemudian dijumlahkan n + (n - 1) + … + 2 + 1, dengan demikian, kasus terburuk running time pada Quicksort adalah O(n2). Berikut tabel running time Quicksort :

Tabel 2.1 Running Time Quicksort

Panjang Waktu

0 N

1 n-1

.. ..

n-1 1

2.3.4 Analisis kasus terburuk Running Time pada Quicksort

Kovelamudi (2013) pivot adalah yang terkecil (ataupun terbesar) dari element T (N) = T (N-1) + cN, N > 1

Telescoping:

T (N-1) = T (N-2) + c (N-1) T (N-2) = T (N-3) + c (N-2) T (N-3) = T (N-4) + c (N-3) …………...

T (2) = T (1) + c.2

T (N) + T (N-1) + T (N-2) + … + T (2) = = T (N-1) + T (N-2) + … + T (2) + T (1) + C (N) + c (N-1) + c (N-2) + … + c.2

T (N) = T (1) + c times (the sum of 2 thru N) = T (1) + c (N (N+1) / 2 -1) = O (N2)

(9)

4

Pivot adalah nilai tengah dari array, bagian dari sisi kiri dan kanan memiliki ukuran yang sama. Partisi dari Log N, untuk memperoleh setiap partisi kita harus melakukan perbandingan (dan bukan hanya swap dari N/2 ). Karena itu kompleksitas dari algoritma ini adalah O (N log N).

2.3.5 Kasus terbaik analisis Running Time

T (N) = T (i) + T (N - i -1) + cN

Kovelamudi (2013) waktu untuk menyortir file sama dengan waktu untuk menyortir partisi yang disebelah kiri dengan element i, ditambah dengan waktu untuk menyortir sebelah kanan dengan elemen N-i-1, ditambah dengan waktu untuk membangun partisi.

Kita ambil pivot dari tengah T (N) = 2 T (N/2) + cN

Bagi dengan N: T (N) / N = T (N/2) / (N/2) + c Telescoping:

T (N) / N = T (N/2) / (N/2) + c T (N/2) / (N/2) = T (N/4) / (N/4) + c T (N/4) / (N/4) = T (N/8) / (N/8) + c ……

T (2) / 2 = T (1) / (1) + c Ambil semua persamaan :

T (N) / N + T (N/2) / (N/2) + T (N/4) / (N/4) + …. + T (2) / 2 = = (N/2) / (N/2) + T (N/4) / (N/4) + … + T (1) / (1) + c.logN Setelah penukaran nilai yang sama:

T (N)/N = T (1) + c * LogN

T (N) = N + N * c * LogN = O (NlogN)

2.4 Algoritma Knuth-Morris-Pratt (KMP)

(10)

5

bersamaan pada tahun 1977. Algoritma Knuth-Morris-Pratt melakukan perbandingan karakter teks dan karakter pada pola dari kiri ke kanan. Ide dari algoritma ini adalah bagaimana memanfaatkan karakter-karakter pola yang sudah diketahui ada di dalam teks sampai terjadinya ketidakcocokkan untuk melakukan pergeseran. Seperti pada gambar 2.2 :

Gambar 2.2 Pergeseran dalam Algoritma Pencocokan String

Misalkan, string teks y pada gambar 2 mempunyai panjang n, indeksnya dinyatakan dengan i, serta string pola x, mempunyai panjang m, indeknya dinyatakan dengan j. Jika terjadi ketidakcocokan di x[j] = a dan y[i+j] = b, maka telah diketahui terdapat karakter-karakter pola yang ada pada teks yaitu x[0..j-1] = y[i..j+j-1] = u. karakter-karakter ini dapat dimanfaatkan sehingga dapat dimungkinkan melakukan pergeseran yang lebih jauh.

Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-Morris-Pratt pada saat mencocokkan string:

1. Algoritma Knuth-Morris-Pratt mulai mencocokkan pattern pada awal teks. 2. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter

pattern dengan karakter diteks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi:

a. Karakter dipattern dan diteks yang dibandingkan tidak cocok

(mismatch).

b. Semua karakter dipattern cocok. Kemudian algoritma akan memberitahukan penemuan di posisi ini.

(11)

6

2.4.1 Kelebihan Algoritma Knuth-Morris Pratt (KMP)

Pada algoritma KMP, kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan informasi tersebut untuk membuat pergeseran yang lebih jauh, tidak hanya satu karakter.

2.4.2 Kekurangan Algoritma Knuth-Morris Pratt (KMP)

Kekurangan yakni efektifitas dari algoritma ini akan berkurang seiring dengan bertambahnya aplikasi yang dibuka ketika menjalankan aplikasi ini.

2.4.3 Fungsi Pinggiran (Border Function) Pada Metode KMP

Fungsi pinggiran b(j) didefinisikan sebagai ukuran awalan terpanjang dari P yang merupakan akhiran dari P[1..j]. Sebagai contoh, tinjau pattern P = ababaa. Nilai F untuk setiap karakter di dalam P adalah sebagai berikut:

Tabel 2.2 Fungsi Pinggiran

J 1 2 3 4 5 6

P[j] A B A B A A

B[j] 0 0 1 2 3 1

2.4.4 Alur Dari Algoritma Knuth-Morris-Pratt (KMP)

masukan:

sebuah array karakter, S (teks yang akan dicari) sebuah array karakter, W (kata yang dicari)

output:

integer (yang berbasis-nol posisi di S di mana W adalah ditemukan) mendefinisikan variabel:

(12)

7

selama m + i adalah kurang dari panjang dari S, lakukan: jika W [i] = S [m + i],

jika S sama dengan (panjang dari W) -1, kembali m

i ← i + 1 jika tidak,

m ← m + i - T [i],

jika T [i] adalah lebih besar dari -1, i ← T [i]

lain i ← 0

(Jika kita mencapai di sini, kita telah mencari semua S tidak berhasil) mengembalikan panjang dari S.

Gambar 2.3 Algoritma KMP

2.5 Netbeans

Fatta (2007) netbeans adalah sebuah proyek software OpenSource. Proyek Netbeans

mulai diprakarsai oleh Perusahaan Sun Microsistems sejak bulan Juni 2000 dan terus berkembang hingga saat ini. Netbeans mengacu pada dua hal, yaitu Netbeansplatform

untuk pengembangan aplikasi desktop java dan sebuah Netbeans IDE (Integrated Development Environment). Netbeans dimulai pada tahun 1996 sebagai Xelfi (Delphi), Java IDE proyek mahasiswa di bawah bimbingan Fakultas Matematika dan Fisika di Charles University di Praha. Pada tahun 1997 Staněk Romawi membentuk perusahaan untuk proyek tersebut dan menghasilkan versi komersial Netbeans IDE hingga kemudian dibeli oleh Sun Microsistems pada tahun 1999. IDE Netbeans

memiliki editor untuk file Java yang berbasiskan teks ataupun GUI (Graphical User Interface). Ada bermacam-macam proyek file Java yang dapat dibuat di dalam

Netbeans. Netbeans yang berisi sebuah aplikasi GUI Java yang bertujuan sebagai sarana untuk memperkenalkan fitur editor teks dari IDE Netbeans.

(13)

8

Flowchart program adalah sebuah bagan yang mendekripsikan suatu algoritma ataupun alur dalam menyelesaikan suatu masalah algoritma. Flowchart di bagi menjadi dua, yaitu flowchart sistem dan flowchart program. (Sismoro, H. 2005)

Program flowchart, yaitu simbol-simbol flowchart yang digunakan untuk menggambarkan logic dari pemrosesan terhadap data, berikut adalah simbol-simbol

flowchart (Sismoro, H. 2005)

Tabel 2.3 Flowchart Program

Simbol Kegunaan

Simbol Process

Simbol yang berfungsi sebagai pengolahan suatu pemrosesan computer

Simbol Manual Operation

Simbol yang berfungsi untuk mengolah sesuatu yang tidak dilakukan oleh komputer.

Simbol Decision

Simbol kondisi untuk memungkinkan menghasilkan beberapa kemungkinan jawaban.

Simbol Predefined Process

Simbol yang berfungsi untuk mempersiapkan penyimpanan yang digunakan di dalam storage

Simbol Terminal

Simbol yang merupakan akhir dari suatu program

Input/Output

Simbol yang menyatakan proses input

dan output tanpa tergantung dengan jenis peralatannya.

Predefined Process Simbol

(14)

9

Connector Simbol

Sebagai connector dalam page yang sama

Off page Connector Simbol

Sebagai connector dalam page yang berbeda

Arah Proses

Flowchart sistem yaitu suatu bagan yang berfungsi untuk mendekskripsikan suatu alur dari program pemrosesan suatu file dalam suatu area menjadi area yang lain (Sismoro, H. 2005). Berikut adalah tabel flowchart sistem:

Tabel 2.4 Flowchart Sistem

Simbol Kegunaan

Input/Output

Simbol yang berfungsi sebagai proses

input dan output.

Simbol Punched Card

Simbol yang berfungsi sebagai input

yang berasal dari halaman atau output

yang ditulis ke halaman

Simbol Magnetic Tape unit

Simbol yang menyatakan input yang berasal dari pita magnetik dan output

yang disimpan ke pita magnetik

Simbol Disk and On-Line Storage

Simbol untuk menyatakan input yang berasal dari sebuah hardware disk atau

output disimpan ke disk juga.

Simbol-simbol yang menyatakan input

(15)

10

Simbol Document akan dicetak ke kertas.

Simbol Display

Gambar

Gambar 2.1 Keadaan setelah pivot didapatkan
Tabel 2.1 Running Time Quicksort
gambar 2.2 :
Tabel 2.2  Fungsi Pinggiran 3 4
+4

Referensi

Dokumen terkait

Sampel penelitianadalahradiograf panoramik digital yang telah melalui proses quality assurance (QA) oleh dokter gigi.Berdasarkanhasil yang diperoleh, analisis surface

Kesimpulan yang dapat diambil dari hasil eksplorasi Dimensi Lingkungan dalam Pen- didikan untuk Pembangunan Berkelanjutan (Kasus di Pondok Modern SelamatlPPMS Kendal)

Sebuah skripsi yang diajukan untuk memenuhi salah satu syarat memperoleh gelar sarjana pada Fakultas Pendidikan Bahasa dan Sastra. ©Rima Puspasari 2016 Universitas

Tujuan dari Penelitian ini adalah, untuk menghasilkan soal-soal open-ended yang valid dan praktis pada pokok bahasan segitiga dan segiempat di SMP, serta untuk melihat

Sistem tersebut memberikan hasil berupa kemungkinan penyakit kelamin yang dialami oleh pengguna, diagnosa pada sistem ini dilakukan dengan cara pengguna mengisi keluhan

(1) berdasarkan hasil penelitian dan pengujian hipotesis menunjukkan bahwa hasil belajar matematika siswa yang belajar menggunakan strategi pembelajaran kontekstual

Dari hasil pengkajian didapatkan data mengenai tanda gejala dari gangguan kesehatan dimana masalah kesehatan yang dialami oleh keluarga memerlukan bantuan untuk segera

The main problems in this research are 1. What are the obstacles and solutions to murabahah financing at BNI Syariah KFO Masamba? The objectives of this study