Kompleksitas Algoritma Maximal Shift

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