Rolt 2007 mengemukakan pendapat bahwa manajemen kearsipan elektronik adalah pengelolaan berbagai jenis dokumen dalam organisasi yang menggunakan
program komputer dan penyimpanan.Sebuah sistem kearsipan elektronik
memungkinkan suatu organisasi dan pengguna untuk membuat dokumen, memindai hard copy dalam bentuk elektronik dan menyimpan, mengedit, mencetak, proses, dan
juga mengelola dokumen.
2.5 Eliminasi Stopwords
Eliminasi stopwords merupakan penghilangan kata-kata yang frekuensinya terlalu banyak terdapat dalam dokumen.Biasanya kata-kata ini tidak memiliki arti yang lebih
di dalam memenuhi kebutuhan seorang pencari di dalam mencari informasi.Eliminasi stopwords bermanfaat dengan adanya pengurangan ukuran strukur indeks Karena
pengurangan ukuran indeks, beberapa kata kerja, kata sifat, dan kata keterangan lainnya dapat juga dapat dimasukkan juga ke dalam daftar stopword.
Berikut ini adalah contoh stopwords dalam bahasa Indonesia : yang, juga, dari, dia, kami, kamu, aku, saya, ini, itu, atau, dan, tersebut, pada, dengan, adalah, yaitu, ke,
tak, tidak, di, pada, jika, maka, ada, pun, lain, saja, hanya, namun, seperti, kemudian.
2.6 Algoritma Turbo Boyer-Moore
Algoritma Turbo Boyer-Moore adalah pengembangan dari algoritma Boyer- Moore.Algoritma Boyer-Moore adalah algoritma pencarian string yang dipublikasikan
pertama kali oleh Robert S. Boyer, dan J. Strother Moore pada tahun 1977. Menurut Christian Thierry Charras dalam bukunya Handbook of Exact String
Matching Algorithm mengatakan algoritma Boyer-Moore adalah algoritma yang paling efisien pada aplikasi umum.Algoritma Boyer-Moore bekerja dengan memulai
pencocokan pattern dari kanan bukan dari kiri. Dengan memulai pencocokan karakter dari kanan, maka akan lebih banyak informasi yang didapat.
Algoritma Turbo Boyer-Moore tidak jauh berbeda dengan algoritma pendahulunya yaitu Algoritma Boyer-Moore yang melakukan pencocokan dimulai
dari karakter yang paling kanan hingga karakter paling kiri pattern. Jika terjadi ketidakcocokan antara karakter paling kanan pattern dengan karakter pada text yang
dicocokkan maka, karakter pada pattern akan diperiksa satu persatu untuk mendeteksi
apakah ada karakter pada teks tersebut yang sama dengan karakter pada pattern. Apabila terjadi kecocokan, maka pattern akan digeser sedemikian rupa sehingga posisi
karakter yang sama antara pattern dan text terletak sejajar menggunakan dua fungsi penggeseranyaitu penggeseran good-suffix dan penggeseran bad-character.
Algoritma ini tidak membutuhkan proses tambahan, hanya membutuhkan ruang tambahan untuk menyimpan faktor dari teks yang cocok dengan akhiran dari
pattern selama attempt terakhir dan hanya jika penggeseran good-suffix dilakukan. Dengan demikian teknik ini memiliki dua keuntungan Charras, 2001, yaitu:
1. Teknik ini memungkinkan segmen yang diingat tadi dilewati tanpa perlu
diperiksa. 2.
Teknik ini mengizinkan sebuah penggeseran turbo Penggeseran bad-character dan good-suffix pada algoritma Turbo Boyer-
Mooresama dengan penggeseran yang dilakukan algoritma Boyer-Moore.Cara kerja algoritma Turbo Boyer-Moore adalah sebagai berikut:
1.
Inisialisasi, karena algoritma ini menggunakan penggeseran good-suffix dan penggeseran bad-characterdari algoritma Boyer-Moore maka untuk
inisialisasi dijalankan prosedur preBmBc dan preBmGs seperti algoritma Boyer-Moore.
2.
Melakukan proses pencocokan karakter pada pattern dengan karakter pada teks. Jika terjadi ketidakcocokan maka dilakukan penggeseran terbesar
berdasarkan tabel BmBc, tabel BmGs dan turbo shift. Sebuah penggeseran turbo pada algoritma Turbo Boyer-Moore dapat terjadi
bila pada attempt yang sedang dilakukan, akhiran dari pattern yang cocok dengan teks lebih pendek dari bagian dari teks yang diingat dari attempt sebelumnya.
Fase inisialisasi pada algoritma ini sama dengan fase inisialisasi pada algoritma Boyer-Moore, yaitu mempunyai kompleksitas waktu dan ruang sebesar On
+ σ dengan σ adalah besar ruang alfabet. Sedangkan pada fase pencocokan, algoritma ini mempunyai kompleksitas waktu sebesar Om, Jumlah pencocokan karakter pada
algoritma ini adalah 2m.
2.6.1 Penggeseran Bad-Character
Penggeseran bad-character yang terdiri dari mensejajarkan karakter y[i+j] dengan kemunculan paling kanan karakter tersebut di pattern, penggeseran ini diilustrasikan
oleh Gambar 2.2. Dan bila karakter tersebut tidak ada di pattern, maka pattern akan disejajarkan dengan y[i+n+1], seperti yang diilustrasikan oleh Gambar 2.3.
Penggeseran bad-character ini akan sering terjadi pada pencocokan string dengan ruang alfabet yang besar dan dengan pattern yang pendek yang sering terjadi di
praktik pada umumnya. Hal ini terjadi karena akan banyak karakter di teks yang tidak muncul di pattern. Namun, untuk file biner, ya
ng mempunyai alfabet Σ ={0, 1}, penggeseran ini kemungkinan besar tidak akan membantu sama sekali. Hal ini dapat
diatasi dengan membandingkan beberapa bit sekaligus Kumara,2009.
Gambar 2.2 Penggeseran bad-character, b muncul pada xCharras, 2001
Gambar 2.3 Penggeseran bad-character, tidak ada kemuncul b pada x
Charras, 2001
Pada tabel bad-character, setiap karakter pada pattern diberi nilai sesuai dengan ukuran jauhnya karakter tersebut dari karakter paling kanan dari pattern dan
untuk karakter yang tidak terdapat pada pattern akan diberi nilai sejumlah karakter pada pattern.
Procedure preBmBc input y : array[0..n-1]of char,
input n : integer, inputoutput bmBc : array of integer
Deklarasi i:integer
Algoritma for i=0; iASIZE; ++i
bmBc[i] n
endfor for i=0; i n - 1; ++i
bmBc[y[i]] n – i – 1
endfor
Gambar 2.4Pseudocode Bad-CharacterCharras, 2001
2.6.2 Penggeseran Good-Suffix
Asumsikan bahwa ketidak cocokan terjadi antara karakter x[i] = a pada pattern dan karakter y[i+j] = b pada teks selama attempt pada posisi j, v adalah akhiran dari
pattern setelah b dan u adalah sebuah awalan dari pattern. Kemudian x[i+1 .. m-1] = y[i+j+1 .. j+m-1]= u dan x[i]
≠ y[i+j]. Penggeseran good-suffix terdiri atas mensejajarkan y[i+j+1 .. j+m-1] = x[i+1 .. m-1] dengan kemunculan paling kanan
potongan tersebut pada x yang didahului oleh karakter yang berbeda dari x[i], seperti terlihat pada gambar 2.2. Namun jika tidak ada potongan seperti itu, maka algoritma
akan mensejajarkan akhiran dari v dari y[i+j+1 .. j+m-1] dengan awalan u dari pattern yang sama, seperti yang terlihat pada gambar 2.5.
Gambar 2.5Penggeseran good-suffix, u muncul didahului oleh karakter
cCharras, 2001
Gambar 2.6Penggeseran good-suffix, hanya akhiran dari u yang muncul pada y
Charras, 2001
Pada tabel Penggeserangood-suffix, nilai Penggeseran digunakan ketika ketidakcocokan ditemukan berdasarkan karakter pada posisi keberapa yang
menyebabkan ketidakcocokan.Untuk menentukan nilai-nilai tersebut, lebih dahulu menghitung nilai tabel suffix yang bertujuan untuk memberi tanda adanya perulangan
akhiran. Dari tabel suffix inilah tabel good-suffixakan didapat. Pada tabel suffix berisi nilai dari tiap karakter yang ada pada pattern yang menunjukkan ada atau tidaknya
perulangan akhiran suffix dan dimana posisi perulangan tersebut sehingga ketika proses perhitungan tabel good-suffix dapat diketahui seberapa banyak penggeseran
yang akan dilakukan untuk pencocokan selanjutnya. Nilai dari setiap karakter yang ada pada pattern bergantung terhadap ada atau tidaknya perulangan akhiransuffix v
dari text pada pattern. Semakin banyak perulangan, maka akan semakin kecil nilai penggeseran.
Procedure suffixes input y: array[0..n-1] of char,
input n: integer, inputoutput suff: array of integer
Deklarasi f, g, i : integer
Algoritma suff[n-1]
n g
n-1 for i = n-2; i = 0; --i
ifi g and suff[i + n – 1 - f] i-gdo suff[i]
suff[i + n – 1 - f] else
ifigdo g
i endif
f = i whileg = 0 and y[g] == y[g + n – 1 - f]do
--g; endwhile
suff[i] f-g;
endif endfor
Gambar 2.7Pseudocode Good-SuffixCharras, 2001
procedure preBmGs input y: array of char,
input n:integer, inputoutput bmGs: array of integer
Deklarasi i, j : integer
suff : array [0..YSIZE] of integer Algoritma
suffixesy, n, suff for i=0; i n; ++i
bmGs [i] n
endfor for i= n-1; i = -1; --1
ifi == -1 or suff[i] == i+1 forj=0; j n-1-i; ++j
ifbmGs[j] == n bmGs[j]
n-1-i endif
endfor endif
endfor for i=0; i = n-2; ++i
bmGs[n-1-suff[i]] n-1-i
endfor
Gambar 2.7Pseudocode Good-Suffix lanjutan
2.6.3 Penggeseran Turbo
Penggeseranturbo dapat terjadi bila pada attempt yang sedang dilakukan, akhiran dari pattern yang cocok dengan teks lebih pendek dari bagian dari teks yang diingat dari
attempt sebelumnya hanya pada saat good-suffix terjadi. Pada kasus ini, anggap u adalah faktor yang diingat dari attempt sebelumnya, dan v adalah bagian dari pattern
yang cocok pada attempt yang sedang dilakukan, sehingga uzv adalah akhiran dari pattern.
Lalu anggap a adalah karakter di teks dan b adalah karakter dari pattern yang sedang dicocokan pada attempt tersebut. Maka av adalah akhiran dari pattern, dan
juga akhiran dari u karena |v||u|.Dua karakter a dan b muncul dengan jarak p di teks, dan akhiran dari uzv dari pattern mempunyai periode p=|zv|, karena u merupakan
pinggiran dari uv, sehingga tidak mungkin melewati duakemunculan karakter a dan b di teks. Penggeseran terkecil yang mungkin dilakukan adalah sebesar |u|-|v|, yang
disebut sebagai penggeseran turbo dan diilustrasikan oleh Gambar 2.8.
Gambar 2.8Penggeseran turbo dapat terjadi jika | v | |u |Charras, 2001
Gambar 2.9 c
≠ d, maka tidak dapat disejajarkan pada karakter yang sama di vCharras, 2001
Masih dalam kasus dimana |v||u|, dan panjang dari penggeseran bad- characterlebih besar dari penggeseran good-suffix maupun penggeseran turbo.Pada
kasus ini, seperti yang diilustrasikan pada Gambar 2.9, dua karakter c dan d pastilah berbeda karena disyaratkan bahwa jika u
≠0 maka penggeseran sebelumnya adalah penggeseran good-suffix. Sebagai akibatnya, jika penggeseran dengan panjang yang
lebih besar dari penggeseran turbo namun lebih kecil dari |u|+1 maka c dan dakan disejajarkan dengan karakter yang sama di teks. Oleh karena itu, dalam kasus ini
panjang penggeseran minimal adalah |u|+1.
procedure Turbo Boyer Moore input m,n : integer,
input y: array of[0..n-1] char, input x: array of[0..m-1] char,
input m:integer Deklarasi
i, j, u, v, shift, bmBcShift, bmGsShift, tuboShift : integer bmGs : array [0..n-1] of integer
bmBc : array [0..ASIZE] of integer
Gambar 2.10Pseudocode Turbo Boyer-MooreCharras, 2001
Algoritma preBmGsy, n, bmGs
preBmBcy, n, bmBc i:= u:=0
shift:=n while i= m-n do
j:= n-1 while j=0 n and T[i+j] = P[j] do
j:= j-1 ifnotu=0 and i=m-1-shift
j:=j-u endif
endwhile ifj0 then
ketemu[i]:=true shift:=bmGs[0]
u=n-shift else
v: =n-1-j turboShift:=u-v
bmBcShift :=bmBc[chartointT[i+j]] – n + j + 1 bmGsShift := BmGs[j]
shift:= maxbmBcShift, bmGsShift shift:= maxshift, turboShift
ifshift = bmGs[i] then
v1:=minm-shift, v else
ifturboShift bmBcShift shift:=maxshift, u+1
endif endif
endif i:= i+shift
endwhile
Gambar 2.10Pseudocode Turbo Boyer-Moore lanjutan
2.7 Algoritma Quick Sort