Gambar 4.8 Grafik Total dan Waktu Rata-Rata Pencarian Algoritma Maximal Shift
dan Algoritma Quick Search.
Dari grafik Gambar 4.7, 4.8, dan 4.9 dapat dijelaskan bahwa Algoritma Maximal Shift memiliki kecepatan waktu yang lebih cepat dibandingkan dengan Algoritma Quick
Search. Artinya bahwa Algoritma Maximal Shift lebih cepat untuk pencocokan kata dibandingkan dengan Algoritma Quick Search yang lebih lama dalam pencocokan
kata.
4.4. Kompleksitas Algoritma
Kompleksitas algoritma yang akan diuji adalah kompleksitas Algoritma Maximal Shift dan Algoritma Quick Search. Penelitian ini hanya menggunakan kompleksitas
.
4.4.1 Kompleksitas Algoritma Maximal Shift
Perhitungan kompleksitas pada Algoritma Maximal Shift terdiri dari: nilai minShift, orderpattern, qsBc, proses pencarian Maximal Shift yang dapat dilihat pada Tabel 4.3,
Tabel 4.4, Tabel 4.5, Tabel 4.6.
9481 1892
59510
11902 10000
20000 30000
40000 50000
60000 70000
TOTAL RATA-RATA
W a
kt u
m il
is e
k o
n
waktu total dan waktu rata-rata pencarian kata
Grafik Perbandingan Waktu Rata-Rata
Algoritma Maximal Shift Algpritma Quick Search
Universitas Sumatera Utara
Tabel 4.3 Kompleksitas MinShift.
Berikut adalah nilai Minshift dari algoritma Maximal Shift : T
n
= C1 + C2 + C3m + C4m
2
+ C5m
2
+ C6m
2
+ C7m = C1 + C2 + C3m + C4m +C5m + C6m + C7m
= C1+C2+m + C7m
1
+ C3+C4+ 3C5 + C6 m
2
= =
2
Pada Tabel 4.3 dapat dilihat kolom C yaitu: C1, C2, C3, C4, C5, C6 dan C7 adalah sebuah konstanta. Kemudian adalah frekuensi yang berfungsi sebagai ukuran
masukan yaitu: 1 artinya, hanya melakukan sekali proses, m melakukan perulangan, dan m
2
adalah terjadinya perulangan di dalam perulangan, kemudian C. adalah untuk mencari kompleksitas waktu Tn, t adalah waktu dan n adalah
jumlah proses. Jumlahkan hasil dari perkalian C., kemudian ambil pangkat terbesar dari nilai masukan dan akan di dapatkan pangkat terbesar yaitu m.
Code C
C. Void computeMinShiftx, m {
C1 1
C1 int i, j;
C2 1
C2 For i = 0; im; ++i {
C3 m
C3m For j = i
– 1; j = 0; --j C4
m
2
C4m If x[i] == x[j]
C5 m
2
C5m Break;
C6 m
2
C6m minShift[i]= i
– j }
} C7
m C7m
Universitas Sumatera Utara
Tabel 4.4 Kompleksitas Orderpattern.
Code C
C. void orderPattern{
C1 1
C1 int i;
C2 1
C2 for i = 0;i x.length; i++{
C3 m
C3m pat[i] = new pattern ;
C4 m
C4m pat[i].c = x.charAti;
C4 m
C4m pat[i].loc = i;
C4 m
C4m }
Arrays.sortpat, new Comparer; C5
1 C5
Berikut adalah preorderpattern dari algoritma Maximal Shift : T
n
= C1 + C2 + C3m + 3C4m + C5 = C1 + C2 + C3m + 3C4m + C5
= C1+C2+ C5m +C3+ 3C4m
1
=
Pada Tabel 4.4 dapat dilihat kolom C yaitu: C1, C2, C3, C4, C4, C4, dan C5 adalah sebuah konstanta. Kemudian adalah frekuensi yang berfungsi sebagai ukuran
masukan yaitu: 1 artinya, hanya melakukan sekali proses, m melakukan perulangan, kemudian C. adalah untuk mencari kompleksitas waktu Tn, t adalah
waktu dan n adalah jumlah proses. Jumlahkan hasil dari perkalian C., kemudian ambil pangkat terbesar dari nilai masukan dan akan di dapatkan pangkat terbesar
yaitu m.
Tabel 4.5 Kompleksitas PreQsBc.
Code C
C. void preqsBc{
C1 1
C1 int i = 0;
C2 1
C2 For i = 0; i AZISE; ++i {
C3 m
C3m qsBc [i] = m + 1;
C4 m
C4m For i = 0; i AZISE; ++i
C5 m
C5m qsBc[x[i]] = m - 1;
} C6
m C6m
Universitas Sumatera Utara
Berikut adalah preQsBc dari algoritma Maximal Shift dan Quick Search : T
n
= C1 + C2 + C3m + C4m + C5m + C6m = C1+C2 + C3+C4+ C5 + C6m
\
= C1+C2m + C3+C4+ C5 + C6m
1
=
Pada Tabel 4.5 dapat dilihat kolom C yaitu: C1, C2, C3, C4, C5, dan C6 adalah sebuah konstanta. Kemudian adalah frekuensi yang berfungsi sebagai ukuran
masukan yaitu: 1 artinya, hanya melakukan sekali proses, m melakukan perulangan, kemudian C. adalah untuk mencari kompleksitas waktu Tn, t adalah
waktu dan n adalah jumlah proses. Jumlahkan hasil dari perkalian C., kemudian ambil pangkat terbesar dari nilai masukan dan akan di dapatkan pangkat terbesar
yaitu m.
Tabel 4.6 Kompleksitas PreadaptedGs.
Code C
C. void preAdaptedGS{
C1 1
C1 int lshift, i, ploc;
C2 1
C2 adaptedGS[0] = lshift = 1;
C3 1
C3 for ploc = 1; ploc = m; ++ploc{
C4 m
C4m lshift = matchshiftploc, lshift;
C5 m
C5m adaptedGS[ploc] = lshift;
} C6
m C6
for ploc = 0; ploc m;ploc++{ C7
m C7m
lshift = adaptedGS[ploc]; C8
m C8m
while lshift m{ C9
m
2
C9m
2
i = pat[ploc].loc - lshift; C10
m
2
C10m
2
if i 0 || pat[ploc].c = x.charAti C11
m
2
C11 m
2
break; C12
m
2
C12
m
2
++lshift; C13
m
2
C13 m
2
lshift = matchshiftploc, lshift; C14
m
2
C14m
2
} adaptedGS[ploc] = lshift;
} }
C15 m
C15m
Universitas Sumatera Utara
Berikut adalah OrdernPattern dari algoritma Maximal Shift : T
n
= C1 + C2 + C3 + C4m + C5m + C6m + C7m + C8m + C9m
2
+ C10m
2
+ C11m
2
+ C12m
2
+ C13m
2
+ C14m
2
+ C15m = C1+ C2+C3m
+ C4+C5+C6+ C7 +C8+ C15m
1
+ C9+C10+ C11 + C12+C13+C14m
2
=
2
Pada Tabel 4.6 dapat dilihat kolom C yaitu: C1, C2, C3, C4, C5, C6, C7, C8, C9, C10,C11, C12,C13 dan C14 adalah sebuah konstanta. Kemudian adalah frekuensi
yang berfungsi sebagai ukuran masukan yaitu: 1 artinya, hanya melakukan sekali proses, m melakukan perulangan sepanjang string atau teks , m
2
melakukan perulangan di dalam perulangan kemudian C. adalah untuk mencari kompleksitas
waktu Tn, t adalah waktu dan n adalah jumlah proses dari pola yang di inputkan oleh user. Jumlahkan hasil dari perkalian C., kemudian ambil pangkat terbesar dari
nilai masukan dan akan di dapatkan pangkat terbesar yaitu m.
Tabel 4.7 Kompleksitas Maximal Shift
Code C
C. public static void MS{
C1 1
C1 int i, j;
C2 1
C2 j = 0;
C3 1
C3 whilej = n - m{
C4 n
C4n i = 0;
C5 1
C5 while i m pat[i].c == y.charAtj + pat[i].loc
C6 mn
C6mn i++;
C7 mn
C7mn if i = m
C8 mn
C8mn Output J;
C9 mn
C9mn j+= Max adaptedGS[i], qsBc.[ y [ j + m ]];
} C10
mn C10mn
Universitas Sumatera Utara
Berikut adalah Searching dari algoritma Maximal Shift : T
n
= C1 + C2 + C3 + C4n + C5 + C6mn + C7mn + C8mn + C9mn + C10mn
= C1+ C2+C3+C5m + C4n
1
+ C6 +C7+ C8+C9+C10mn
1
= m + n
1
+ mn
1
=
Pada algoritma Maximal Shift menghasilkan preorderpattern Tn = , preQsBc
memiliki Tn= , preadaptedGs Tn =
, dan pencarian dengan Maximal Shift Tn =
. Karena pangkat yang teebesar adalah .
4.4.2. Kompleksitas dengan Algoritma Quick Search