Perbandingan Algoritma Turbo Boyer Moored dan String Matching on Ordered Alphabets Untuk Aplikasi Kamus Fisika Berbasis Android

(1)

LISTING PROGRAM

1. Halaman Utama Aplikasi

1. <?xml version="1.0" encoding="utf-8"?> 2. <RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android" 3. android:orientation="vertical"

android:layout_width="match_parent" 4. android:layout_height="match_parent" 5. android:background="@drawable/gambar1" 6. android:weightSum="1">

7. <TextView

8. android:layout_width="wrap_content" 9. android:layout_height="wrap_content" 10. android:paddingTop="30dp"

11. android:layout_alignParentTop="true" 12. android:layout_centerHorizontal="true" 13. android:textSize="20dp"

14. android:textColor="#6F00FF" 15. android:id="@+id/tv"/> 16. <TextView

17. android:layout_width="wrap_content" 18. android:layout_height="wrap_content" 19. android:paddingTop="60dp"

20. android:layout_alignParentTop="true" 21. android:layout_centerHorizontal="true" 22. android:textSize="20dp"

23. android:textColor="#6F00FF" 24. android:id="@+id/tv"/> 25. <Button

26. android:layout_width="wrap_content" 27. android:layout_height="wrap_content" 28. android:id="@+id/buttonCari"

29. android:text="SEARCH"

30. android:backgroundTint="#1CAC78" 31. android:layout_gravity="top|center" 32. android:layout_marginTop="53dp" 33. android:layout_below="@+id/tv"

34. android:layout_alignStart="@+id/buttonTtg" 35. android:width="100dp"

36. android:height="50dp" /> 37. <Button

38. android:layout_width="wrap_content" 39. android:layout_height="wrap_content" 40. android:id="@+id/buttonTtg"

41. android:text="ABOUT"

42. android:backgroundTint="#1CAC78" 43. android:width="100dp"

44. android:height="50dp"

45. android:layout_below="@+id/buttonCari" 46. android:layout_centerHorizontal="true" /> 47. <Button

48. android:layout_width="wrap_content" 49. android:layout_height="wrap_content" 50. android:id="@+id/buttonKeluar"

51. android:text="EXIT"

52. android:backgroundTint="#1CAC78" 53. android:width="100dp"


(2)

55. android:layout_below="@+id/buttonTtg" 56. android:layout_centerHorizontal="true" /> 57. </RelativeLayout>

2. Fungsi Pemanggilan Halaman Utama Aplikasi

1. package com.mardiah.dictionary; 2. import android.app.Activity; 3. import android.app.AlertDialog;

4. import android.content.DialogInterface; 5. import android.content.Intent;

6. import android.os.Bundle; 7. import android.view.KeyEvent; 8. import android.view.View; 9. import android.widget.Button;

10. public class Hal2_Class extends Activity implements View.OnClickListener {

11. Button cari; 12. Button tentang; 13. Button keluar; 14. @Override

15. protected void onCreate(Bundle savedInstanceState) { 16. super.onCreate(savedInstanceState);

17. setContentView(R.layout.hal2_activity);

18. cari = (Button) findViewById(R.id.buttonCari); 19. cari.setOnClickListener(this);

20. tentang = (Button) findViewById(R.id.buttonTtg); 21. tentang.setOnClickListener(this);

22. keluar = (Button) findViewById(R.id.buttonKeluar); 23. keluar.setOnClickListener(this);

24. }

25. @Override

26. public void onClick(View view) { 27. if (view == cari) {

28. Intent a = new Intent(this, MainActivityBaru.class);

29. startActivity(a);

30. } else if (view == tentang) {

31. Intent a = new Intent(this, TentangActivity.class); 32. startActivity(a);

33. } else if (view == keluar) { 34. new AlertDialog.Builder(this)

35. .setMessage("Apa anda ingin keluar?") 36. .setCancelable(false)

37. .setPositiveButton("Ya", new DialogInterface.OnClickListener() {

38. public void onClick(DialogInterface dialog, int id) {

39. Hal2_Class.this.finish(); 40. }

41. })

42. .setNegativeButton("Tidak", null) 43. .show();

44. } 45. }

46. public boolean onKeyUp(int keyCode, KeyEvent event) { 47. if (keyCode == KeyEvent.KEYCODE_BACK &&

event.isTracking() && !event.isCanceled()) { 48. AlertDialog.Builder builder = new

AlertDialog.Builder(this);


(3)

50. builder.setMessage("Apa anda ingin keluar ?").setCancelable(false).setPositiveButton("Ya", new DialogInterface.OnClickListener() {

51. @Override

52. public void onClick(DialogInterface dialog, int which) {

53. finish(); 54. }

55. }).setNegativeButton("Tidak", new DialogInterface.OnClickListener() {

56. @Override

57. public void onClick(DialogInterface dialog, int which) {

58. dialog.cancel(); 59. }

60. }).show(); 61. return true; 62. }

63. return super.onKeyUp(keyCode, event); 64. }

65. }

3. Pemanggilan Algoritma Turbo Boyer Moore

1. package com.mardiah.dictionary; 2. import android.database.Cursor;

3. import android.database.sqlite.SQLiteDatabase; 4. import android.os.Bundle;

5. import android.support.annotation.Nullable; 6. import android.support.v4.app.Fragment; 7. import android.view.LayoutInflater; 8. import android.view.View;

9. import android.view.ViewGroup; 10. import android.widget.Button; 11. import android.widget.EditText; 12. import android.widget.ListAdapter; 13. import android.widget.ListView; 14. import android.widget.SimpleAdapter; 15. import android.widget.Toast;

16. import java.util.ArrayList; 17. import java.util.HashMap;

18. public class TBM_Fragments extends Fragment{ 19. @Nullable

20. Button btncari;

21. ArrayList<HashMap<String, String>> list_data; 22. HashMap<String, String> map;

23. ListView lv2; 24. EditText cari;

25. String pat = "", Fisika="", Arti =""; 26. @Override

27. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

28. View v = inflater.inflate(R.layout.tbm_fragments, container, false);

29. btncari = (Button)v.findViewById(R.id.buttonCaritbm); 30. list_data = new ArrayList<>();

31. lv2 = (ListView)v.findViewById(R.id.LvHasil); 32. cari = (EditText)v.findViewById(R.id.Caritbm);

33. btncari.setOnClickListener(new View.OnClickListener() { 34. @Override


(4)

35. public void onClick(View view) { 36. pat = cari.getText().toString(); 37. DatabaseHelper helper = new

DatabaseHelper(TBM_Fragments.this.getContext()); 38. SQLiteDatabase database =

helper.getReadableDatabase();

39. Cursor cursor = database.query("db_baru_2", new String[]{"fisika", "arti"}, null, null, null, null, "fisika"); 40. int ketemu = 0, i = 0;

41. int urutan = 0;

42. TBM c = new TBM(pat.toUpperCase()); 43. // try {

44. list_data.clear();

45. long t = System.currentTimeMillis(); 46. if (cursor != null) {

47. cursor.moveToFirst(); 48. do {

49. Fisika= cursor.getString(0); 50. Arti = cursor.getString(1); 51. if (pat == null){

52.

Toast.makeText(TBM_Fragments.this.getContext(), " Masukan Kata Yang Di Cari", Toast.LENGTH_LONG).show();

53. }

54. if (pat.length() <= Fisika.length()) { 55. ketemu = c.TBM(Fisika.toUpperCase()); 56. if (ketemu == 1) {

57. urutan++;

58. map = new HashMap<>(); 59. //map.put("urutan",

Integer.toString(urutan));

60. map.put("Fisika", Integer.toString(urutan) + ". " + Fisika);

61. map.put("Arti", Arti); 62. list_data.add(map); 63. i += 1;

64. } 65. }

66. } while (cursor.moveToNext()); 67. }

68. long t2 = (System.currentTimeMillis() - t); 69. if (i == 0) {

70. Toast.makeText(TBM_Fragments.this.getContext(), "Kata tidak ditemukan & Running Time : " + t2 + " ms",

Toast.LENGTH_SHORT).show(); 71. } else {

72. ListAdapter adapt = new

SimpleAdapter(TBM_Fragments.this.getContext(), list_data, R.layout.list_row, new String[]{"Fisika", "Arti"},

73. new int[]{R.id.fsk, R.id.arti}); 74. lv2.setAdapter(adapt);

75. Toast.makeText(TBM_Fragments.this.getContext(), "Running Time : " + t2 + " ms", Toast.LENGTH_LONG).show();

76. } 77. } 78. } 79. );

80. return v; 81. }

82. public class TBM 83. {


(5)

84. int XSIZE = 256, ASIZE = 256;

85. int bcShift, i, j, shift, u , v, turboShift; 86. int[] bmGs = new int[XSIZE];

87. int[] bmBc = new int[ASIZE]; 88. String x;

89. public TBM(String pattern){ 90. x = pattern;

91. preBmGs(x, x.length() , bmGs); 92. preBmBc(x, x.length() , bmBc); 93. }

94. public void suffixes(String x, int m, int[] suff){ 95. int f, g, i;

96. suff[m - 1] = m; 97. g = m - 1;

98. f = m - 1;

99. for(i = m-2; i>=0; i--){

100. if(i > g && suff[i + m - 1 - f] < i - g){ 101. suff[i] = suff[i + m - 1- f];

102. } 103. else{

104. if(i < g){ 105. g = i; 106. }

107. f = i;

108. while(g >= 0 && x.charAt(g) == x.charAt(g + m - 1 - f)){

109. g = g - 1; 110. }

111. suff[i] = f - g; 112. }

113. } 114. }

115. public void preBmGs(String x, int m, int[] bmGs){ 116. int i,j;

117. int[] suff = new int[x.length()]; 118. suffixes(x, m, suff);

119. for( i=0; i<=m-1; i++){ 120. bmGs[i] = m;

121. } 122. j = 0;

123. for(i=m-1; i>=-1; --i){

124. if(i == -1 || suff[i] == i+1){ 125. while(j < m-1-i){

126. if(bmGs[j] == m){ 127. bmGs[j] = m-1-i; 128. }

129. j = j + 1; 130. }

131. } 132. } 133.

134. for(i=0; i<=m-2; i++){

135. bmGs[m - 1 - suff[i]] = m - 1 -i; 136. }

137. }

138. public void preBmBc(String x, int m, int[] bmBc){ 139. int i;

140. for(i = 0; i <= 255; i++){ 141. bmBc[i] = m;

142. }


(6)

144. bmBc[x.charAt(i)] = m - i - 1; 145. }

146. }

147. public int TBM(String y){ 148. //searching

149. int m = x.length(), n = y.length(); 150. j = u = 0;

151. shift = m;

152. while (j<=n - m ){ 153. i = m - 1;

154. while (i>=0 && x.charAt(i) == y.charAt(i+j)){ 155. --i;

156. if (u != 0 && i == m -1 - shift) 157. i -= u;

158. }

159. if (i < 0){

160. //System.out.println(j); 161. return 1;

162. // = bmGs[0]; 163. //u = m - shift; 164. }

165. else {

166. v = m - 1 - i; 167. turboShift = u - v;

168. bcShift = bmBc[y. charAt(i+j)] - m + 1 + i; 169. shift = Math.max(turboShift, bcShift); 170. shift = Math.max(shift, bmGs[i]);

171. if (shift == bmGs[i])

172. u = Math.min(m - shift, v); 173. else {

174. if (turboShift < bcShift)

175. shift = Math.max(shift , u + 1); 176. u = 0;

177. } 178. }

179. j += shift; 180. } return 0; 181. }

182. }

4. Pemanggilan Algoritma String Matching on Ordered Alphabet

1. package com.mardiah.dictionary; 2. import android.database.Cursor;

3. import android.database.sqlite.SQLiteDatabase; 4. import android.os.Bundle;

5. import android.support.annotation.Nullable; 6. import android.support.v4.app.Fragment; 7. import android.view.LayoutInflater; 8. import android.view.View;

9. import android.view.ViewGroup; 10. import android.widget.Button; 11. import android.widget.EditText; 12. import android.widget.ListAdapter; 13. import android.widget.ListView; 14. import android.widget.SimpleAdapter; 15. import android.widget.Toast;

16. import java.util.ArrayList; 17. import java.util.HashMap;

18. public class SMUA_Fragments extends Fragment { 19. @Nullable


(7)

20. Button btneksekusi;

21. ArrayList<HashMap<String, String>> list_data; 22. HashMap<String, String> map;

23. ListView lv2; 24. EditText cari;

25. String pat = "", Fisika="", Arti =""; 26. @Override

27. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

28. View v = inflater.inflate(R.layout.smua_fragments, container, false);

29. btneksekusi =

(Button)v.findViewById(R.id.buttonCarismua);

30. lv2 = (ListView)v.findViewById(R.id.listing); 31. cari = (EditText)v.findViewById(R.id.Caritbm); 32. list_data = new ArrayList<>();

33. btneksekusi.setOnClickListener(new View.OnClickListener() {

34. @Override

35. public void onClick(View view) { 36. pat = cari.getText().toString(); 37. DatabaseHelper helper = new

DatabaseHelper(SMUA_Fragments.this.getContext()); 38. SQLiteDatabase database =

helper.getReadableDatabase();

39. Cursor cursor = database.query("db_baru_2", new String[]{"fisika", "arti"}, null, null, null, null, "fisika");

40. int ketemu = 0, i = 0; 41. int urutan = 0;

42. SMUA c = new SMUA(); 43. // try {

44. list_data.clear();

45. long t = System.currentTimeMillis(); 46. if (cursor != null) {

47. cursor.moveToFirst(); 48. do {

49. Fisika= cursor.getString(0); 50. Arti = cursor.getString(1); 51. if (pat == null){

52.

Toast.makeText(SMUA_Fragments.this.getContext(), " Masukan Kata Yang Di Cari", Toast.LENGTH_LONG).show(); }

53. if (pat.length() <= Fisika.length()) { 54. ketemu = c.SMOA(pat.toUpperCase(),

pat.length(), Fisika.toUpperCase(), Fisika.length()); 55. if (ketemu == 1) { 56. urutan++;

57. map = new HashMap<>(); 58. //map.put("urutan",

Integer.toString(urutan));

59. map.put("Fisika", Integer.toString(urutan) + ". " + Fisika);

60. map.put("Arti", Arti); 61. list_data.add(map); 62. i += 1;

63. } 64. }

65. } while (cursor.moveToNext()); 66. }

67. long t2 = (System.currentTimeMillis() - t); 68. if (i == 0) {


(8)

69.

Toast.makeText(SMUA_Fragments.this.getContext(), "Kata tidak ditemukan & Running Time : " + t2 + " ms",

Toast.LENGTH_SHORT).show(); 70. } else {

71. ListAdapter adapt = new

SimpleAdapter(SMUA_Fragments.this.getContext(), list_data, R.layout.list_row, new String[]{"Fisika", "Arti"},

72. new int[]{R.id.fsk, R.id.arti}); 73. lv2.setAdapter(adapt);

74.

Toast.makeText(SMUA_Fragments.this.getContext(), "Running Time : " + t2 + " ms", Toast.LENGTH_LONG).show();

75. }

76. /* catch (Exception e) { 77.

Toast.makeText(SMUA_Fragments.this.getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();

78. }*/ 79. }

80. });

81. return v; 82. }

83. private class SMUA {

84. int i, ip, j, jp, k, p;

85. public void nextMaximalSuffix(String x, int m, int i, int j, int k, int p) {

86. char a, b;

87. while (j + k < m) { 88. a = x.charAt(i + k); 89. b = x.charAt(j + k); 90. if (a == b)

91. if (k == p) { 92. j += p; 93. k = 1; 94. } else 95. ++k; 96. else if (a < b) { 97. j += k;

98. k = 1; 99. p = j - i; 100. } else {

101. i = j; 102. ++j;

103. k = p = 1; 104. }

105. } 106. }

107. public int SMOA(String x, int m, String y, int n) { 108. ip = -1;

109. i = j = jp = 0; 110. k = p = 1;

111. while (j <= n - m) {

112. while (i + j < n && i < m && x.charAt(i) == y.charAt(i + j))

113. ++i; 114. if (i == 0) { 115. ++j; 116. ip = -1; 117. jp = 0; 118. k = p = 1;


(9)

119. } else {

120. if (i >= m) return 1; 121. //System.out.println(j);

122. nextMaximalSuffix(y + j, i + 1, ip, jp, k, p);

123. if (ip < 0 || ip < p &&

java.util.Arrays.equals((y + j).substring(0, ip + 1).toCharArray(), (y + j + p).substring(0, ip + 1).toCharArray())) {

124. j += p; 125. i -= p; 126. if (i < 0) 127. i = 0; 128. else {

129. ip = -1; 130. jp = 0; 131. k = p = 1; 132. }

133. } else {

134. j += (Math.max(ip + 1, Math.min(i - ip - 1, jp + 1)) + 1);

135. i = jp = 0; 136. ip = -1; 137. k = p = 1; 138. }

139. } 140. }

141. return 0; 142. }

143. } 144. }

5. Pemanggilan Halaman Algoritma Pencarian

1. package com.mardiah.dictionary; 2. import android.os.Bundle;

3. import android.support.design.widget.TabLayout; 4. import android.support.v4.view.ViewPager;

5. import android.support.v7.app.AppCompatActivity; 6. import android.support.v7.widget.Toolbar;

7. public class MainActivityBaru extends AppCompatActivity{ 8. @Override

9. protected void onCreate(Bundle savedInstanceState) { 10. super.onCreate(savedInstanceState);

11. setContentView(R.layout.activity_main_baru); 12. getSupportActionBar().hide();

13.

14. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 15. toolbar.setTitle("Pencarian");

16. TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);

17. tabLayout.addTab(tabLayout.newTab().setText("Turbo Boyer Moore"));

18. tabLayout.addTab(tabLayout.newTab().setText("String Matching on Ordered Alphabets"));

19. final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);

20. final TabPagerAdapter adapter = new TabPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());

21. viewPager.setAdapter(adapter);

22. viewPager.addOnPageChangeListener(new


(10)

23. tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

24. @Override

25. public void onTabSelected(TabLayout.Tab tab) { 26. viewPager.setCurrentItem(tab.getPosition()); 27. }

28.

29. @Override

30. public void onTabUnselected(TabLayout.Tab tab) { 31.

32. } 33.

34. @Override

35. public void onTabReselected(TabLayout.Tab tab) { 36.

37. } 38. }); 39.

40. } 41. } 42.


(11)

CURRICULUM VITAE

Nama Lengkap : Nurmardiah Siregar Nama Panggilan : Mardiah

Tempat/Tanggal Lahir : Siolip / 21 April 1993 Jenis Kelamin : Wanita

Agama : Islam

Warga Negara : Indonesia

Alamat : Jl. Garu 6 No. 19A Medan Amplas Mobile Phone : 085315056414

E-mail : diahsiregar87@gmail.com

Riwayat Pendidikan

[2012 – 2016] : S1 Ilmu Komputer Universitas Sumatera Utara, Medan [2009 – 2012] : SMA Negeri 1 Barumun Tengah

[2006 – 2009] : SMP Negeri 1 Barumun Tengah [2000 – 2006] : SD Negeri 147592 Pasar Binanga

---

Keahlian

Database : MySQL

Perkantoran : Microsoft Office Bahasa : Indonesia, Inggris

Pengalaman Organisasi danKepanitian

[2012 – 2013] Anggota Bidang Kaderisasi UKMI Al-Khuwarizmi [2013 – 2014] Anggota Keputrian UKMI Al-Khuwarizmi


(12)

Seminar

[2013] Seminar Nasional “Pengenalan Kebudayaan Sumatera Utara” [2014] Seminar Open BTS “ICONS”

[2014] Seminar Nasional Literasi Informasi “SENARAI” Demikian riwayat hidup ini saya perbuat dengan sebenar-benarnya.

Medan, Oktober 2016


(13)

DAFTAR PUSTAKA

Argakusumah, K.W. & Hansun, S. 2014. Implementasi Algoritma Boyer Moore pada Aplikasi Kamus Kedokteran Berbasis Android. Volume 6. No. 2. Hal : 1-9.

Charras, C & Lecroq. T. 2014. Handbook of Exact String Matching Algorithms (E-Book). English. Collage Publications.

Efendi, D. & Kurnaedi, A. 2012. Pengembangan Algoritma Boyer Moore pada Translator Bahasa Pemrograman. Volume 8. No. 1. Hal : 13-21.

Fitria, M., Andresware. D. & Efendi. R. 2014. Rancang Bangun Aplikasi Kamus Bahasa Indonesia-Minang, Minang-Indonesia Berbasis Android. Jurnal Ilmiah BidangSains-Teknologi Murni Disiplin dan Antar Disiplin 1(14):1-11.

Goni, P.I. 2013. Penerapan Algoritma Turbo Boyer Moore untuk Pendeteksian Kemiripan Dokumen Teks Berbasis Web. Skripsi. Universitas Kristen Satya Wacana.

Munir, R. 1999. Algoritma dan Pemrograman dalam Bahasa Pascal dan C. Informatika : Bandung.

Rizal. 2015. Permainan Tebak Kata Bahasa Aceh Menggunakan Algoritma Turbo Boyer Moore. Volume 6. No. 1. Hal : 1-20.

Subandijo. 2011. Efisiensi Algoritma dan Notasi O besar. Volume 2. No. 2. Hal : 849-858. Safaat, N. 2014. Pemograman Aplikasi Mobile Smartphone dan Tablet PC Berbasis Android.

Revisi Kedua. Informatika : Bandung.

Sagita, V. & Prasetiyowati, M.I. 2012. Studi Perbandingan Implementasi Algoritma Boyer Moore, Turbo Boyer Moore dan Tuned Boyer Moore dalam Pencarian String. Volume 6. No. 1. Hal : 1-7.

Shalahuddin, M. & Rosa, A.S. 2013. Rekayasa Perangkat Lunak. Informatika : Bandung. Tim Eramedia. 2009. Kamus Pintar Fisika. Era Media


(14)

BAB 3

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis sistem ialah teknik untuk menyelesaikan suatu masalah di dalam sistem menjadi suatu komponen kecil dengan cara mengidentifikasi kebutuhan, mengevaluasi konsep sistem, melakukan analisis teknis dan ekonomis, mengalokasikan fungsi-fungsi untuk perangkat keras, perangkat lunak, manusia, database dan elemen yang lain, membuat batasan biaya dan jadwal serta menciptakan definisi sistem. Ada dua tahapan analisis sistem yaitu analisis masalah dan analisis persyaratan. Analisis masalah untuk memahami kelayakan masalah dan analisis persyaratan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu dikerjakan sistem.

3.1.1 Analisis Masalah

Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dibangunnya sebuah sistem agar sistem yang akan dibangun dapat berjalan sesuai dengan tujuan dari sistem tersebut. Seperti yang kita ketahui, jika seseorang ingin mencari pengertian istilah Fisika, hal yang pertama kali digunakan yaitu dengan menggunakan kamus. Kamus identik dengan ukuran yang tebal dan berat sehingga tidak efektif dan efisien dalam penggunaannya karena menghabiskan banyak waktu dalam proses pencarian. Untuk mengatasi permasalahan tersebut dibutuhkan sebuah aplikasi kamus Fisika yang bertujuan untuk mempermudah proses pencarian kata.

Pencarian kata adalah masalah yang akan diselesaikan dengan menggunakan sistem. Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa (fishbone diagram). Diagram ishikawa berbentuk seperti ikan dimana strukturnya terdiri dari kepala ikan (fish’shead) dan tulang-tulang ikan (fish’s bones). Nama dan judul dari masalah yang akan diidentifikasi terletak pada bagian kepala ikan. Sedangkan tulang-tulang ikan menggambarkan penyebab-penyebab masalah tersebut. Diagram Ishikawa pada sistem dapat dilihat pada Gambar 3.1.


(15)

Gambar 3.1 Diagram Ishikawa

3.1.2 Analisis Persyaratan

Dalam membangun sebuah sistem, perlu dilakukan tahap analisis persyaratan. Analisis persyaratan terbagi dua yaitu, analisis persyaratan fungsional dan persyaratan non-fungsional. Persyaratan fungsional mendeskripsikan aktivitas yang disediakan oleh sistem. Sedangkan persyaratan non-fungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.

3.1.2.1Persyaratan Fungsional

Persyaratan fungsional mendeskripsikan aktivitas yang disediakan oleh sistem. Ada beberapa hal yang menjadi persyaratan fungsional pada Aplikasi Kamus Fisika berikut :

1. Sistem ini akan melakukan pencocokan string terhadap kata yang diinputkan oleh user. 2. Sistem dapat menghasilkan pengertian istilah Fisika yang diinput dengan menggunakan

algoritma pencarian Turbo Boyer Moore dan String Matching onOrdered Alphabets. 3. Sistem ini hanya menampilkan pengertian Fisika dan tidak berupa rumus Fisika. 4. Sistem akan menampilkan pengertian Fisika secara rinci dan jelas.


(16)

3.1.2.2Persyaratan Non-Fungsional

Persyaratan non-fungsional menggambarkan tentang karakteristik atau batasan terhadap kepuasan pemakaian pada sistem, seperti performa, kemudahan pemakaian oleh pengguna, biaya dan kemampuan sistem dalam bekerja.

Ada beberapa persyaratan non-fungsional yang harus dipenuhi diantaranya : 1. Performa

Sistem yang akan dibangun harus dapat menampilkan hasil pencarian yang sesuai dengan apa yang dicari.

2. Mudah digunakan

Sistem yang akan dibangun harus mudah digunakan (user friendly) sehingga pengguna dapat mengakses sistem dengan mudah.

3. Hemat Biaya

Sistem yang dibangun tidak memerlukan perangkat tambahan ataupun perangkat pendukung lainnya yang dapat mengeluarkan biaya.

4. Kontrol

Perangkat lunak yang dibangun akan menampilkan pesan warninguntuk setiap inputan yang tidak sesuai.

4.2 Pemodelan

Pemodelan sistem dilakukan untuk memperoleh gambaran cara kerja sistem dan tentang objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan kegunaannya (Rosa A.S, 2013).

Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai bahasa pemodelan untuk mendesain dan merancang aplikasi kamus Fisika dalam mencari ktaa Fisika. Model UML yang digunakan antara lain Usecase diagram, Activity diagram, dan Sequence diagram.


(17)

4.2.1 Usecase Diagram

Usecase atau diagram usecase merupakan pemodelan untuk kelakuan (behavior) sistem informasi yang aka dibuat. Usecase mendeksripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem informasi yang akan dibuat. Usecase digunakan untuk mengetahui fungsi apa yang ada di dalam sebuah sistem informasi dan siapa yang berhak menggunakan fungsi-fungsi tersebut (Rosa A.S, 2013).

Gambar 3.2 Usecase Diagram Sistem

Gambar ini menunjukkan bahwa user (aktor) melakukan input kata lalu user memilih algoritma untuk pencarian yaitu Turbo Boyer Moore dan String Matching on Ordered Alphabets kemudian sistem akan menampilkan hasil pencarian dari kedua algoritma.


(18)

Tabel 3.1Usecase Proses Input kata

Name Input kata

Actors User

Description Usecase ini mendeskripsikan penginputan kata yang ingin

dicari

Basic Flow User menginput kata

Alternate Flow -

Pre Condition User ingin menginput kata

Post Condition User mendapatkan hasil pencarian kata

Tabel 3.2 Usecase Proses Algoritma Turbo Boyer Moore

Name Algoritma Turbo Boyer Moore

Actors User

Description Usecase ini mendeskripsikan proses pencarian kata

menggunakan Algoritma Turbo Boyer Moore

Basic Flow Usermemilih AlgoritmaTurbo Boyer Moore

Alternate Flow Usermemilih AlgoritmaString Matching on Ordered Alphabets

Pre Condition User ingin mencari kata

Post Condition User mendapatkan hasil pencarian kata

Tabel 3.3 Usecase Proses Algoritma String Matching on Ordered Alphabets

Name Algoritma String Matching on Ordered Alphabets

Actors User

Description Usecase ini mendeskripsikan proses pencarian kata

menggunakan Algoritma String Matching on Ordered Alphabets


(19)

Basic Flow Usermemilih Algoritma String Matching on Ordered Alphabets

Alternate Flow Usermemilih Algoritma Turbo Boyer Moore

Pre Condition User ingin mencari kata

Post Condition User mendapatkan hasil pencarian kata

3.2.2 Activity Diagram

Activity Diagram atau diagram aktivitas menggambarkan workflow (aliran kerja) atau aktivitas dari sebuah sistem atau menu yang ada pada perangkat lunak. Yang perlu diperhatikan adalah bahwa diagram aktivitas menggambarkan aktivitas sistem bukan yang dikerjakan oleh aktor, jadi aktivitas yang dapat dilakukan oleh sistem (Rosa A.S, 2013).

Gambar 3.3 Activity Diagram Sistem

Gambar ini menunjukkan bahwa user melakukan input kata lalu user memilih algoritma untuk pencarian kemudian sistem melakukan pemanggilan fungsi algoritma yang telah dipilih dan sistem menampilkan hasil pencarian ke user.

3.2.3 Sequence Diagram

Sequence Diagram atau diagram sekuen menggambarkan objek pada usecase dengan mendeskripsikan waktu objek dan message yang dikirimkan dan diterima antar objek (Rosa A.S, 2013).


(20)

Gambar 3.4 Sequence Diagram Sistem

Gambar 3.4 menunjukkan bahawa user melakukan input kata dan pilih algoritma kemudian sistem akan melakukan pemanggilan fungsi algoritma dan sistem akan menampilkan hasil pencarian.

3.3 Pseudocode

3.3.1 Pseudocode Algoritma Turbo Boyer Moore

Tabel 3.4 PseudocodeTurbo Boyer Moore

Begin

i = 0; u = 0; shift := m;

while i ≤ n – m do j := m;

while j > 0 andif x[j] = y[i + j] do if u ≠ and j = m- shift then

j := j –u; else

j := j-1; endif


(21)

3.3.2 Pseudocode Algoritma String Matching on Ordered Alphabets Tabel 3.5 PseudocodeString Matching on Ordered Alphabets

Tabel 3.4 PseudocodeString Matching on Ordered Alphabets

if j ≤ 0 then

Output (i + 1);

shift := matching_shift (0); u := m –shift;

else

v := m – j;

turbo_shift := u – v;

shift := max (occurence_shift (y(i+j))-m+j, matching_shift (j), turbo_shift);

if shift = matching_shift (j) then u := min (m-shift, v);

else

if turbo_shift < occurence_shift (y[i+j])-m+j then shift := max(shift, u+1);

endif u:= 0; endif endif

i := i+shift; endwhile

end

function NEXT_MAXIMAL_SUFFIX (x[l].. .x[n], (i,j,k,p))

while (j + k ≤ n) do { if (x[i+k] = x[j+k]) then

{ if (k = p) then (j:=j+p; k:=l;) else k:=k+l; }

else if (x[i+k] > x[j+k]) then

{ j:=j+k; k:=l; p:=j-i; ) else

{ i:=j; j:=i+l; k:=l; p:=l; } } end while

return (i, j,k,p);


(22)

3.4 Flowchart

Flowchart adalah diagram alir data dari suatu kerangka program. Fungsinya sama dengan algoritma, akan tetapi penuangan langkah-langkah penyelesaiannya menggunakan simbol-simbol grafis atau digambarkan secara grafis sehingga akan lebih mudah memahami arah logikanya (Rosa A.S, 2013). Flowchart yang akan dibangun dapat ditunjukkan pada Gambar

3.5

function POSITIONS(x,t); /* FINAL VERSION */

begin P:=0(;

pos:=o; m:=l; (i,j, k,p) :=(O, l,l,l);

while (pas 5 Itl) do

{ while (pos+m<ltl) and (mllxl) and (t[pos+ml=x[ml) do m:=m+l;

if (pos+m=ltl+l) or (m=lxl+l) then P:=P U Iposl;

if (pos+m=ltl +l) then m:=m-1;

(i,jik,p) :=NEXT MAXIMAL SUFFIX(X[~]...~[~-l]t[pos+m], (i, j,k,p));

if (x[ll...x[i] suffix Of

the prefix of length p of x[i+l]...x[m-l]t[pos+m]) then if (j-i > p) then

{ pos:=pos+p; m:=m-ptl; j:=j-p; )

else

{ pos:=pos+p; m:=m-p+l; (i,j,k,p) :=(O,l, 1,l); }

else

{ pos:=postmax(i,min(m-i, j))+l; m:=l; (i,j,k,p) :=(O,l,l,l);) t

return(P) ; end function.


(23)

Gambar 3.5 Flowchart Gambaran umum Sistem Kamus

Gambar 3.5 menggambarkan alur sistem secara umum pada Kamus Fisika, dimana user

terlebih dahulu memilih algoritma pencarian, lalu user menginput kata yang akan dicari setelah itu sistem akan mencocokkan kata sesuai dengan algoritma yang telah dipilih dan sistem akan menampilkan hasil pencarian.


(24)

Gambar 3.6 Flowchart Algoritma Turbo Boyer Moore

Gambar 3.6 menggambarkan alur pada proses pencarian Algoritma Turbo Boyer Moore, dimana proses awal yang dilakukan yaitu memasukkan teks dan pattern. Proses pencocokan teks dan pattern dimulai dari karakter kanan ke kiri. Karakter yang akan dibandingkan dimulai pada karakter kanan paling ujung. Jika terjadi ketidakcocokan, maka dilakukan pergeseran sesuai dengan tabel bmGs dan bmBc. Dan jika terjadi kecocokan maka sistem akan mengeluarkan hasil pencarian dan selesai.


(25)

(26)

Gambar 3.7 menggambarkan alur pada proses pencarian Algoritma String Matching on Ordered Alphabets, dimana proses awal yang dilakukan yaitu memasukkan teks dan pattern. Proses pencocokan teks dan pattern dimulai dari awal karakter, dan pencocokan dilakukan pada karakter paling kiri pattern. Jika terjadi ketidakcocokan antara teks dan pattern maka lakukan pergeseran berdasarkan nilai Next Maximal Suffix dari karakter berikutnya. Dan jika terjadi kecocokan lakukan pencocokan kekarakter selanjutnya. Jika teks belum berada diujung, maka mulai pencocokan karakter paling kiri pattern, dan jika sudah berada diujung teks, maka proses pencocokan telah selesai dilakukan.

3.5 Perancangan Antarmuka Sistem (Interface)

Proses perancangan antarmuka (interface) sebuah sistem adalah proses yang cukup penting dalam perancangan sebuah sistem. Merancang antarmuka merupakan bagian yang paling penting dari merancang sebuah sistem. Sebuah antarmuka harus dirancang dengan memperhatikan faktor pengguna sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan untuk digunakan oleh pengguna.

3.5.1 Rancangan Halaman Splash Screen

Halaman Splash Screen merupakan halaman yang pertama kali muncul pada saat aplikasi dibuka. Rancangan Splash Screen dapat dilihat pada Gambar 3.8

Gambar 3.8Splash Screen

Gambar 3.8 Splash Screen

Keterangan:

1. Splash Screen untuk menampilkan loading progress saat pertama kali membuka aplikasi.

Physics


(27)

3.5.2 Rancangan Halaman Utama

Halaman utama terdiri dari ImageView, Search,About dan Exit. Adapun tampilan dari halaman utama dapat dilihat pada Gambar 3.9

Gambar 3.9 Halaman Utama

Gambar 3.9 Halaman Utama

Keterangan :

1. ImageView berisi Judul Aplikasi

2. Button Search menampilkan pencarian kata Fisika 3. Button About berisi judul dan pembuat aplikasi 4. Button Exit untuk mengeluarkan user dari aplikasi

3.5.3 Rancangan Halaman Search

Halaman Search berfungsi untuk melakukan pencarian kata pada kamus sesuai dengan algoritma yang telah dipilih. Adapun tampilan dari halaman search dapat dilihat pada

Gambar 3.10

1

PENCARIAN ISTILAH DALAM ILMU FISIKA

SEARCH

ABOUT EXIT


(28)

Gambar 3.10 Halaman Search

Gambar 3.10 Halaman Search

Ket :

1. Toolbar untuk menampilkan judul halaman

2. TabLayout untuk menampilkan pilihan algoritma pencarian 3. EditText untuk menampilkan kata

4. Button untuk mencari kata

5. ListView untuk menampilkan hasil pencarian

3.5.4 Rancangan Halaman About

Halaman About berisi judul dan nama dari pembuat Aplikasi. Adapun tampilan dari halaman search dapat dilihat pada Gambar 3.11

2

TurboBoyer Moore String Matching on Ordered Alphabets 1

Pencarian

3

Cari.... 4Cari


(29)

Gambar 3.11 Halaman About

Gambar 3.11 Halaman About

Ket :

1. Toolbar untuk menampilkan judul halaman

2. ImageView untuk menampilkan judul dan nama pembuat aplikasi.

3.5.5 Rancangan Halaman Exit

Halaman Exit berfungsi untuk mengeluarkan user dari aplikasi. Adapun tampilan dari halaman exit dapat dilihat pada Gambar 3.12

2

PERBANDINGAN ALGORITMA TURBO BOYER MOORE DAN STRING MATCHINGON ORDERED ALPHABETS UNTUK APLIKASI

KAMUS FISIKA BERBASIS ANDROID SKRIPSI

NURMARDIAH SIREGAR

P

ROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI INFORMASI UNIVERSITAS SUMATERAUTARA

2016

1

Tentang

LOGO USU


(30)

Gambar 3.12 Halaman Exit

Gambar 3.11 Halaman Exit

Ket :

1. TextView untuk menampilkan teks. 2. TextView untuk menampilkan teks. 3. Button untuk tidak keluar dari aplikasi. 4. Button untuk keluar dari aplikasi.

1

Konfirmasi

2

Apa anda ingin keluar ?

3

4


(31)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

Implementasi sistem merupakan tahapan lanjutan dari analisis dan perancangan sistem. Sistem ini dibangun dengan menggunakan bahasa pemrograman Java dan menggunakan Software Android Studio. Pada sistem ini terdapat 5 tampilan halaman, yaitu Halaman Splash Screen, Tampilan Halaman Utama, Halaman Search, Halaman About dan Halaman Exit.

4.1.1 Tampilan Halaman Splash Screen

Halaman Splash Screen merupakan halaman yang pertama kali muncul pada saat sistem dibuka. Adapun tampilan halaman Splash Screen dapat dilihat pada Gambar 4.1.


(32)

4.1.2 Tampilan Halaman Utama

Tampilan halaman utama berisi tentang menu Search, About dan Exit. Dimana pada menu Search, user bisa melakukan pencarian kata pada kamus Fisika. Pada menu About, user bisa melihat judul dan nama pembuat aplikasi. Adapun tampilan halaman utama aplikasi dapat dilihat pada Gambar 4.2.

Gambar 4.2 Form Utama

4.1.3 Tampilan Halaman Search

Tampilan halaman search berisi tentang algoritma pencarian kata pada kamus sesuai dengan algoritma yang telah dipilih. Adapun tampilan halaman pencarian dapat dilihat pada Gambar

4.3. Pada halaman ini, sebelum user melakukan pencarian, terlebih dahulu user memilih

algoritma kemudian mengklik button cari. Setelah button cari diklik maka hasil pencarian kata akan ditampilkan dan alert dialog running time. Adapun tampilan hasil pencarian dapat dilihat pada Gambar 4.3.1.


(33)

Gambar 4.3 Search


(34)

4.1.4 Tampilan Halaman About

Tampilan halaman about berisi tentang judul dan nama pembuat aplikasi. Adapun tampilan halaman about dapat dilihat pada Gambar 4.4.

Gambar 4.4 About

4.1.5 Tampilan Halaman Exit

Tampilan halaman exit berfungsi untuk mengeluarkan user dari aplikasi. Adapun tampilan dari halaman exit dapat dilihat pada Gambar 4.5.


(35)

Gambar 4.5 Exit

4. 2 Pengujian Sistem

Pengujian sistem dilakukan untuk mengetahui bagaimana cara kerja sistem dalam melakukan pencarian kata pada kamus Fisika dengan menggunakan Algoritma Turbo Boyer Moore dan String Matching on Ordered Alphabets. Untuk pengujian yang akan dicari adalah string dari inputannya sendirinya. Semua hasil akan ditampilkan sesuai dengan inputan pada pencarian.


(36)

4.2.1 Pengujian Pencarian kata pada Kamus Fisika dengan Algoritma Turbo Boyer Moore

Tabel 4.1 Hasil Pencarian kata Algoritma Turbo Boyer Moore No Hasil

Pencarian

Gambar Hasil Pencocokan

Gambar Hasil Running Time

P01 Match


(37)

P03 Match


(38)

P05 Match


(39)

P07 Match


(40)

P09 Match


(41)

P011 Match


(42)

P13 Match


(43)

P15 Match


(44)

4.2.2 Pengujian Pencarian kata pada kamus Fisika dengan Algoritma String Matching on Ordered Alphabets

Tabel 4.2 Hasil Pencarian kata Algoritma String Matching on Ordered Alphabets No Hasil

Pencarian

Gambar Hasil Pencocokan

Gambar Hasil Running Time

P01 Match


(45)

P03 Match


(46)

P05 Match


(47)

P07 Match


(48)

P09 Match


(49)

P011 Match


(50)

P13 Match


(51)

P15 Match


(52)

4.3 Hasil Pengujian

Hasil pengujian dari penelitian ini adalah Running time dari pencarian kata dan jumlah kata yang ditemukan pada Algoritma Turbo Boyer Moore dan Algoritma String Matching on Ordered Alphabets yang dilakukan terhadap string yang berbeda. Adapun hasil pengujian dari kedua algoritma yang digunakan akan dijelaskan pada Tabel 4.3 dan Tabel 4.4.

Tabel 4.3 Hasil Pengujian Algoritma Turbo Boyer Moore No Kata yang dicari Running Time

(ms)

Jumlah kata yang ditemukan

Kejadian

1 a 11 92 Match

2 sasi 7 3 Match

3 gaya 9 4 Match

4 gerak jatuh bebas 6 1 Match

5 gerak lurus berubah beraturan

6 1 Match

6 hukum newton 1 12 1 Match

7 archi 10 1 Match

8 viskosit 9 1 Match

9 ang 5 10 Match

10 met 8 7 Match

11 m 10 58 Match

12 ng 8 16 Match

13 ha 8 12 Match

14 lomb 8 10 Match

15 per 9 9 Match

16 tan 13 13 Match

TOTAL 139


(53)

Tabel 4.4 Hasil Pengujian Algoritma String Matching on Ordered Alphabets No Kata yang dicari Running Time

(ms)

Jumlah kata yang ditemukan

Kejadian

1 a 13 92 Match

2 sasi 13 3 Match

3 gaya 20 4 Match

4 gerak jatuh bebas 13 1 Match

5 gerak lurus berubah beraturan

6 1 Match

6 hukum newton 1 16 1 Match

7 archi 14 1 Match

8 viskosit 14 1 Match

9 ang 18 10 Match

10 met 20 7 Match

11 m 10 58 Match

12 ng 14 16 Match

13 ha 9 12 Match

14 lomb 9 10 Match

15 per 12 9 Match

16 tan 9 13 Match

TOTAL 210

RATA-RATA 13,125

Setelah mendapatkan hasil Pengujian dari Tabel 4.3 dan Tabel 4.4 maka dibuat grafik perbandingan hasil pengujian dari kedua algoritma tersebut. Grafik dapat dilihat pada


(54)

Gambar 4.6 Perbandingan Hasil Running Time Algoritma Turbo Boyer Moore dan

Algoritma String Matching on Ordered Alphabets

Dari grafik diatas dapat dijelaskan bahwa Algoritma Turbo Boyer Moore mendapatkan Hasil Running Time yang relatif rendah dibandingkan dengan Algoritma String Matching on Ordered Alphabets. Artinya bahwa Algoritma Turbo Boyer Moore lebih cepat untuk pencocokan kata dibandingkan dengan Algoritma String Matching on Ordered Alphabets. Total Hasil Perbandingan dari kedua algoritma tersebut dapat dijelaskan pada Gambar 4.7.

Gambar 4.7 Perbandingan Total Running TimeAlgoritma Turbo Boyer Moore dan Algoritma

String Matching on Ordered Alphabets

Dari grafik diatas dapat dijelaskan bahwa Algoritma Turbo Boyer Moore memiliki nilai Total

0 5 10 15 20 25 a sa si g a y a g e ra k j a tu h b e b a s g e ra k l u ru s b e ru b a h … h u k u m n e w to n 1 a rc h i v is k o si t a n g m e t m e t n g h a lo m b p e r ta n

Turbo Boyer Moore

String Matching on Ordered Alphabets 0 50 100 150 200 250 TOTAL

Running Time


(55)

Running Time yang rendah dibandingkan dengan Algoritma String Matching on Ordered Alphabets Artinya bahwa Algoritma Turbo Boyer Moore lebih cepat untuk pencocokan kata dibandingkan dengan Algoritma String Matching on Ordered Alphabets.

4.4 Kompleksitas Algoritma

Kompleksitas algoritma yang akan diuji adalah kompleksitas Algoritma Turbo Boyer Moore dan Algoritma String Matching on Ordered Alphabets. Seperti dijelaskan pada Tabel 4.5 dan

4.6 berikut.

4.4.1 Kompleksitas Algoritma Turbo Boyer Moore

Tabel 4.5 Kompleksitas hasil Algoritma Turbo Boyer Moore

kode Program Eksekusi

while (j<=n - m ){ N

i= m - 1; N

while (i>=0 &&x.charAt(i)==

y.charAt(i+j)){

n2

--i; n2

if (u != 0 &&i== m -1 - shift) n2

i-= u; } n2

if (i<0){ 1

return 1; }

1 else {

v = m - 1 - i; 1

turboShift= u - v; 1

bcShift= bmBc[y. charAt(i+j)] - m + 1 + i;

1

shift = Math.max(turboShift, bcShift); 1

shift = Math.max(shift, bmGs[i]); 1

if (shift == bmGs[i]) 1

u = Math.min(m - shift, v); 1

else {

if (turboShift<bcShift)shift =

Math.max(shift , u + 1);

1

u = 0;

}} 1

j += shift; 1

} return 0; } 1

Total eksekusi 2n + 4n2 + 13


(56)

(n2).

4.4.2 Kompleksitas Algoritma String Matching on Ordered Alphabets

Tabel 4.6 Kompleksitas hasil Algoritma String Matching on Ordered Alphabets

kode Program Eksekusi

while (j + k < m ){ N

a = x.charAt ( i + k ) N

b = x.charAt(j + k); N

if (a == b) N

if (k == p) { N

j += p;

k = 1; N

} else

++k; 1

else if (a < b) { 1

j += k; k = 1; p = j - i;

1 } else {

i = j; ++j;

k = p = 1; } } }

1

while (j <= n - m) { n2

while (i+ j < n &&i< m &&x.charAt(i) ==

y.charAt(i+ j)) n

2

++i; n2

if (i== 0) { 1

++j; ip= -1; jp= 0; k = p = 1;

1

} else { 1

if (i >= m) return 1; 1

if (ip<0 || ip<p &&java.util.Arrays.equals((y +

j).substring(0, ip+ 1).toCharArray(), (y + j +

p).substring(0, ip+ 1).toCharArray())) {

1 j += p;

i -= p; 1

if (i<0)

i= 0; 1

if (jp- ip>p)

jp-= p; 1

else {

ip= -1; jp= 0; k = p = 1; }

1

} else {


(57)

+ 1); i= jp= 0; ip= -1; k = p = 1;

} } }

return 0;

} } }

Kompleksitas algoritma String Matching on Ordered Alphabets tersebut adalah 6n + 3n2 + 13 dengan Big O = O (n2).


(58)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan analisis, perancangan dan pengujian pada aplikasi kamus Fisika dengan menggunakan algoritma Turbo Boyer Moore dan String Matching on Ordered Alphabets, maka diperoleh beberapa kesimpulan :

1. Berdasarkan penelitian yang telah dilakukan, algoritma Turbo Boyer dan String Matching on Ordered Alphabets berhasil diterapkan dalam aplikasi Kamus Fisika.

2. Algoritma Turbo Boyer Moore melakukan pencarian kata lebih cepat bila dibandingkan dengan String Matching on Ordered Alphabets karena algoritma Turbo Boyer Moore memaksimalkan nilai pergeseran pattern sehingga kata yang dicari lebih cepat ditemukan dan untuk running time Turbo Boyer Moore lebih cepat dari String Matching on ordered Alphabets.

5.2 Saran

Adapun saran-saran yang dapat dipertimbangkan untuk tahap pengembangan penelitian ini antara lain :

1. Aplikasi ini sebaiknya ditambahkan menu pengolahan data, agar data bisa ditambah, edit dan hapus.

2. Diharapkan dapat menambahkan data rumus-rumus Fisika agar kedepannya aplikasi tidak hanya mencari istilah Fisika tetapi bisa juga mencari rumus-rumus Fisika.

3. Dapat menggunakan algoritma pencarian string lainnya, seperti algoritma Knuth Morris Pratt.

4. Diharapkan untuk kedepannya aplikasi kamus Fisika tidak hanya untuk pencarian tetapi lebih baik ditambahkan juga rank terhadap istilah yang sering dicari user.


(59)

BAB 2

LANDASAN TEORI

2.1 Definisi Kamus

Kamus menurut KBBI (Kamus Besar Bahasa Indonesia) merupakan buku acuan yang memuat kata dan ungkapan, biasanya disusun menurut abjad berikut keterangan dan makna, pemakaian atau terjemahan (Argakusumah, 2014). Selain itu, kamus merupakan buku yang memuat kumpulan istilah atau nama yang disusun menurut abjad beserta dengan penjelasan makna dan pemakaiannya.

2.2 Definisi Algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis (Rinal Munir, 1999). Kata logis merupakan kata kunci. Langkah-langkah tersebut harus logis, ini berarti nilai kebenarannya harus dapat ditentukan, benar atau salah. Langkah-langkah yang tidak benar dapat memberikan hasil yang salah.

Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer yang diacu dalam terminologi algoritma. Dalam kehidupan sehari-hari banyak terdapat proses yang digambarkan dalam suatu algoritma. Cara membuat kue atau masakan, misalnya dinyatakan dengan suatu resep. Resep makanan adalah suatu algoritma.

2.2.1 Definisi Algoritma String Matching

String Matching adalah pencarian sebuah pattern pada sebuah teks (kurnaedi, 2012). Prinsip kerja algoritma string matching adalah sebagai berikut :

1. Memindai teks dengan bantuan sebuah window yang ukurannya sama dengan panjang pattern.

2. Menempatkan window pada awal teks.

3. Membandingkan karakter pada window dengan karakter dari pattern. Setelah pencocokan (baik hasilnya cocok atau tidak cocok), dilakukan shif ke kanan pada window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks. Mekanisme ini disebut sliding-window.


(60)

String Matching dibagi menjadi dua, yaitu exact string matching dan heuristic (statistical matching). Exact matching digunakan untuk menemukan pattern yang berasal dari satu teks. Contoh pencarian exact matching adalah pencarian kata “pelajar” dalam kalimat “ saya seorang pelajar” atau “saya seorang siswa”. Sistem akan memberikan hasil bahwa kata pelajar dan siswa bersinonim. Algoritma exact matching diklasifisikan menjadi tiga bagian menurut arah pencariannya, yaitu :

1. Arah pencarian dari kiri ke kanan.

Algoritma yang termasuk dalam kategori ini adalah Brute Force, Morris dan Pratt (yang kemudian dikembangkan oleh Knuth, Morris dan Pratt).

2. Arah pembacaan dari kanan ke kiri.

Algoritma yang termasuk dalam kategori ini adalah Boyer Moore yang kemudian dikembangkan menjadi algoritma Turbo Boyer Moore, Tuned Boyer Moore dan Zhu Takaoka.

3. Arah pencarian yang ditentukan oleh program.

Algoritma yang termasuk dalam kategori ini adalah algoritma Colussi dan Crochemore-Perrin.

Heuristic matching adalah teknik yang digunakan untuk menghubungkan dua data terpisah ketika exact matching tidak mampu mengatasi karena pembatasan pada data yang tersedia. Heuristic matching dapat dilakukan dengan perhitungan distance antara pattern dengan teks. Exact dan heuristic matching memiliki kemiripan makna tetapi berbeda tulisan.

2.2.1.1 Algoritma Turbo Boyer Moore

Algoritma Turbo Boyer Moore adalah sebuah algoritma pencocokan pola tertentu terhadap suatu kalimat atau paragraf. Algoritma ini merupakan varian dari Algoritma Boyer Moore yang memungkinkan terjadinya ‘lompatan’ melewati segmen yang tidak memerlukan preprosessing tambahan dengan kecepatan yang baik. Algoritma Turbo Boyer Moore mengambil metode pencarian string boyer moore yaitu good suffix dan bad character suffix. Akan tetapi, Algoritma Turbo Boyer Moore berbeda dengan Algoritma Boyer Moore, algoritma ini dimungkinkan terjadinya ‘lompatan’ melewati segmen mengingat faktor dari teks yang cocok dengan akhiran dari pattern selama attempt terakhir sehingga memanfaatkan teknik turbo shift. Cara kerja algoritma Turbo Boyer Moore ini adalah :


(61)

Pertama : inisialisasi, karena algoritma ini menggunakan good suffix shif dan bad character shif dari Algoritma Boyer Moore maka untuk inisialisasi dijalankan prosedur preBmBc dan preBmGs seperti Algoritma Boyer Moore.

Kedua : Melakukan proses pencocokan karakter pada pattern dengan karakter pada teks. Jika terjadi ketidakcocokan maka dilakukan pergeseran terbesar berdasarkan tabel BmBc, tabel BmGs dan turbo shif.

Adapun Prinsip Kerja dari Algoritma Turbo Boyer Moore adalah sebagai berikut : 1. Algoritma Boyer Moore mulai melakukan pencocokan pattern pada awal teks.

2. Dari kanan ke kiri, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter pada teks yang bersesuaian sampai salah satu kondisi berikut dipenuhi: a) Di pattern dan di teks yang dibandingkan tidak cocok (missmatch).

b) Semua karakter di pattern cocok. Algoritma akan memberitahukan penemuan di posisi ini.

c) Algoritma kemudian menggeser pattern dengan memaksimalkan nilai pergeseran good suffix dan pergeseran bad character, lalu mengulangi langkah b sampai patern berada di ujung teks.

Untuk fase pencarian dalam algoritma Turbo Boyer Moore, proses yang dilakukan hampir sama dengan fase pencarian pada Algoritma Boyer Moore. Yang membedakan adalah adanya variabel yang berfungsi untuk menampung nilai pergeseran apabila pada putaran sebelumnya nilai yang diambil untuk pergeseran berasal dari tabel good suffix shift. Nilai ini nantinya akan digunakan sebagai nilai yang mungkin digunakan untuk pergeseran pattern. Fase inisialisasi pada algoritma ini sama dengan fase inisialisasi pada algoritma Boyer Moore, yaitu mempunyai kompleksitas waktu dan ruang sebesar O(n + σ) dengan σadalah besar

ruang alfabet. Sedangkan pada fase pencocokan, algoritma ini mempunyai kompleksitas waktu sebesar O(m) dengan jumlah pencocokan karakter pada algoritma ini adalah 2m. Contoh :

Teks : Titik Berat Benda Pattern : Benda

Tabel 2.1 Tabel BmBc dan BmGs

Index 0 1 2 3 4 Pattern B e n d a BmBc 4 3 2 1 0 BmGs 4 4 4 4 1


(62)

Temu Pola 1

Tabel 2.2 Pergeseran karakter TBM 1

T I T I K B E R A T B E N D A 1

B E N D A

Terlihat perbedaan pada index K :

- Geser BmBc(K) – m + ( index bawah + 1) = 5 – 5 + 5 = 5 - BmGs[4] = 1

Sehingga geser pattern sebesar 5 (nilai maksimal dari kedua perhitungan)

Temu Pola 2

Tabel 2.3 Pergeseran karakter TBM 2

T I T I K B E R A T B E N D A 1 -

B E N D A

Terlihat perbedaan pada index R , maka :

- Geser BmBc(R) – m + ( index bawah + 1 ) = 5 – 5 + 4 = 4 - BmGs[3] = 4

Sehingga geser pattern sebesar 4 (nilai maksimal dari kedua perhitungan)

Temu Pola 3

Tabel 2.4 Pergeseran karakter TBM 3

T I T I K B E R A T B E N D A 1

B E N D A

Terlihat perbedaan pada index E , maka :

- Geser BmBc(E) – m + ( index bawah + 1 ) = 3– 5 + 5 = 3 - BmGs[4] = 1


(63)

Temu Pola 4

Tabel 2.5 Pergeseran karakter TBM 4

T I T I K B E R A T B E N D A - - - - - B E N D A

Pada temu pola 4, tidak perlu dilakukan pergeseran lagi karena sudah sampai pada indeks terakhir.

2.2.1.2 Algoritma String Matching on Ordered Alphabets

Algoritma String Matching on Ordered Alphabets ialah algoritma yang mirip dengan algoritma pencarian satu-satu (brute force). Perbedaanya adalah pada saat dilakukan percobaan untuk menyamakan string dimana ‘jendela’ diposisikan oleh substring y[j..j+m-1], saat prefix u dari x telah ditemukan dan ketidaksamaan terjadi antara karakter a dalam x dengan b dalam kata y.

y x

Gambar 2.1 Percobaan pada algoritma string matching on ordered alphabets

Algoritma ini akan menghitung periode ub seperti pada gambar diatas. Jika tidak berhasil dalam menemukan periode yang tepat, algoritma ini akan beralih untuk menghitung perkiraannya.

Algoritma String Matching on Ordered Alphabets melakukan 37 kali perbandingan karakter. Pada kasus terburuk, algoritma ini melakukan perbandingan karakter sebanyak 6n+5 perbandingan danmenghasilkan kompleksitas waktu pencariannya O(n).

Contoh :

Teks : Titik Berat benda Pattern : Benda

Perhitungan Pergeseran : Untuk proses pergeseran dihitung berdasarkan banyaknya string yang sama ditambah dengan string yang berbeda. Jika karakter string teks dan pattern tidak sama, lakukan pengecekan ke string berikutnya.

U B


(64)

Tabel 2.6. Pergeseran Pattern SMOA 1

T I T I K B E R A T B E N D A

B E N D A Geser pattern 1 kali.

Tabel 2.7. Pergeseran Pattern SMOA 2

T I T I K B E R A T B E N D A

B E N D A

Geser pattern 1 kali

Tabel 2.8. Pergeseran Pattern SMOA 3

T I T I K B E R A T B E N D A

B E N D A Geser pattern 1 kali

Tabel 2.9. Pergeseran Pattern SMOA 4

T I T I K B E R A T B E N D A

B E N D A

Geser pattern 1 kali

Tabel 2.10. Pergeseran Pattern SMOA 5

T I T I K B E R A T B E N D A

B E N D A

Geser pattern 1 kali

Tabel 2.11. Pergeseran Pattern SMOA 6

T I T I K B E R A T B E N D A

B E N D A


(65)

Tabel 2.12. Pergeseran Pattern SMOA 7

T I T I K B E R A T B E N D A

B E N D A

Geser pattern 3 kali

Tabel 2.13. Pergeseran Pattern SMOA 8

T I T I K B E R A T B E N D A

B E N D A Geser pattern 1 kali

Tabel 2.14. Pergeseran Pattern SMOA 9

T I T I K B E R A T B E N D A

B E N D A

Geser pattern 1 kali

Tabel 2.15. Pergeseran Pattern SMOA 10

T I T I K B E R A T B E N D A

B E N D A

Geser pattern 1 kali

Tabel 2.16. Pergeseran Pattern SMOA 11

T I T I K B E R A T B E N D A

B E N D A

Pattern sudah cocok dan teks sudah berada diujung, proses pencocokan selesai.

2.3 Definisi Android

Android adalah sebuah sistem operasi untuk perangkat mobile berbasis linux yang mencakup sistem operasi, middleware dan aplikasi. Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi mereka (Safaat,2011).


(66)

Android dipuji sebagai “platform mobile pertama yang lengkap, terbuka dan bebas”. 1. Lengkap (Complete Platform) : para desainer dapat melakukan pendekatan yang

komprehensif ketika mereka sedang mengembangkan platform Android. Android merupakan sistem operasi yang aman dan banyak menyediakan tools dalam membangun software dan memungkinkan peluang pengembangan aplikasi.

2. Terbuka (Open Source Platform) : Platform Android disediakan melalui lisensi open source. Pengembang dapat dengan bebas untuk mengembangkan aplikasi. Android sendiri menggunakan Linux Kernel 2.6.

3. Bebas (Free Platform) : Android adalah platform/aplikasi yang bebas untuk develope. Tidak ada lisensi atau biaya royalti untuk dikembangkan pada platform Android. Tidak ada biaya keanggotaan diperlukan. Tidak ada biaya pengujian. Tidak ada kontrak yang diperlukan. Aplikasi untuk Android dapat didistribusikan dan diperdagangkan dalam bentuk apapun.

2.4 Kompleksitas Algoritma

Algoritma ialah urutan-urutan langkah logis dalam menyelesaikan suatu masalah secara sistematis. Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus (efficient). Kemangkusan algoritma diukur dari waktu (time), eksekusi algoritma dan kebutuhan ruang (space) memori.

Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang bagus dari sejumlah algoritma penyelesaian masalah. Model abstrak pengukuran waktu/ruang harus independen dari pertimbangan mesin dan compiler apapun. Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah kompleksitas algoritma.

Ada dua macam kompleksitas algoritma, yaitu: kompleksitas waktu dan kompleksitas ruang. Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukann. Kompleksitas ruang, S(n) diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n.


(67)

Kompleksitas algoritma diukur berdasarkan kinerja dengan menghitung waktu eksekusi suatu algoritma. Waktu eksekusi algoritma dapat diklasifisikan menjadi tiga kelompok besar, yaitu best-case (kasus terbaik), average-case (kasus rerata) dan worst-case (kasus terjelek). Pada pemograman yang dimaksud dengan kasus terbaik, kasus rerata dan kasus terjelek dalam suatu algoritma adalah besar kecilnya atau hanya sedikitnya sumber-sumber yang digunakan oleh suatu algoritma. Makin sedikit makin baik, makin banyak makin jelek. Biasanya sumber-sumber yang paling dipertimbangkan tidak hanya waktu eksekusi tetapi bisa juga besar memori, catu-daya dan sumber-sumber lain (subandijo, 2011).

2.6 Notasi Big O

Notasi Big O adalah cara yang digunakan untuk menguraikan laju pertumbuhan suatu fungsi yang tidak lain adalah time complexity suatu algoritma (subandijo, 2011). Secara sederhana notasi Big O didefinisikan sebagai berikut:

Jika n adalah ukuran masukan dan f(n) serta g(n) adalah fungsi positif dari n maka f(n) adalah O(g(n)) jika dan hanya jika terdapat konstanta positif c dan integer positif n0 sedemikian rupa

sehingga f(n) c g(n) untuk semua n n0.

Secara tidak formal, suatu algoritma disebut menunjukkan laju pertumbuhannya merupakanorder suatu fungsi matematika jika untuk ukuran masukan n, fungsi f(n) dikalikan konstanta positifmerupakan batas atas atau limit dari waktu eksekusi algoritma tersebut. Dengan kata lain untuk ukuran masukan n yang lebih besar daripada n0 dan konstanta c,

waktu eksekusi algoritma tidak akanmelampaui c * f(n). Sebagai contoh, karena waktu eksekusi insertion sort tumbuh secara kuadratik dengan besarnya masukan n ketika ukuran masukan naik, insertion sort dikatakan mempunyai order O (n2).

Notasi ini dikenal dengan nama notasi Big O yang secara khusus digunakan untuk menguraikan efisiensi algoritma. Notasi Big O tidaksecara spesifik memasukkan suku konstanta. Jika hasil estimasi efisiensi algoritma mencakup jumlah beberapa suku, notasi ini hanya akan mengambil suku dengan order tertinggi. Sebagai contohalgoritma dengan efisiensi T(n) = n2+n+10 maka order algoritma tersebut adalah O(n2). Ilustrasiberikut menujukkan bagaimana dominasi n2 terhadap nilai T(n) secara keseluruhan saat nilai n menuju tak berhingga.


(68)

n n2 n 10 T(n)

0 0 0 10 10

10 100 10 10 120

100 10000 100 10 10110

1000 1000000 1000 10 1001010

10000 100000000 10000 10 100010010

Meskipun notasi ini dikembangkan sebagai bagian dari matematika murni, notasi ini kerap dipakai pada analisis algoritma untuk menguraikan algoritma pemakaian sumber-sumber komputasi, kasus terburuk atau kasus rerata waktu eksekusi atau pemakaian memori suatu algoritma kerapdisajikan sebagai fungsi dari besaran masukan menggunakan notasi Big O. Hal ini memungkinkan perancang algoritma memprediksi perilaku algoritmanya dan menentukan algoritma mana yang akan digunakan tak tergantung pada arsitektur komputer dan clock rate. Karena notasi Big O mengabaikan nilai konstanta dan kelipatannya dan juga mengabaikan efisiensi untuk argumen-argumen dalam ukuran yang lebih kecil ordernya, maka notasi Big O tidak selalu mencerminkan algoritma yang paling cepat pada data tertentu, tetapi pendekatan ini tetap sangat efektif untuk membandingkan berbagai algoritma saat ukuran data masukan menuju tak terhingga.

Konsep O(n) dikenal sebagai salah satu metode asymptotic analysis untuk menyatakan batas atas asimptotik. Sebagai contoh, T(n) = 13n3+ 42n2+ 2n log n + 4n di mana T merupakanfungsi dari obyek masukan n, ditulis sebagai T(n). Jika n tumbuh menjadi lebih besar maka nilai n3akan jauh lebih besar daripada n2, n log n dan n sehingga n3 mendominasi T(n). Waktu eksekusi T(n)secara garis besar mempunyai order n3 dan notasinya ditulis sebagai O(n3).

Dua metode lain yang dikenal adalah Ω (n) untuk menyatakan batas bawah asimtotik dan Ɵ(n) untuk menyatakan tight bound asymptotic. Secara formal T(n) didefinisikan sebagai berikut: T(n) = O(f(n)) jika terdapat konstanta c dan n0 sedemikian rupa sehingga T(n) < c *

f(n) untuk n >n0. Ini berarti bahwa untuk n >n0 maka c * f(n) merupakan batas atas dari T(n).

Sebagai contoh, jika T(n) = 1000n dan f(n) = n2, n0 = 1000 dan c = 1 maka T(n) 1 * f(n)


(69)

Notasi Big O adalah cara yang sangat menyenangkan untuk menyajikan skenario keadaanterjelek suatu algoritma, meskipun ia juga dapat digunakan untuk menyajikan kasus rerata. Sebagai contoh, skenario kasus terjelek quick sort adalah O(n2), tetapi rerata waktu eksekusinya adalah O(n log n).

2.5 Penelitian yang Relevan

Berikut ini beberapa penelitian yang terkait dengan Algoritma Turbo Boyer Moore dan String Matching on Ordered Alphabets :

1. Vina Sagita, Maria Irmina Prasetiyowati (2013) dalam jurnal yang berjudul studi perbandingan implementasi algoritma boyer moore, turbo boyer moore dan tuned boyer moore dalam pencarian string. Menyatakan bahwa algoritma Turbo Boyer Moore merupakan algoritma tercepat kedua dari ketiga varian algoritma tersebut. 2. Rizal (2015) dalam jurnal yang berjudul permainan tebak kata bahasa aceh

menggunakan algoritma turbo boyer moore. Menyatakan bahwa pencocokan string yang diterapkan pada aplikasi permainan tebak kata bahasa aceh berhasil diterapkan dan menghasilkan pencocokan yang sesuai dengan yang di harapkan. Algoritma Turbo Boyer Moore melakukan pencocokan dengan sangat cepat.

3. Priskila Ifke Goni (2013) dalam skripsi yang berjudul penerapan algoritma turbo boyer moore untuk pendeteksian kemiripan dokumen berbasis android. Menyatakan bahwa dalam proses pendeteksian, Algoritma Turbo Boyer Moore dijadikan sebagai string (pattern) matching. Berdasarkan dokumen yang diuji kinerja dari algoritma Turbo Boyer Moore bergantung pula pada hasil akhir dari tahap preprocessing yakni tahap tokenizing dan tahap filtering.


(70)

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Dunia pendidikan dan ilmu pengetahuan pada saat ini semakin berkembang dengan pesat yang disertai dengan semakin banyaknya arus informasi dan ilmu pengetahuan ilmiah yang masuk ke indonesia, salah satunya dalam bidang Ilmu Fisika. Dengan semakin banyaknya penemuan-peneman baru yang juga disertai dengan semakin banyaknya istilah-istilah baru dalam Ilmu Fisika harus diketahui secara luas khususnya bagi pelajar, mahasiswa serta kalangan ilmiah.

Kamus Fisika merupakan kamus yang mencakup tentang istilah-istilah fisika, termasuk di dalamnya ilmu tentang zat dan energi (seperti cahaya, panas dan bumi). Kamus Fisika merupakan penunjang yang dapat membantu seseorang untuk memahami istilah-istilah penting dalam Ilmu Fisika. Didalamnya banyak memuat materi-materi Fisika yang sangat penting untuk diketahui. Oleh sebab itu, tidak salah jika kamus Fisika dimiliki oleh para pelajar atau masyarakat ilmiah. Akan tetapi, jika dilihat dari isinya istilah-istilah Fisika sangat banyak dan membutuhkan banyak waktu sehingga mengakibatkan proses pencarian kata dalam kamus semakin lambat dan tidak efesien.

Jadi untuk mengatasi permasalahan tersebut, dibutuhkan suatu aplikasi kamus Fisika yang dapat mempermudah dan mempersingkat waktu dalam penggunaannya. Untuk mempercepat dan mempermudah dalam proses pencarian, dibutuhkan suatu algoritma yang dapat memaksimalkan waktu proses pencarian. Algoritma adalah langkah-langkah logis dalam menyelesaikan suatu masalah yang disusun secara sistematis. Algoritma pencarian pada saat ini semakin berkembang, ada algoritma yang proses pencocokan string dari arah kanan ke kiri dan dari kiri ke kanan. Pada penelitian ini, penulis berinisiatif menggunakan dua algoritma dimana proses pergeserannya berbeda. Kedua algoritma ini akan dibandingkan dan dilihat bagaimana kecepatan masing-masing algoritma dalam pencocokan kata. Adapun algoritma yang akan digunakan yaitu Algoritma Turbo Boyer Moore dan String Matching on Ordered Alphabets.


(71)

Algoritma Turbo Boyer Moore adalah sebuah algoritma pencocokan pola tertentu terhadap suatu kalimat atau paragraf. Algoritma ini merupakan varian dari Algoritma Boyer Moore yang memungkinkan terjadinya ‘lompatan’ melewati segmen yang tidak memerlukan preprosesing tambahan dengan kecepatan yang baik. Algoritma Turbo Boyer Moore adalah sebuah perbaikan dari Algoritma Boyer Moore. Algoritma Turbo Boyer Moore mengambil metode pencarian String Boyer Moore yaitu good suffix dan bad character suffix. Akan tetapi, Algoritma Turbo Boyer Moore berbeda dengan Algoritma Boyer Moore, algoritma ini dimungkinkan terjadinya ‘lompatan’ melewati segmen mengingat faktor dari teks yang cocok dengan akhiran dari pattern selama attempt terakhir sehingga memanfaatkan teknik turbo shift. Teknik ini mempunyai dua keunggulan (Charras & Lecroq, 2014):

1. Teknik ini memungkinkan untuk melompati faktor dari teks tersebut. 2. Teknik ini mengijinkan Pergeseran turbo

Perpindahan yang dilakukan ketika proses pencarian string akan berbeda dengan proses yang dilakukan pada algoritma Boyer Moore. Perpindahan ini disebut dengan perpindahan turbo. Perpindahan turbo ini hanya dapat dilakukan jika pada saat melakukan perbandingan pada saat tersebut, panjang dari karakter yang sama antara pattern dan teks lebih besar dari panjang dari karakter sama yang telah disimpan sebelumnya di variabel faktor pengingat akibatnya, proses pencarian akan menjadi lebih singkat.

Sedangkan Algoritma String Matching on Ordered Alphabets ialah algoritma yang mirip dengan algoritma pencarian satu-satu (brute force). Perbedaanya adalah pada saat dilakukan percobaan untuk menyamakan string. Algoritma ini menghitung suffix maksimal dari prefix pattern yang sama di gabung dengan karakter yang sama dari string yang dicari tiap percobaannya. Ini fungsinya untuk menghindarkan perhitungan dari awal lagi setelah pergantian panjang dilakukan. Algoritma ini membutuhkan fase untuk melakukan preproses. Kedua algoritma tersebut akan dibandingkan kecepatan masing-masing algoritma.

1.2 Perumusan Masalah

Berdasarkan uraian dari latar belakang di atas, masalah yang akan di bahas adalah Bagaimana perbandingan Algoritma Turbo Boyer Moore dan String Matching on Ordered Alphabets pada Aplikasi Kamus Fisika dengan mengunakan kompleksitas algoritma dan running time sebagai parameter pembanding


(72)

1.3 Ruang Lingkup Penelitian

Adapun batasan masalah dalam penelitian ini adalah sebagai berikut :

1. Aplikasi ini dibuat untuk membantu user dalam mencari kata ilmiah Fisika 2. Aplikasi ini tidak membahas rumus Fisika

3. Parameter pembanding yang akan digunakan adalah kompleksitas algoritma Big O dan running time

4. Mengingat banyaknya istilah Fisika didalam kamus maka penulis membatasi kata yang diinputkan yaitu 200 istilah Fisika

5. Algoritma yang digunakan adalah Algoritma Turbo Boyer Moore dan String Matching on Ordered Alphabets

6. Aplikasi ini dibuat dengan Bahasa Pemrograman Java (Android Studio) 7. Aplikasi ini menggunakan DMBS Sqlite untuk penyimpanan data Fisika

1.4 Tujuan Penelitian

Adapun tujuan penelitian dalam tugas akhir ini adalah untuk mengetahui perbandingan kedua algoritma dengan melakukan pengujian kecepatan masing-masing algoritma.

1.5 Manfaat Penelitian

Manfaat dari penelitian ini adalah : 1. Manfaat bagi penulis :

a. Menambah pengetahuan penulis dalam merancang aplikasi Kamus Fisika berbasis android.

b. Menambah pengetahuan penulis tentang algoritma String Matching yaitu Algoritma Turbo Boyer Moore dan String Matching on Ordered Alphabets 2. Manfaat bagi bidang ilmu adalah sebagai bahan referensi bagi peneliti selanjutnya

yang ingin mengembangkannya.

3. Manfaat bagi pelajar adalah membantu dalam mencari pengertian istilah-istilah Fisika secara mendalam.


(1)

vii

COMPARISON ALGORITHM BOYER MOORE TURBO AND STRING MATCHING ON ORDERED ALPHABETS FOR APPLICATION

BASED PHYSICS DICTIONARY ANDROID

ABSTRACT

Physics Dictionary is a dictionary that covers about terms of physics, including the science of matter and energy (such as light, heat, and the Earth). It contains many materials Physics are very important to know. However, if seen from the contents of physics terms very much and takes a lot of time resulting in the search process said the dictionary is getting slower and not efficient. In this research talks about how comparison algorithms turbo boyer moore and string matching event on an ordered alphabets on the application a dictionary physics using complexity of algorithmic and running time as the parameters for comparison. This research aims to understand the comparison with the two algorithms do our tests the speed each algorithms. A String Matching algorithm is used that is the algorithm Turbo Boyer Moore and String Matching on Ordered Alphabets. As for the result of the research indicated that algorithms turbo boyer moore searching for a word of more quickly compared with strings matching event on an ordered alphabets because algorithms turbo boyer moore maximize the value of a shift pattern that the sought more quickly found and for running time turbo boyer moore faster than strings matching event on an ordered alphabets.

Keywords : A dictionary of physics, String Matching, Algorithm Turbo Boyer Moore, String Matching on Ordered Alphabets.


(2)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xii

Bab 1 Pendahuluan

1.1Latar Belakang 1

1.2Perumusan Masalah 2

1.3Ruang Lingkup penelitian 3

1.4Tujuan Penelitian 3

1.5Manfaat Penelitian 3

1.6Metode Penelitian 4

1.7Sistematika Penulisan 4

Bab 2 Landasan Teori

2.1 Definisi Kamus 6

2.2 Definisi Algoritma 6

2.2.1 Algoritma String Matching 6

2.2.1.1 Algoritma Turbo Boyer Moore 7

2.2.1.2 Algoritma String Matching on Ordered Alphabets 10

2.3 Definisi Android 12

2.4 Definisi Kompleksitas Algoritma 13

2.5 Notasi Big O 14

2.6 Penelitian yang Relevan 16

Bab 3 Analisis dan Perancangan Sistem

3.1 Analisis Sistem 17

3.1.1 Analisis Masalah 17

3.1.2 Analisis Persyaratan 18

3.1.2.1 Persyaratan Fungsional 18

3.1.2.2 Persyaratan Non-Fungsional 19

3.2 Pemodelan 19

3.2.1 Use Case Diagram 20

3.2.2 Activity Diagram 22

3.2.3 Sequance Diagram 22


(3)

ix

3.3 Pseudocode 23

3.3.1 Pseudocode Algoritma Turbo Boyer Moore 23 3.3.2 Pseudocode Algoritma String Matching on Ordered Alphabets 24

3.4 Flowchart 25

3.5 Perancangan Antarmuka Sistem(Interface) 29

3.5.1 Rancangan Halaman Splash Screen 29

3.5.2 Rancangan Rancangan Halaman Utama 30

3.5.3 Rancangan Halaman Search 30

3.5.4 Rancangan Halaman About 31

3.5.5 Rancangan Halaman Exit 32

Bab 4 Implementasi dan Pengujian

4.1Implementasi 34

4.1.1 Tampilan Halaman Splash Screen 34

4.1.2 Tampilan Halaman Utama 35

4.1.3 Tampilan Halaman Search 35

4.1.4 Tampilan Halaman About 37

4.1.5 Tampilan Halaman Exit 37

4.2 Pengujian Sistem 38

4.2.1 Pengujian pencarian kata pada Kamus Fisika dengan

Algoritma Turbo Boyer Moore 39

4.2.2 Pengujian pencarian kata Fisika dengan Algoritma String

Matching on Ordered Alphabets 47

4.3 Hasil Pengujian 55

4.4 Kompleksitas Algoritma 58

4.4.1 Kompleksitas Algoritma Turbo Boyer Moore 58 4.4.2 Kompleksitas Algoritma String Matching on Ordered

Alphabets 59

Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 61

5.2 Saran 61

Daftar Pustaka 62

Lampiran A : Listing Program Lampiran B : Curriculum Vitae


(4)

DAFTAR TABEL

Nomor

Tabel Nama Tabel Halaman

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 3.1 3.2 3.3 3.4 3.1 3.2 3.3 3.4 3.5 4.1 4.2 4.3 4.4 4.5 4.6

Tabel BmBc dan BmGs Pergeseran Karakter TBM 1 Pergeseran Karakter TBM 2 Pergeseran Karakter TBM 3 Pergeseran Karakter TBM 4 Pergeseran Pattern SMOA 1 Pergeseran Pattern SMOA 2 Pergeseran Pattern SMOA 3 Pergeseran Pattern SMOA 4 Pergeseran Pattern SMOA 5 Pergeseran Pattern SMOA 6 Pergeseran Pattern SMOA 7 Pergeseran Pattern SMOA 8 Pergeseran Pattern SMOA 9 Pergeseran Pattern SMOA 10 Pergeseran Pattern SMOA 11 Usecase Proses Input kata

Usecase Proses Algoritma Turbo Boyer Moore

Usecase Proses Algoritma String Matching on Ordered Alphabets

Pseudocode Turbo Boyer Moore

Pseudocode String Matching on Ordered Alpabets Hasil Pencarian Kata Algoritma Turbo Boyer Moore

Hasil Pencarian Kata Algoritma String Matching on Ordered Alphabets

Hasil Pengujian Algoritma Turbo Boyer Moore

Hasil Pengujian Algoritma String Matching on Ordered Alphabets

Kompleksitas hasil Algoritma Turbo Boyer Moore

Kompleksitas hasil Algoritma String Matching on Ordered Alphabets 8 9 9 9 10 11 11 11 11 11 12 12 12 12 12 12 21 21 21 23 24 39 47 55 56 58 59


(5)

xi

DAFTAR GAMBAR

Nomor

Gambar Nama Gambar Halaman

2.1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 4.1 4.2 4.3 4.3.1 4.4 4.5 4.6 4.7

Percobaan pada algoritma String Matching on Ordered Alphabets

Diagram Ishikawa Usecase Diagram Sistem Activity Diagram Sistem Sequence Diagram Sistem

Flowchart Gambaran Umum Sistem Kamus Flowchart Algoritma Turbo Boyer Moore

Flowchart Algoritma String Matching on Ordered Alphabets Rancangan Splash Screen

Rancangan Halaman Utama Rancangan Search

Rancangan About Rancangan Exit

Halaman Splash Screen Halaman Utama

Halaman Search Halaman Pencarian Halaman About Halaman Exit

Perbandingan Hasil Running Time Algoritma Turbo Boyer Moore dan Algoritma String Matching on Ordered Alphabets Perbandingan Total Running Time Algoritma Turbo Boyer Moore dan Algoritma String Matching on Ordered Alphabets

10 18 20 22 23 26 27 28 29 30 31 32 33 34 35 36 36 37 38 56 57


(6)

DAFTAR LAMPIRAN

A. Listing Program A-1

B. Curriculum Vitae B-1