Perbandingan Algoritma String Matching Not So Naive dan Skip Search Pada Platform Android

(1)

1. package com.rickywijaya.kamusistilahpsikologi; 2. import java.util.ArrayList;

3. import java.util.HashMap; 4. import java.util.List; 5. import android.app.Activity; 6. import android.content.Context; 7. import android.content.Intent; 8. import android.database.Cursor;

9. import android.database.sqlite.SQLiteDatabase; 10. import android.os.Bundle;

11. import android.support.v4.app.Fragment; 12. import android.view.KeyEvent;

13. import android.view.LayoutInflater; 14. import android.view.View;

15. import android.view.ViewGroup; 16. import android.view.WindowManager; 17. import android.view.inputmethod.EditorInfo;

18. import android.view.inputmethod.InputMethodManager; 19. import android.widget.AdapterView;

20. import android.widget.AdapterView.OnItemClickListener; 21. import android.widget.ArrayAdapter;

22. import android.widget.Button; 23. import android.widget.EditText; 24. import android.widget.ListAdapter; 25. import android.widget.ListView; 26. import android.widget.RadioButton; 27. import android.widget.RadioGroup; 28. import android.widget.SimpleAdapter; 29. import android.widget.TextView; 30. import android.widget.Toast; 31.

32. public class Psi_Arti extends Fragment implements View.OnClickListener 33. {

34. Button search;

35. EditText text;

36. ListView lv;

37. RadioButton radio1;

38. RadioGroup radio;

39. DatabaseHelper dbHelper;

40. ArrayList<HashMap<String, String>> list_data; 41. HashMap<String, String> map;

42. ArrayAdapter<Kamus> adapter;

43. List<Kamus> listKamus;

44. SQLiteDatabase db; 45. Cursor cursor = null;

46. String arti = "", istilah = "", pat = ""; 47. int urutan = 0;

48. int algo;

49. public static int komparasi;

50. @Override

51. public void onCreate(Bundle savedInstanceState)


(2)

55. @Override

56. public View onCreateView(LayoutInflater inflater, ViewGroup container,

57. Bundle savedInstanceState) {

58. View rootView = inflater.inflate(R.layout.psi_arti, container, false); 59. text = (EditText) rootView.findViewById(R.id.editText);

60. lv = (ListView) rootView.findViewById(R.id.lv_data); 61. radio1 = (RadioButton) rootView.findViewById(R.id.radio1); 62. radio = (RadioGroup) rootView.findViewById(R.id.grup); 63. search = (Button) rootView.findViewById(R.id.search); 64. list_data = new ArrayList<HashMap<String, String>>();

65. algo = 1;

66. radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()

67. {

68. public void onCheckedChanged(RadioGroup group, int checkedId) { 69. switch(checkedId){

70. case R.id.radio1:

71. algo = 1;

72. break;

73.

74. case R.id.radio2:

75. algo = 2;

76. break;

77. }

78. }

79. });

80. text.setOnKeyListener(new View.OnKeyListener() {

81. @Override

82. public boolean onKey(View v, int keyCode, KeyEvent event) { 83. if ( text.getText().toString().length() == 0){

84. ambildata();

85. }

86. return false;

87. }

88. });

89. search.setOnClickListener(new View.OnClickListener() {

90. @Override

91. public void onClick(View v) {

92. search();

93. return;

94. }

95. });

96. ambildata();

97. lv.setOnItemClickListener(new OnItemClickListener() { 98. public void onItemClick(AdapterView<?> parent, View view, 99. int position, long id) {

100. TextView text = (TextView) view.findViewById(R.id.istilah); 101. TextView text1 = (TextView) view.findViewById(R.id.arti); 102. Bundle b = new Bundle();

103. b.putString("istilah", text.getText().toString().trim()); 104. b.putString("arti", text1.getText().toString().trim()); 105. Intent i = new Intent(getActivity(), ArtiActivity.class);

106. i.putExtras(b);

107. startActivity(i);

108. }

109. });


(3)

114. }

115. public void search() {

116. dbHelper = new DatabaseHelper(getActivity()); 117. db = dbHelper.getReadableDatabase();

118. pat = text.getText().toString(); 119. int ketemu = 0, i = 0;

120. urutan = 0; 121. komparasi = 0; 122. try {

123. list_data.clear();

124. long t = System.currentTimeMillis(); 125. if (cursor != null) {

126. cursor.moveToFirst();

127. do {

128. istilah = cursor.getString(0); 129. arti = cursor.getString(1);

130. if (pat.length() <= istilah.length()) {

131. if(algo == 1){

132. AlgoritmaNotSoNaive c = new AlgoritmaNotSoNaive();

133. ketemu = c.searching(pat.toUpperCase(), pat.length(), istilah.toUpperCase(), istilah.length());

134. }

135. else if (algo == 2){

136. AlgoritmaSkipSearch c = new AlgoritmaSkipSearch();

137. ketemu = c.searching(pat.toUpperCase(), pat.length(), istilah.toUpperCase(), istilah.length());

138. }

139. if (ketemu == 1) {

140. urutan++;

141. map = new HashMap<String, String>(); 142. map.put("urutan", Integer.toString(urutan)); 143. map.put("arti", arti);

144. map.put("istilah", istilah); 145.

146. list_data.add(map);

147. i += 1;

148. }

149. }

150. } while (cursor.moveToNext());

151. }

152. long t2 = (System.currentTimeMillis() - t); 153. if (i == 0) {

154.Toast.makeText(getActivity().getBaseContext(), "Kata tidak ditemukan & Running Time : " + t2 + " ms & " + komparasi + " banyak komparasi", Toast.LENGTH_SHORT).show();

155. } else {

156.

157.ListAdapter adapt = new SimpleAdapter(getActivity(), list_data, R.layout.list_row, new String[]{"urutan", "istilah", "arti"},

158. new int[]{R.id.id, R.id.istilah, R.id.arti}); 159. lv.setAdapter(adapt);

160.Toast.makeText(getActivity().getBaseContext(), "Running Time : " + t2 + " ms & " + komparasi + "

banyak komparasi", Toast.LENGTH_SHORT).show();

161. }

162. }


(4)

166. }

167. public void ambildata() { 168. list_data.clear();

169. dbHelper = new DatabaseHelper(getActivity()); 170. db = dbHelper.getReadableDatabase();

171. cursor = db.query("tb_istilah", new String[]{"istilah", "arti"}, null, null, null, null, "istilah");

172. urutan = 0; 173.

174. try {

175. if (cursor != null) { 176. cursor.moveToFirst();

177. do {

178. urutan++;

179. istilah = cursor.getString(0); 180. arti = cursor.getString(1);

181. map = new HashMap<String, String>();

182. map.put("urutan", Integer.toString(urutan) + "."); 183. map.put("istilah", istilah);

184. map.put("arti", arti); 185. list_data.add(map);

186. } while (cursor.moveToNext());

187. ListAdapter adapter = new SimpleAdapter(getActivity(), list_data, R.layout.list_row, new String[]{"urutan", "istilah", "arti"},

188. new int[]{R.id.id, R.id.istilah, R.id.arti}); 189. lv.setAdapter(adapter);

190. }

191. } catch (Exception e) {

192. Toast.makeText(getActivity().getBaseContext(), "Data Kosong", Toast.LENGTH_SHORT).show();

193. }

194. db.close();

195. }

196.}

1. package com.rickywijaya.kamusistilahpsikologi; 2. import android.os.Bundle;

3. import android.support.v4.app.Fragment; 4. import android.view.KeyEvent;

5. import android.view.LayoutInflater; 6. import android.view.View;

7. import android.view.ViewGroup; 8. import java.util.ArrayList; 9. import java.util.HashMap; 10. import java.util.List; 11. import android.R.string; 12. import android.app.Activity; 13. import android.content.Intent; 14. import android.database.Cursor;

15. import android.database.sqlite.SQLiteDatabase; 16. import android.text.Editable;


(5)

20. import android.widget.ArrayAdapter; 21. import android.widget.Button; 22. import android.widget.EditText; 23. import android.widget.ListAdapter; 24. import android.widget.ListView; 25. import android.widget.RadioGroup; 26. import android.widget.RadioButton; 27. import android.widget.SimpleAdapter; 28. import android.widget.TextView; 29. import android.widget.Toast; 30.

31. public class Arti_Psi extends Fragment implements View.OnClickListener 32. {

33. Button search;

34. EditText text;

35. ListView lv;

36. RadioGroup radio;

37. DatabaseHelper dbHelper;

38. ArrayList<HashMap<String, String>> list_data; 39. HashMap<String, String> map;

40. ArrayAdapter<Kamus> adapter;

41. List<Kamus> listKamus;

42. SQLiteDatabase db; 43. Cursor cursor = null;

44. String arti = "", istilah = "", pat = ""; 45. int urutan = 0;

46. int algo;

47. public static int komparasi;

48. @Override

49. public void onCreate(Bundle savedInstanceState)

50. {

51. super.onCreate(savedInstanceState);

52. }

53. @Override

54. public View onCreateView(LayoutInflater inflater, ViewGroup container,

55. Bundle savedInstanceState) {

56. View rootView = inflater.inflate(R.layout.psi_arti, container, false); 57. text = (EditText) rootView.findViewById(R.id.editText);

58. lv = (ListView) rootView.findViewById(R.id.lv_data); 59. radio = (RadioGroup) rootView.findViewById(R.id.grup); 60. search = (Button) rootView.findViewById(R.id.search); 61. list_data = new ArrayList<HashMap<String, String>>(); 62. algo = 1;

63. radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()

64. {

65. public void onCheckedChanged(RadioGroup group, int checkedId) {

66. switch(checkedId){

67. case R.id.radio1:

68. algo = 1;

69. break;

70. case R.id.radio2:

71. algo = 2;

72. break;

73. }

74. }


(6)

79. if ( text.getText().toString().length() == 0){

80. ambildata();

81. }

82. return false;

83. }

84. });

85. search.setOnClickListener(new View.OnClickListener() {

86. @Override

87. public void onClick(View v) {

88. search();

89. return;

90. }

91. });

92. ambildata();

93. lv.setOnItemClickListener(new OnItemClickListener() { 94. public void onItemClick(AdapterView<?> parent, View view, 95. int position, long id) {

96. TextView text = (TextView) view.findViewById(R.id.istilah); 97. TextView text1 = (TextView) view.findViewById(R.id.arti); 98. Bundle b = new Bundle();

99. b.putString("istilah", text.getText().toString().trim()); 100. b.putString("arti", text1.getText().toString().trim()); 101. Intent i = new Intent(getActivity(), IstilahActivity.class);

102. i.putExtras(b);

103. startActivity(i);

104. }

105. });

106. return rootView;

107. }

108. @Override

109. public void onClick(View v) {

110. }

111. public void search() {

112. dbHelper = new DatabaseHelper(getActivity()); 113. db = dbHelper.getReadableDatabase();

114. cursor = db.query("tb_istilah", new String[]{"istilah", "arti"}, null, null, null, null, "arti"); 115. pat = text.getText().toString();

116. int ketemu = 0, i = 0; 117. urutan = 0;

118. komparasi = 0; 119. try {

120. list_data.clear();

121. long t = System.currentTimeMillis(); 122. if (cursor != null) {

123. cursor.moveToFirst();

124. do {

125. istilah = cursor.getString(0); 126. arti = cursor.getString(1); 127. if (pat.length() <= arti.length()) {

128. if(algo == 1){

129. AlgoritmaNotSoNaive c = new AlgoritmaNotSoNaive();

130. ketemu = c.searching(pat.toUpperCase(), pat.length(), arti.toUpperCase(), arti.length());

131. }

132. else if (algo == 2){


(7)

136. if (ketemu == 1) {

137. urutan++;

138. map = new HashMap<String, String>(); 139. map.put("urutan", Integer.toString(urutan)); 140. map.put("istilah", istilah);

141. map.put("arti", arti);

142. list_data.add(map);

143. i += 1;

144. }

145. }

146. } while (cursor.moveToNext());

147. }

148. long t2 = (System.currentTimeMillis() - t); 149. if (i == 0) {

150. Toast.makeText(getActivity().getBaseContext(), "Kata tidak ditemukan & Running Time : " + t2 + " ms & " + komparasi + " banyak komparasi",

Toast.LENGTH_SHORT).show();

151. } else {

152. ListAdapter adapt = new SimpleAdapter(getActivity(), list_data, R.layout.list_arti, new String[]{"urutan", "arti", "istilah"},

153. new int[]{R.id.id, R.id.arti, R.id.istilah}); 154. lv.setAdapter(adapt);

155. Toast.makeText(getActivity().getBaseContext(), "Running Time : " + t2 + " ms & " + komparasi + " banyak komparasi", Toast.LENGTH_SHORT).show();

156. }

157. }

158. catch (Exception e) {

159. Toast.makeText(getActivity().getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();

160. }

161. }

162. public void ambildata() { 163. list_data.clear();

164. dbHelper = new DatabaseHelper(getActivity()); 165. db = dbHelper.getReadableDatabase();

166. cursor = db.query("tb_istilah", new String[]{"istilah", "arti"}, null, null, null, null, "istilah");

167. urutan = 0; 168. try {

169. if (cursor != null) { 170. cursor.moveToFirst();

171. do {

172. urutan++;

173. istilah = cursor.getString(0); 174. arti = cursor.getString(1);

175. map = new HashMap<String, String>();

176. map.put("urutan", Integer.toString(urutan) + "."); 177. map.put("arti", arti);

178. map.put("istilah", istilah); 179. list_data.add(map);

180. } while (cursor.moveToNext());

181. ListAdapter adapter = new SimpleAdapter(getActivity(), list_data, R.layout.list_arti, new String[]{"urutan", "arti", "istilah"},

182. new int[]{R.id.id, R.id.arti, R.id.istilah}); 183. lv.setAdapter(adapter);


(8)

187. }

188. db.close(); 189. }

190.}

1. package com.rickywijaya.kamusistilahpsikologi; 2. import java.util.ArrayList;

3. import java.util.HashMap; 4. import android.widget.Toast; 5. public class AlgoritmaNotSoNaive { 6. int k,ell,a;

7. ArrayList<HashMap<String, String>> list_data; 8. public int searching(String pat, int m, String text, int n){

9. try{

10. Psi_Arti komp = new Psi_Arti(); 11. Arti_Psi komp1 = new Arti_Psi();

12. int j =0;

13. int hasil =0;

14. Boolean found = false; 15. char [] x = pat.toCharArray(); 16. char [] y = text.toCharArray(); 17. //preprocessing

18. if(x[0] == x[1]){

19. k=2;

20. ell=1;

21. }

22. else {

23. k=1;

24. ell=2;

25. }

26. //searching 27. while (j <= n-m){

28. System.out.println(m);

29. if(x[1] != y[j+1] && komp.komparasi++>=0 && komp1.komparasi++>=0){

30. j += k;

31. }

32. else {

33. komp.komparasi++;

34. komp1.komparasi++;

35. a=1;

36. for (int b=0;b<m;b++){

37. try{

38. if(x[b+1] == y[j+1+b] && x[0] == y[j] &&

komp.komparasi++>=0 && komp1.komparasi++>=0 ){

39. a++;} 40. else{ 41. break; 42. } 43. } 44.

45. catch(Exception e){


(9)

49. if(a == m){

50. found = true;

51. }

52. j+= ell;

53. }

54. }

55. if(found){

56. return 1;

57. }

58. else{

59. return 0;

60. }

61. }

62. catch (Exception e){

63. return 0;

64. }

65. }

66. }

1. package com.rickywijaya.kamusistilahpsikologi; 2. import java.util.ArrayList;

3.

4. public class AlgoritmaSkipSearch { 5.

6. public static int ASIZE = 256; 7.

8. public int searching(String pat, int m, String text, int n){

9. try{

10. Psi_Arti komp = new Psi_Arti();

11. Arti_Psi komp1 = new Arti_Psi();

12. char[] x = pat.toCharArray();

13. char[] y = text.toCharArray();

14. int i, j;

15. List1 ptr = null;

16. List1 z[] = new List1[ASIZE];

17. String sub_x, sub_y;

18. Boolean found = false;

19.

20. /*Prepocessing*/

21. for (int a=0; a<ASIZE; a++){

22. z[a] = null;

23. }

24.

25. for(i = 0; i < m; ++i){

26. ptr = new List1();

27. if (ptr==null) System.out.println("ERROR");

28. ptr.element = i;

29. ptr.next = z[x[i]];

30. z[x[i]] = ptr;

31. }

32.

33. /*Searching*/


(10)

37. for(ptr = z[y[j]]; ptr != null; ptr = ptr.next){

38. komp.komparasi++;

39. komp1.komparasi++;

40. int a=0;

41. for (int b=0;b<m;b++){

42. try{

43. if(x[b] == y[j-ptr.element+b] &&

komp.komparasi++>=0 && komp1.komparasi++>=0)

44. a++;

45. else

46. break;

47. }

48.

49. catch(Exception e){

50.

51. }

52. if(j-ptr.element<= n-m && a == m)

53. found = true;

54. }

55. }

56. }

57.

58. if(found){

59. return 1;

60. }

61. else{

62. return 0;

63. }

64. }

65. catch(Exception e){

66. return 0;

67. }

68. }

69. } 70.

71. class List1 {

72. public int element; 73. public List1 next; 74. }


(11)

DAFTAR RIWAYAT HIDUP

DATA PRIBADI

Nama Lengkap : Ricky Wijaya Jenis Kelamin : Laki - Laki

Tempat, Tanggal Lahir : Medan, 16 September 1994

Alamat : Jl. Brijend Katamso gang : Persatuan no : 19 Medan

Agama : Buddha

Telp/Hp : 0857 6119 6782

E-mail : sensong.rw@gmail.com

Pendidikan Terakhir : Universitas Sumatera Utara Medan, Fakultas Ilmu Komputer dan Teknologi Informasi. Jurusan S1 Ilmu Komputer

PENDIDIKAN FORMAL

1998– 2000 : TK SUTOMO 1 Medan 2000–2006 : SD SUTOMO 1 Medan 2006–2009 : SMP SUTOMO 1 Medan 2009–2012 : SMA SUTOMO 1 Medan

2012–2016 : S1 Ilmu Komputer Universitas Sumatera Utara, Medan

PENGALAMAN ORGANISASI

 Anggota Kerohanian KMB-USU,2013  Anggota Komite KMB-USU, 2013-2014  Ketua Komite KMB-USU, 2015

 Anggota Bidang Agama Buddha Pemerintahan Mahasiswa Fasikom–TI USU, 2013-2014


(12)

 Ketua Bidang Agama Buddha Pemerintahan Mahasiswa Fasilkom-TI USU, 2014-2015

PENGALAMAN KEPANITIAAN

 Anggota Panitia Acara Dies Natalis Ilmu Komputer USU, 2013

 Anggota Panitia Acara Seminar“What will you be?”IMILKOM USU, 2013  Anggota Panitia Acara Porseni Ilmu Komputer USU, 2014

 Anggota Panitia Dana PMB Ilmu Komputer USU, 2014  Anggota Panitia Acara Waisak KMB-USU, 2013  Koordinator Panitia Acara PMB KMB-USU, 2013  Koordinator Panitia Keamanan Baksos KMB-USU, 2013  Koordinator Panitia Acara Waisak KMB-USU, 2014  Koordinator Panitia PTT Gathday KMB-USU, 2014  Ketua Panitia PPO KMB-USU, 2015

SEMINAR

 Seminar NasionalLiterasi Informasi “SENARAI”, 2014  Seminar IMILKOM USU “What will you be?”, 2013


(13)

Alapati, K. P. & Mannava. V. 2011. An GUI Based Implementation of Pattern Matching Algorithms. International Journal of System And Technologies, 4(2): 207-215.

Bhandari, J. & Kumar, A. 2013. A Correlation Analysis of Suffix to Prefix rule, Two Window Rule and Non-Tandem Rule of Exact String Matching Algorithms.Proc. Of Int. Conf. On Advances in Computer Science, pp. 330-335

Cantone, D. & Faro, S. 2004. Searching for a subtring with constant extra space complexity. In Ferragina, P. & Grossi, R (Eds.), Proceedings of The

International Conference on FUN with Algorithms (FUN 2004), pp.

181-131

Charas, C. & Lecroq, T, 2004. Handbook of Exact String-Matching Algorithms.

King's College London Publications.

Charras, C., Lecroq, T., & Pehoushek, J. D. 1998. A very fast string matching algortihm for small alphabets and long patterns. Proceedings of the 9th

Annual Symposium on Combinatorial Pattern Matching,Piscataway, New

Jersey,pp. 55-64

Cormen, T.H, Leiserson, C.E, Rivest, R.L. & Stein, C. 2009.Introduction to

Algorithms. 3thEdition. The MIT Press:England.

Kamus Besar Bahasa Indonesia. (Online) http://www.kbbi.web.id (11 Maret 2016) Naser, M. A. 2010. Parallel Quick-Skip Search Hybird Algorithm For The Exact

String Matching Problem. Master Thesis, Universiti Sains Malaysia, pp.

18-19.

Naser, M. A., Rashid, N. A., & Aboalmaaly, M.F. 2012. Quick-Skip Search Hybird Algorithm for the Exact String Matching Problem.International Journal of

Computer Theory and Engineering, 4(2): 259-260.

National Institute of Standards and Technology. Dictionary of Algorithms and Data Structures (Online) http://www.nist.gov/dads/ (11 Maret 2016)


(14)

Nugraha, D.W. 2012. Penerapan kompleksitas waktu AlgoritmaPrimuntuk menghitung kemampuan komputer dalam melaksanakan perintah.Jurnal

Ilmiah Foristek2(2):196-197.

Subandijo. 2011. Efisiensi Algoritma dan Notasi O-besar.Jurnal ComTech

2(2):850-858.

Syaroni, M. & Munir, R. 2005. Pencocokan String Berdasarkan Kemiripan Ucapan (Phonetic String Matching) dalam Bahasa Inggris. Prosiding Seminar

Nasional: SNATI UII, Yogyakarta, 18 Juni 2005.pp. 1-6.

Whitten, J.L., Bentley, L.D. & Dittman, K.C. 2004. Metode Desain & Analisis

Sistem.Terjemahan TIM Penerjemah ANDI. ANDI : Yogyakarta.

Zarlis, M. & Handrizal. 2008.Algoritma & Pemrograman : Teori dan Pratik dalam


(15)

3.1 Analisis Sistem

Tahapan ini dilakukan untuk memaparkan pemahaman tentang sistem yang dibuat secara keseluruhan. Baik kinerja sistem maupun proses perancangan aplikasi pada sistem. pemahaman yang menyeluruh terhadap kebutuhan sistem sehingga diperoleh tugas-tugas yang akan dikerjakan sistem. Tahapan ini dilakukan agar pada saat proses perancangan aplikasi tidak terjadi kesalahan.

3.1.1 Analisis Masalah

Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dibangunnya sebuah sistem agar sistem yang akan dibangun tersebut dapat berjalan sebagaimana mestinya sesuai dengan tujuan dari sistem itu. Selama ini jika seseorang ingin mempelajari istilah dari sebuah cabang ilmu, pasti media yang digunakan untuk memperlancar penguasaan istilahnya adalah melalui kamus istilah. Seiring dengan berkembangnya teknologi, sekarang ini masyarakat tidak lagi menggunakan kamus manual. Namun masyarakat lebih cenderung memilih kamus digital atau yang lebih sering kita kenal yaitu kamus di

Smartphone. Aplikasi kamus didalam Smartphone tidaklah mencari kata secara

manual. Pencarian definisi / istilah kata yang telah tersimpan sebagai fieldnya kemudian mendapat hasil yang mendetail adalah masalah yang akan diselesaikan dengan menggunakan sistem ini.

Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa

(fishbone diagram). Diagram Ishikawa berbentuk seperti ikan yang strukturnya

terdiri dari kepala ikan (fish’s head) dan tulang-tulang ikan (fish’s bones). Nama atau judul dari masalah yang diidentifikasi terletak pada bagian kepala ikan. Sedangkan tulang-tulang ikan menggambarkan penyebab-penyebab masalah


(16)

tersebut (Whitten, J.L & Bentley, L.D. 2007). DiagramIshikawapada sistem ini dapat dilihat padaGambar 3.1

Sistem Pencarian Kata pada Kamus Istilah Psikologi dengan AlgoritmaNot So Naivedan Algoritma

Skip Search Metode dilakukan

manual Metode pencarian kamus

Istilah Psikologi masih jarang digunakan

Belum ada aplikasi berbasis android yang membandingkan dua algoritmastring matching

yang dipilih

Mencari Arti dari Istilah Psikologi Dan Juga Sebaliknya

Kamus Istilah Psikologi Yang Berupa Teks

Gambar 3.1DiagramIshikawa

PadaGambar 3.1dapat dilihat bahwa terdapat empat kategori penyebab masalah pada penelitian Perbandingan Algoritma String Matching Not So NaivedanSkip

Search pada platform Andorid yang digambarkan dengan tanda panah yang

mengarah ke tulang utama, yaitu berkaitan dengan pengguna (users), bahan (materials), metode (methods) dan media/alat yang terlibat (machine). Setiap detail penyebab masalah tersebut digambarkan dengan tanda panah yang mengarah ke masing-masing kategori.

3.1.2 Analisis Persyaratan

Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis persyaratan. Terdapat dua bagian pada analisis persyaratan, yaitu persyaratan fungsional dan persyaratan non-fungsional. Persyaratan fungsional mendeskripsikan aktivitas yang disediakan suatu sistem. Sedangkan Persyaratan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.

3.1.2.1 Persyaratan Fungsional

Persyaratan fungsional disini mendeskripsikan tentang sistem yang disediakan. Terdapat beberapa hal yang menjadi persyaratan fungsional pada Aplikasi Kamus Istilah Psikologi, antara lain :


(17)

1. Sistem melakukan pencocokan string melalui kata yang dimasukkan oleh pengguna.

2. Sistem dapat menghasilkan kata terjemahan dari inputan yang dicari dengan menggunakan AlgoritmaNot So Naivedan AlgoritmaSkip Search.

3. Sistem melakukaninputanberupa kata ataupun berupa kalimat.

4. Sistem menampilkan hasil pencarian berupa bentuk kata ataupun berupa kalimat.

3.1.2.2 Persyaratan Non-Fungsional

Persyaratan non-fungsional sistem merupakan karakteristik atau batasan yang menentukan kepuasan pada sebuah sistem seperti kinerja, kemudahan pengguna, biaya, dan kemampuan sistem bekerja tanpa mengganggu fungsionalitas sistem lainnya. Terdapat 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), artinya sistem ini akan mudah digunakan olehuserdengan tampilan yang sederhana dan dapat dimengerti.

3. Hemat biaya

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

4. Manajemen Kualitas

Sistem yang akan dibangun harus memiliki kualitas yang baik yaitu tidak mempersulituseruntuk melakukan pencarian kata.

3.1.3 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.


(18)

Pada penelitian ini digunakanUML(Unified Modeling Language) sebagai bahasa pemodelan untuk mendesain dan merancang aplikasi Kamus Istilah Psikologi.Model UML yang digunakan antara lain Use Case Diagram, Activity

diagram,danSequence diagram.

3.1.3.1 Use Case Diagram

Use Case Diagram adalah sebuah diagram yang dapat merepresentasikan

interaksi yang terjadi antara user dengan sistem. Diagram use case ini mendeskripsikan siapa saja yang menggunakan sistem dan bagaimana cara mereka berinteraksi dengan sistem. Use Case Diagram dari sistem yang akan dibangun dapat ditunjukkan padaGambar 3.2


(19)

Didalamuse casediagram digambarkan 1 orang aktor yang akan berperan yaitu

user. Untuk memperoleh definisi dari istilah psikologi maka user harus memilih

mode Istilah Psikologi – Definisi dan Definisi – Istilah Psikologi untuk memperoleh istilah psikologi dari definisi yang diinputkan. Definisi atau istilah yang dicari akan diinputkan dalamsearch boxyang disediakan.

Selanjutnya user memilih Algoritma yang ingin digunakan antara Algoritma Not So Naive dan Algoritma Skip Search. Setelah Algoritma dipilih lalu sistem akan melakukan pencarian dan menampilkan hasil. Pada proses memilih mode pengartian yang diinginkan, apakah Istilah Psikologi – Definisi atau Definisi–Istilah Psikologi, dapat dinyatakan dalamTabel 3.1

Tabel 3.1TabelUse CaseMemilihModeuntuk kata yang akan diartikan Name Memilih mode untuk kata yang akan diartikan

Actors User

Description Use Case ini mendeskripsikan proses mode, apakah Istilah Psikologi–Definisi atau Definisi–Istilah Psikologi

Basic Flow Usermemilihmode

Alternate Flow User dapat dapat memilih mode dari Istilah Psikologi – Definisi atau Definisi–Istilah Psikologi

Pre Condition Useringin memilihmodeuntuk kata yang ingin diartikan


(20)

Pada ProsesInputkata, dapat dinyatakan dalamTabel 3.2

Tabel 3.2TabelUse CaseProsesInputkata

Pada Proses AlgoritmaNot So Naive, dapat dinyatakan dalamTabel 3.3 Tabel 3.3TabelUse CaseProses AlgoritmaNot So Naive

Name Algoritma Not So Naive

Actors User

Description Use Case ini mendeskripsikan proses pencarian kata menggunakan AlgoritmaNot So Naive

Basic Flow Usermemilih Algoritma Not So Naive

Alternate Flow Usertidak memilih Algoritma Pre Condition Useringin mencari kata

Post Condition Usermendapatkan hasil pencarian kata

Name Input kata

Actors User

Description Use Case ini mendeskripsikan penginputan kata yang ingin diterjemahkan

Basic Flow Usermenginputkata Alternate Flow

-Pre Condition Useringin menginputkata


(21)

Pada Proses AlgoritmaSkip Search, dapat dinyatakan dalamTabel 3.4 Tabel 3.4TabelUse CaseProses AlgoritmaSkip Search

Name Algoritma Skip Search

Actors User

Description Use Case ini mendeskripsikan proses pencarian kata menggunakan AlgoritmaSkip Search

Basic Flow Usermemilih Algoritma Skip Search

Alternate Flow Usertidak memilih Algoritma Pre Condition Useringin mencari kata

Post Condition Usermendapatkan hasil pencarian kata

3.1.3.2 Activity Diagram

Activity Diagram adalah teknik untuk menggambarkan logika procedural, jalur

kerja sistem. Diagram ini menggambarkan berbagai alur kerja dalam sistem yang sedang dirancang, bagaimana masing-masing alur kerja berawal, decision yang mungkin terjadi, dan bagaimana mereka aktifitas atau alur kerja berakhir.Activity


(22)

Gambar 3.3Activity DiagramSistem

Pada Gambar 3.3 ditujukan didalam Activity diagram dapat dijelaskan bahwa

user harus membuka program terlebih dahulu. Lalu user memilih mode

terjemahan apakah itu Istilah Psikologi–Definisi atau Definisi–Istilah Psikologi. Selanjutnyausermenginput kata yang ingin dicari. Laluusermemilih Algoritma untuk melakukan pencarian kata. Maka sistem melakukan pemanggilan fungsi pada Algoritma yang telah dipilih. Lalu sistem akan menampilkan hasil pencarian sesuai dengan Algoritma yang telah dipilih.


(23)

3.2.3 Sequence Diagram

Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar

objek pada sistem dalam sebuah urutan waktu atau rangkaian waktu. Sequence

diagramdari sistem yang akan dibangun dapat ditunjukkan padaGambar 3.4

Gambar 3.4Sequence DiagramSistem

Pada gambar 3.4 sequence diagram sistem memiliki empat objek yaitu

user, menu utama, database dan algoritma yang digambarkan dengan simbol

objek UML. Referensi pada use-case digambarkan denganlifeline–garisvertikal putus – putus. Kotak persegi empat yang berada pada masing – masing objek merupakan behavior atau operasi yang perlu dilakukan oleh masing – masing objek. Kotak – kotak tersebut menggambarkan kode program. Kemudian, anak


(24)

panah antara garis menggambarkan interaksi atau pesan yang telah dikirim ke objek tertentu untuk menginvokasi salah satu operasinya untuk memenuhi permintaan.

Pada tahap ini, yang dilakukan user adalah menentukan tipe terjemahan terlebih dahulu,seperti Istilah Psikologi - Definisi atau Definisi–Istilah Psikologi di tampilan menu. Lalu tampilan menu menetapkan tipe terjemahan yang telah dipilih dan mengambil seluruh kata yang ada dalam database untuk ditampilkan dalam list view. Selanjutnya yang dilakukan user adalah menginput kata yang ingin dicari dan memilih algoritma untuk melakukan pencarian, lalu sistem akan mengambil seluruh kata dari database dan memanggil fungsi Algoritma yang telah dipilih. Kemudian menampilkan hasil pencarian kata kepadauser.

3.2 Flowchart

Flowchartatau diagram alir merupakan gambar atau bagan yang memperlihatkan

urutan dan hubungan antar proses dengan pernyataannya (Zarlis, 2008). Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung.


(25)

3.2.1 Flowchart Gambaran Umum Sistem

Flowchartgambaran umum sistem dapat dilihat padaGambar 3.5dibawah ini.

Mulai

Pilih Mode

Penerjemahan

Masukkan Kata yang Ingin Dicari

Pilih

Algoritma

Pencarian

Hasil Pencarian Kata

Selesai

Proses Pencarian Dengan Algoritma Yang

Dipilih

Gambar 3.5FlowchartGambaran Umum Sistem Kamus Istilah Psikologi Gambar 3.5 Menggambarkan alur sistem secara umum pada kamus Istilah Psikologi, dimana user memilih mode terjemahan seperti Istilah Psikologi -Definisi atau -Definisi – Istilah Psikologi. Lalu user memilih Algoritma untuk pencarian kata. Selanjutnya user menginputkata yang ingin dicari. Maka sistem akan mencocokkan kata sesuai dengan Algoritma yang telah dipilih lalu sistem akan menampilkan hasil pencarian kata


(26)

3.2.1 Flowchart Algoritma Not So Naive

FlowchartAlgoritmaNot So Naivedapat dilihat padaGambar 3.6dibawah ini.

MULAI

Masukkan Teks Yang Ingin Dicari

x[0]=x[1]

k=2 ell=1

k=1 ell=2

While j=0 to j<= n-m

x[1] != y[j+1]

j += k Proses pencocokan

pola dengan teks

String

ditemukan? j += ell

Output Hasil Pencarian

SELESAI

TIDAK YA

YA TIDAK

TIDAK YA

Gambar 3.6Flowchart AlgoritmaNot So Naive

Gambar 3.6Menggambarkan alur pada proses pencarian algoritmaNot So

Naive,dimana proses awal yang dilakukan adalah melihat apakah karakter urutan

0 dan 1 pada pola berupa karakter yang sama atau tidak. Jika sama, maka variabel

kakan diberi nilai 2 dan variabelelldiberi nilai 1 (nilaikdigunakan sebagai nilai pergeseran jika saat fase pencocokan karakter di urutan 1 mengalami


(27)

ketidakcocokan dan nilai ell digunakan sebagai nilai pergeseran jika saat fase pencocokan karakter di urutan 1 mengalami kecocokan namun di urutan selanjutnya mengalami ketidakcocokan). Lalu dilanjutkan ke fase pencocokan dimana variabelxadalah panjang pola , variabel y adalah panjang teks, variabelj

adalah nilai untuk perulangan pencocokan, variabelmuntuk panjang pola, dann

untuk panjang teks, dari kiri ke kanan sampai string ditemukan atau posisi pola bergeser sampai penghujung teks.

3.2.1 Flowchart Algoritma Skip Search

FlowchartAlgoritmaSkip Searchdapat dilihat padaGambar 3.7dibawah ini.

MULAI

Masukkan teks yang ingin dicari

Fase

preprocessing

Penentuan Batas Jendela dengan rumus 2m-1 dan karakter di tengah teks yang akan digunakan untuk proses

pencocokan

Pergeseran posisi pola ke urutan teks dengan karakter yang digunakan untuk proses pencocokan

sebagai acuan

Proses pencocokan teks dengan pola

String ditemukan?

Apakah terdapat karakter dalam pola yang sama 1 lagi dengan karakter untuk proses pencocokan?

Pola digeser sebanyak nilai panjang pola Output Hasil Pencarian Selesai TIDAK TIDAK YA Selesai


(28)

MULAI

Memasukan alphabet yang terkandung dalam pattern/ teks yang ingin dicari ke

dalam tabel/wadah

Memasukkan nilai posisi tiap alphabet yang terkandung dalam pattern/teks yang ingin

dicari ke dalam tabel/wadah

Selesai

Gambar 3.8Pre-processingAlgoritmaSkip Search

Gambar 3.7Menggambarkan alur pada proses pencarian Algoritma Skip Search, dimana proses awal yang dilakukan yaitu fase preprocessing. Di fase

preprocessingposisi karakter di teks akan disimpan dalam tempat penampungan

sementara yang kita istilahkan sebagai ember. Setelah itu, fase pencocokan akan dimulai setelah batas jendela dan karakter yang menjadi acuan ditentukan. Jika string tidak ditemukan, proses pencarian akan diulang dari fase penentuan batas jendela, setelah posisi batas jendela digeser sebanyak panjang pola (tidak dari urutan 0 lagi). Pencarian akan terus dilakukan sampai string ditemukan atau pola mencapai penghujung teks.

3.3 Kamus Data

Kamus data merupakan sebuah daftar yang mengatur semua komponen data yang berhubungan terhadap sistem dengan definisi singkat dan sejelas-jelasnya sehingga pengguna dan analisis sistem dapat sama-sama mengerti tentang data


(29)

masukan, keluaran, komponen penyimpanan, dan kalkulasi lanjutan. Kamus data pada sistem dapat dilihat pada Tabel 3.5 berikut.

Tabel 3.5Kamus Data

Data Kolom Tipe Deskripsi

Data Id Integer Identifier

Istilah Text Teks berisi Istilah Psikologi Arti Text Teks berisi Definisi dari

Istilah Psikologi

3.4 Perancangan Antarmuka Sistem (Interface)

Perancangan antarmuka bertujuan untuk memudahkan pengguna dalam menggunakan atau berinteraksi dengan sistem. Sebuah antarmuka harus dirancang dengan memperhatikan faktor pengguna sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan untuk digunakan oleh pengguna. Antarnuka yang dirancang diharapkan dapat menghasilkan aplikasi yang ramah pengguna (user friendly).

3.4.1 Rancangan Halaman Splash Screen

HalamanSplash Screenmerupakan halaman yang pertama kali muncul pada saat sistem dibuka. Rancangan Tampilan Splash Screen dapat dilihat pada Gambar 3.9


(30)

Gambar 3.9Rancangan TampilanSplash Screen

Keterangan :

1. Splash Screenuntuk menampilkan logo saat pertama kali membuka aplikasi.

3.4.2 Rancangan Navigation Drawer

Navigation Drawer terdiri dari Header, Beranda, Pencarian, Fitur, Bantuan,

Tentang, dan Keluar. Rancangan TampilanNavigation Drawerdapat dilihat pada Gambar 3.10


(31)

Gambar 3.10Rancangan TampilanNavigation Drawer

Keterangan :

1. MenuHomeberisi halaman utama dari program Kamus Istilah Psikolog. 2. MenuAboutberisi judul dan pembuat aplikasi.

3. MenuHelpuntuk panduanusermenggunakan aplikasi. 4. MenuExituntuk mengeluarkanuserdari aplikasi.

3.4.3 Rancangan Halaman Home

HalamanHometerdapatTab Swipe Gesture,Radio Button,Text Box,Buttondan


(32)

Gambar 3.11Rancangan Tampilan Home

Keterangan :

1. Navigation Drawer

2. Tab Swipe Gesture untuk memilih mode penerjemahan, apakah Istilah

Psikologi –Definisi atau Definisi–Istilah Psikologi

3. Radio Buttonuntuk memilih algoritma yang akan digunakan

4. Text Boxsebagai tempat untuk menampung kata yang ingin dicari

5. Buttonuntuk memulai pencarian

6. List View untuk menampilkan seluruh kata yang ada di dalam database dan hasil pencarian


(33)

Gambar 3.12RancanganIntentdariList View ModeIstilah Psikologi– Definisi

Gambar 3.12merupakan hasil dari aksiuserjika memilih salah satuitemdarilist view. Yang dimana, sistem akan menampilkan halaman baru dengan nomor 1 merupakan Istilah Psikologi dan nomor 2 Definisi dari item yang dipilih.

Demikian juga untuk halamanmodeDefinisi - Istilah Psikologi. Sistem akan menampilkan halaman yang sama dengan nomor 1 merupakan Definisi dari item yang dipilih dan nomor 2 merupakan Istilah Psikologinya.


(34)

3.4.4 Rancangan Halaman About

HalamanAboutterdapatNavigation Drawerdanimageyang menampilkan judul aplikasi dan nama si pembuat. Rancangan Tampilan About dapat dilihat pada

Gambar 3.13

Gambar 3.13Rancangan HalamanAbout

Keterangan :

1. Navigation Drawer

2. Imageyang menampilkan judul dan nama pembuat program

3.4.5 Rancangan Halaman Help

Halaman Help terdapat Navigation Drawer dan image yang menampilkan panduan cara untuk user menggunakan aplikasi. Rancangan TampilanHelpdapat dilihat padaGambar 3.14


(35)

Gambar 3.14Rancangan HalamanHelp

Keterangan :

1. Navigation Drawer


(36)

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

Tahap implementasi sistem merupakan langkah lanjutan dari tahapan analisis dan perancangan sistem yang dirangkum di bab tiga. Pada tahapan ini, segala yang telah di bahas pada tahapan analisis dan perancangan akan diimplementasikan ke dalam bahasa pemrograman Java dan menggunkan software Eclipse Mars 2. Pada sistem ini terdapat 6 (delapan) tampilan halaman, yaitu Halaman Splash Screen,

Navigation Drawer, Halaman Home, Halaman About, Halaman Help, dan

Halaman Exit.

4.1.1 Tampilan Halaman Splash Screen

HalamanSplash Screenmerupakan halaman yang pertama kali muncul pada saat sistem dibuka. Tampilan HalamanSplash Screen dapat dilihat padaGambar 4.1


(37)

Gambar 4.1Tampilan HalamanSplash Screen

4.1.2 Tampilan Navigation Drawer

Navigation Drawerterdiri dariHome, About, Help,danExit. Tampilan Halaman

Navigation Drawerdapat dilihat padaGambar 4.2


(38)

4.1.3 Tampilan Halaman Home

HalamanHome berfungsi melakukan pencarian kata pada kamus sesuai dengan algoritma yang dipilih. Tampilan HalamanHomedapat dilihat padaGambar 4.3. Di bagian ini terdapatTab Swipe Gesture,Radio Buttonuntuk memilih algoritma,

Text Box untuk menginput kata yang ingin dicari, Button untuk memulai

pencarian dan List View yang berfungsi untuk menampilkan seluruh kata yang ada di dalam database dan hasil pencarian algoritma. Terdapat Toast Message

yang akan menampilkanrunning timedari pencarian algoritma yang dapat dilihat pada Gambar 4.3.1. Terdapat juga Halaman Intent jika salah satu kata di List View di klik dan akan menampilkan halaman baru yang berisi Istilah Psikologi dan Definisi dari kata tersebut yang dapat dilihat padaGambar 4.3.2


(39)

Gambar 4.3.1TampilanToast Message

Gambar 4.3.2 Tampilan Halaman Intent Saat Salah Satu Kata di

List Viewdi Klik

4.1.4 Tampilan Halaman About

Halaman About berisi Judul Aplikasi dan Nama pembuat Aplikasi. Tampilan HalamanAboutdapat dilihat padaGambar 4.4.


(40)

Gambar 4.4Tampilan HalamanAbout

4.1.5 Tampilan Halaman Help

HalamanHelpmerupakan panduanuseruntuk menggunakan aplikasi. Tampilan Halaman Bantuan dapat dilihat padaGambar 4.5.


(41)

4.1.5 Tampilan Halaman Exit

Halaman Exit berupa alert dialog ini berfungsi untuk mengeluarkan user dari aplikasi . Tampilan Halaman Keluar dapat dilihat padaGambar 4.6

Gambar 4.6Tampilan HalamanExit

4. 2 Pengujian Sistem

Pengujian terhadap sistem dilakukan untuk membuktikan bahwa sistem yang telah dibangun berjalan dengan baik serta sesuai dengan analisis dan perancangan sistem yang telah dibuat sebelumnya. Dalam pengujian yang akan dicari adalah

string sebagai inputannya. Semua hasil pencarian ditampilkan sesuai dengan

inputan yangmatchpada pencarian.

4.2.1 Pengujian Pencarian kata pada Kamus Istilah Psikologi dengan Algoritma Not So Naive

PadaTabel 4.1dapat dilihat hasil pencarian kata pada Kamus Istilah Psikologi menggunakan AlgoritmaNot So Naive.


(42)

Tabel 4.1Hasil Pencarian kata AlgoritmaNot So Naive

Pola Hasil

Pencarian

Gambar Hasil Pencocokan Running Time, Jumlah Kata

dan Banyak Komparasi

Da Match 24 ms, 8 kata

dan 2681 banyak komparasi


(43)

Xy Mismatch 20 ms, 0 kata dan 2924

banyak komparasi

Cult Match 21 ms, 3 kata

dan 2320 banyak komparasi


(44)

Imme Mismatch 20 ms, 0 kata dan 2315

banyak komparasi

Psycho Match 16 ms, 9 kata

dan 1757 banyak komparasi


(45)

Ba Match 63 ms, 145 kalimat dan 32996 banyak

komparasi

Yx Mismatch 59 ms, 0

kalimat, dan 39150 banyak


(46)

Bang Match 52 ms, 28 kalimat dan 32625 banyak

komparasi

Zoyo Mismatch 46 ms, 0

kalimat dan 37845 kalimat


(47)

Tingkah Match 59 ms, 35 kalimat dan 35778 banyak


(48)

4.2.2 Pengujian Pencarian kata pada Kamus Istilah Psikologi dengan Algoritma Skip Search

PadaTabel 4.2dapat dilihat hasil pencarian kata pada Kamus Istilah Psikologi menggunakan AlgoritmaSkip Search.

Tabel 4.2Hasil Pencarian kata AlgoritmaSkip Search

Pola Hasil

Pencarian

Gambar Hasil Pencocokan Running Time dan Jumlah

Kata

Da Match 34 ms, 8 kata

dan 1845 banyak komparasi


(49)

Xy Mismatch 20 ms, 0 kata dan 1604

banyak komparasi

Cult Match 17 ms, 3 kata

dan 880 banyak komparasi


(50)

Imme Mismatch 13 ms, 0 kata dan 977

banyak komparasi

Psycho Match 15 ms, 9 kata

dan 603 banyak komparasi


(51)

Ba Match 65 ms, 145 kalimat dan 24096 banyak

komparasi

Yx Mismatch 51 ms, 0

kalimat dan 20249 banyak


(52)

Bang Match 42 ms, 28 kalimat dan 13329 banyak

komparasi

Zoyo Mismatch 38 ms, 0

kalimat dan 10263 banyak


(53)

Tingkah Match 35 ms, 35 kalimat dan 8850 banyak

komparasi

4.3. Hasil Pengujian

Hasil pengujian dari penelitian ini adalah Running time dari pencarian kata dan jumlah kata yang ditemukan pada Algoritma Not So Naive dan AlgoritmaSkip

Search yang dilakukan terhadap string yang berbeda dimulai dari string dua

karakter, 4 karakter dan 6 karakter. Untuk pengujian string Istilah Psikologi -Definisi dapat dilihat pada No. 1 sampai 5. Sedangkan pengujian string -Definisi – Istilah Psikologi dapat dilihat pada No. 6 sampai 10 Adapun hasil pengujian dari kedua Algoritma yang digunakan akan dijelaskan padaTabel 4.3danTabel 4.4.


(54)

Tabel 4.3Hasil Pengujian AlgoritmaNot So Naive

No Pola Running

Time (ms)

Jumlah Kata/Kalimat yang

Ditemukan

Banyak Komparasi

Hasil

1 Da 24 ms 8 kata 2681 Match

2 Xy 20 ms 0 kata 2924 Mismatch

3 Cult 21 ms 3 kata 2320 Match

4 Imme 20 ms 0 kata 2315 Mismatch

5 Psycho 16 ms 9 kata 1757 Match

6 Ba 63 ms 145 kata 32996 Match

7 Yx 59 ms 0 kata 39150 Mismatch

8 Bang 52 ms 28 kata 32625 Match

9 Zoyo 46 ms 0 kata 37845 Mismatch

10 Tingkah 59 ms 35 kata 35778 Match

TOTAL 380 ms

RATA-RATA


(55)

Tabel 4.4Hasil Pengujian AlgoritmaSkip Search

No Pola Running

Time (ms)

Jumlah Kata/Kalimat yang

Ditemukan

Banyak Komparasi

Hasil

1 Da 34 ms 8 kata 1845 Match

2 Xy 20 ms 0 kata 1604 Mismatch

3 Cult 17 ms 3 kata 880 Match

4 Imme 13 ms 0 kata 977 Mismatch

5 Psycho 15 ms 9 kata 603 Match

6 Ba 65 ms 145 kata 24096 Match

7 Yx 51 ms 0 kata 20249 Mismatch

8 Bang 42 ms 28 kata 13329 Match

9 Zoyo 38 ms 0 kata 10263 Mismatch

10 Tingkah 35 ms 35 kata 8850 Match

TOTAL 330 ms

RATA-RATA

33 ms

Setelah mendapatkan Hasil Pengujian dariTabel 4.3danTabel 4.4maka dibuat grafik perbandingan hasil pengujian dari kedua Algoritma tersebut. Grafik dapat dilihat padaGambar 4.7


(56)

Gambar 4.7Perbandingan HasilRunning TimeAlgoritmaNot So Naivedan AlgoritmaSkip Search

Dari grafik diatas dapat dijelaskan bahwa AlgoritmaNot So Naive mendapatkan HasilRunning Timeyang sedikit lebih tinggi jika dibandingkan dengan Algoritma

Skip Search. Terutama saatteks yang dicari panjang (dimulai dari “Ba” sampai

“Tingkah” dimanapencarian string dilakukan pada Definisi –Istilah Psikologi), AlgoritmaNot So Naivememerlukanrunning timeyang lebih lama, tidak seperti AlgoritmaSkip Searchyang lebih cepat dan akan lebih cepat saat pencarian teks yang panjang. Total Hasil Perbandingan dari kedua Algoritma tersebut dapat dijelaskan padaGambar 4.8

0 10 20 30 40 50 60 70

Da Xy Cult Imme Psycho Ba Yx Bang Zoyo Tingkah

Running Time


(57)

Gambar 4.8Perbandingan TotalRunning TimeAlgoritmaNot So Naivedan AlgoritmaSkip Search

Dari grafik diatas dapat dijelaskan bahwa untuk kasus yang sudah diujicobakan secara total Algoritma Not So Naive memiliki nilai Total Running Time yang sedikit lebih lama dibandingkan dengan Algoritma Skip Search. Artinya bahwa AlgoritmaSkip Searchlebih cepat untuk pencocokan kata yang digunakan dalam kamus dibandingkan dengan AlgoritmaNot So Naive.

4.4. Kompleksitas Algoritma

Kompleksitas algoritma yang akan diuji adalah kompleksitas Algoritma Not So

Naivedan AlgoritmaSkip Search.Seperti dijelaskan padaTabel 4.5, 4.6, 4.7, dan

4.8berikut:

4.4.1 Kompleksitas Algoritma Not So Naive

Tabel 4.5Kompleksitas fungsi preproses dari AlgoritmaNot So Naive

Code cost times cost.times

int k,ell; C1 1 C1

if(x[0] == x[1]){ C3 1 C3

k=2; C2 1 C2

ell=1;} C2 1 C2

else {

k=1; C2 1 C2

ell=2;} C2 1 C2

100 150 200 250 300 350 400

Total Waktu Yang Diperlukan

Running Time


(58)

FASE PRE-PROSES : Tmax(n) = C1 + 4C2 + C3

= (C1 + 4C2 + C3)m0 = m0

= O(1)

Tabel 4.6Kompleksitas fungsi proses pencarian dari AlgoritmaNot So Naive

Code cost times cost.times

public int searching(String pat, int m, String text, int n){

Preproses(); C1 1 C1

int j =0; C2 1 C2

int hasil =0; C2 1 C2

while (j <= n-m){ C3 n C3n

if(x[1] != y[j+1] && komp.komparasi++>=0 &&

komp1.komparasi++>=0){

C4 n C4n

j += k;} C2 n C2n

else {

komp.komparasi++; C2 n C2n

Komp1.komparasi++; C2 n C2n

a=1; C2 n C1n

for (int b=0;b<m;b++){ C5 mn C5n

if(x[b+1] == y[j+1+b] && x[0] == y[j] &&

komp.komparasi++>=0 && komp1.komparasi++>=0

C4 mn C4mn

a++;} C2 mn C2mn

else{

break; C6 mn C6mn

}}

if(a == m){ C4 n C4n

found = true;} C2 n C2n

j+= ell; C2 n C2n

}

if(found){ C4 N C4n

return 1;} C5 1 C5

else{ return 0;} }

C5 1 C5

FASE PROSES :

Tmax(n) = C1 + 2C2 + 2C5 + 5C2n + C3n + 3C4n + C5n + C2mn + C4mn +

C6mn

= (C1 + 2C2 + 2C5)n0+ (5C2 + C3 + 2C4)n1+ (C2 + C4 + C6)mn = m0+ m1+ mn≤mn + mn + mn = 3mn


(59)

= O(mn)

Tabel 4.5 dan Tabel 4.6 menjelaskan tentang kompleksitas dari AlgoritmaNot

So Naive. Pada AlgoritmaNot So Naivefase preproses memiliki T(n) = O(1) dan

fase proses memiliki T(n) = O(mn). Maka kompleksitas AlgoritmaNot So Naive

adalah O(mn).

4.4.2 Kompleksitas Algoritma Skip Search

Tabel 4.7Kompleksitas fungsi preproses dari AlgoritmaSkip Search

Code cost times cost.times

public int preprocess(){

public static int ASIZE = 256; C1 1 C1

int i, j; C2 1 C2

List1 ptr = null; C1 1 C1

List1 z[] = new List1[ASIZE]; C1 1 C1

for (int a=0; a<ASIZE; a++){ C3 256 256C3

z[a] = null;} C1 256 256C1

for(i = 0; i < m; ++i){ C3 m C3m

ptr = new List1(); C1 m C1m

if (ptr==null) System.out.println("ERROR"); C4 m C4m

ptr.element = i; C1 m C1m

ptr.next = z[x[i]]; C1 m C1m

z[x[i]] = ptr;} }

C1 m C1m

FASE PRE-PROSES :

Tmax(n) = 3C1 + C2 + 256C3 + 256C1 + 4C1m + C3m + C4m

= (3C1 + 2C2)m0+ 256(C3 + C1) + (5C1 + 2C3 + 2C4)m1 = m0+ m1 ≤m1+ m1= 2m


(60)

Tabel 4.8Kompleksitas fungsi proses pencarian dari AlgoritmaSkip Search

Code cost times cost.times

public int searching(String pat, int m, String text, int n){

Preprocess(); C1 1 C1

int i, j; C2 1 C2

char[] x = pat.toCharArray(); C3 1 C3

char[] y = text.toCharArray(); C3 1 C3

String sub_x, sub_y; C2 1 C2

Boolean found = false; C3 1 C3

for(j = m -1; j<n; j += m){ C4 n C4n

komp.komparasi++; C3 n C3n

komp1.komparasi++; C3 n C3n

for(ptr = z[y[j]]; ptr != null; ptr = ptr.next){

C4 n C4n

komp.komparasi++; C3 n C3n

Komp1.komparasi++; C3 n C3n

int a=0; C3 n C3n

for (int b=0;b<m;b++){ C4 mn C4mn

if(x[b] == y[j-ptr.element+b] && komp.komparasi++>=0 && komp1.komparasi++>=0)

C5 mn C5mn

a++; C3 mn C3mn

else

break;}

C6 mn C6mn

if(j-ptr.element<= n-m && a == m) C5 mn C5mn

found = true;}}} C3 mn C3mn

if(found){ C5 1 C5

return 1;} C7 1 C7

else{

return 0;} }

C7 1 C7

FASE PROSES :

Tmax(n) = C1 + 2C2 + 3C3 + C5 + 2C7 + 5C3n + 2C4n + 2C3mn + C4mn +

2C5mn + C6mn

= (C1 + 2C2 + 3C3 + C5 + 2C7)n0+ (5C3 + 2C4)n1+ (2C3 + C4mn + 2C5mn

+ C6mn)

= m0+ m1+ mn≤mn + mn + mn = 3mn = O(mn)

Tabel 4.7danTabel 4.8menjelaskan tentang kompleksitas dari AlgoritmaSkip

Search. Pada AlgoritmaNot So Naive fase preproses memiliki T(n) = O(m) dan

fase proses memiliki T(n) = O(mn). Maka kompleksitas Algoritma Skip Search


(61)

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pembahasan dan hasil dari penelitian, maka diperoleh beberapa kesimpulan sebagai berikut:

1. AlgoritmaNot So Naivedan AlgoritmaSkip Searchdapat diimplementasikan pada Aplikasi Kamus Istilah Psikologi.

2. Hasil running time menunjukkan bahwa Algoritma Not So Naive sedikit lebih lambat dalam pencarian kata dibandingkan AlgoritmaSkip Searchdengan rata-rata hasil running time adalah 38,0 ms. Sedangkan rata-rata hasil running time

AlgoritmaSkip Searchadalah 33ms.

3. Kelemahan AlgoritmaNot So Naivedalam penelitian ini adalah tidak bisa mencari 1 huruf saja. Karena pada pre-proses Algoritma Not So Naive, Algoritma ini membutuhkan minimal 2 huruf awal yang dibandingkan untuk menentukan nilai dari variabel kdan ellpada proses pencarian (variable k danell berfungsi sebagai nilai pergeseran) dan AlgoritmaNot So Naivetidak terlalu efektif untuk pencarian

patternpanjang atau pencarian kalimat. Karena semakin panjangpatternatau teks,

pengecekan yang dilakukan Algoritma ini akan semakin banyak juga. Ini dapat dilihat diTabel 4.3 dimana running time untuk 6 – 10 (teks yand dicari panjang, dimulai dari kata “Ba” sampai kata “Tingkah”) mengalami peningkatan yang sangat signifikan dari running time untuk 1-5 (teks yang dicari pendek, dimulai dari kata “Da” sampai kata “Psycho”).

4. Kelemahan AlgoritmaSkip Searchdalam penelitian ini adalah sedikit lebih lambat dalam pencarian kata yang pendek. Ini dikarenakan dalam pre-proses Algoritma


(62)

5. Skip Search, Algoritma ini membuat tabel dari teks yang akan dibandingkan dan menyesuaikannya dengan kata yang dicari. Proses ini cukup memakan waktu, ditambah dengan jika kata yang dicari pendek, maka pergeseran yang bisa dilakukan Algoritma Skip Search juga pendek. Kelebihan Algoritma Skip Search adalah unggul dalam pencarian kata yang panjang atau pencarian kalimat. Ini dikarenakan makin panjang kata yang dicari, maka pergeseran yang dilakukan Algoritma Skip

Searchjuga panjang.

6. Hasil Kompleksitas AlgoritmaNot So Naiveadalah T(n) = O(mn). Sedangkan Hasil Kompleksitas AlgoritmaSkip Searchjuga T(n) = O(mn).

5.2 Saran

Adapun saran-saran yang diperlukan untuk penelitian maupun pengembangan berikutnya adalah:

1. Sistem ini sebaiknya ditambah menu pengolahan data seperti penambahan data,edit data dan hapus data agar data dalam kamus semakin banyak untuk pencarian kata pada kamus.

2. Untuk pengembangan selanjutnya, diharapkan aplikasi ini menyediakan menu pilihan algoritma pencarianstringyang baru ditemukan agar terlihat perbedaan pada pencarian string antara Algoritma yang lama dengan Algoritma yang sudah mengalami proses perkembangan.


(63)

LANDASAN TEORI

2.1. Algoritma

Algoritma adalah urutan langkah-langkah penyelesaian masalah yang disusun secara matematis dan logis. Tanpa kita sadari, kebanyakan dari kegiatan yang kita lakukan setiap harinya selalu berlandaskan algoritma.

Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu. Pertimbangan dalam pemilihan algoritma adalah, pertama, algoritma haruslah benar. Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah, pastilah algoritma tersebut bukanlah algoritma yang baik. (Zarlis & Handrizal, 2008).

2.1.1 Algoritma String Matching (pencocokan string)

Pengertian string menurut Dictionary of Algorithms and Data Structures,

National Institute of Standards and Technology (NIST) adalah susunan dari

karakter-karakter(angka,alfabet atau karakter yang lain) dan biasanya direpresentasikan sebagai struktur dan array. Pencocokan string (string

matching) menurut Dictionary of Algorithms and Data Structures, National

Institute of Standards and Technology (NIST), diartikan sebagai sebuah

permasalahan untuk menemukan pola susunan karakterstringdi dalamstringlain atau bagian dari isi teks.String Matchingmerupakan subjek yang sangat penting di dalam domain yang sangat luas dalam pengolahan teks. (Charras & Lecroq. 2004


(64)

Pencocokanstring(string matching) secara garis besar dapat dibedakan menjadi dua yaitu :

1) Exact string matching, merupakan pencocokan 2 string secara tepat dengan

susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalamstringyang sama. Contoh : katastepakan menunjukkan kecocokan hanya dengan katastep.

2) Inexact string matchingatauFuzzy string matching, merupakan pencocokan

string secara samar, maksudnya pencocokan string dimana string yang

dicocokkan memiliki kemiripan dimana keduanya memiliki susunan karakter yang berbeda (mungkin jumlah atau urutannya) tetapi string-string tersebut memiliki kemiripan baik kemiripan tekstual/penulisan (approximate string

matching) atau kemiripan ucapan (phonetic string matching). Inexact string

matchingmasih dapat dibagi lagi menjadi dua yaitu :

a. Pencocokan string berdasarkan kemiripan penulisan (approximate string

matching) merupakan pencocokanstringdengan dasar kemiripan dari segi

penulisannya (jumlah karakter, susunan karakter dalam dokumen). Tingkat kemiripan ditentukan dengan jauh tidaknya beda penulisan dua buahstring

yang dibandingkan tersebut dan nilai tingkat kemiripan ini ditentukan oleh pemrogram (programmer). Contoh :c mpuler dengancompiler, memiliki jumlah karakter yang sama tetapi ada dua karakter yang berbeda. Jika perbedaan dua karakter ini dapat ditoleransi sebagai sebuah kesalahan penulisan maka duastringtersebut dikatakan cocok.

b. Pencocokan string berdasarkan kemiripan ucapan (phonetic string

matching) merupakan pencocokanstringdengan dasar kemiripan dari segi

pengucapannya meskipun ada perbedaan penulisan dua string yang dibandingkan tersebut. Contohstepdenganstebdari tulisan berbeda tetapi dalam pengucapannya mirip sehingga duastring tersebut dianggap cocok. Contoh yang lain adalahstep, dengansteppe,sttep,stepp, stepe. (Syaroni & Munir. 2005)


(65)

2.1.1.1 Algoritma Not So Naive

Algoritma Not So Naive pertama kali dipublikasikan oleh Christophe Hancart tahun 1992. Algoritma Not So Naive merupakan variasi turunan dari algoritma

Naive atau yang sering disebut algoritma Brute Force. Cara kerja algoritma ini adalah dengan memiliki fase pencarian mengecek teks dan pola dari kiri ke kanan. Lalu, algoritma Not So Naive akan mengidentifikasi terlebih dahulu dua kasus yang dimana di setiap akhir fase pencocokan pergeseran dapat dilakukan sebanyak 2 posisi ke kanan, tidak seperti algoritmaNaiveyang dimana pergeseran tetaplah sebanyak 1 posisi ke kanan.

Kita asumsikan bahwa P[0]≠ P[1]. Jika P[0] = T[s] dan P[1] = T[s+1], maka di akhir fase pencocokan pergeseran s bisa dilakukan sebanyak 2 posisi, karena P[0] ≠ P[1] = T[s+1]. Dan jika P[0] = P[1]. Jika P[0] = T[s] tapi P[1] ≠

T[s+1], maka sekali lagi pergesaransdapat dilakukan sebanyak 2 posisi (Cantone & Faro, 2004) dimana P adalahPattern, T adalah Teks dansadalah nilai posisi.

2.1.1.1.1 Pencarian Algoritma Not So Naive

Saat fase pencarian dari AlgoritmaNot So Naiveperbandingan karakter dilakukan dengan posisi pola mengikuti urutan 1, 2, ...,m-2,m-1, 0 dimanamadalah panjang

pattern.

Di setiap percobaan dimana “jendela” diposisikan di teks faktory[i..j +

m-1]. Jika x[0] = x[1] dan x[1] ≠ y[j+1] atau jikax[0] ≠ x[1] dan x[1] = y[j+1] polanya akan digeser sebanyak 2 posisi di setiap akhir percobaan dan sebanyak 1 posisi jika kondisi di atas tidak terpenuhi (Alapati & Mannava, 2011) dimana y

adalah teks danxadalahpattern.

Berikut diberikan contoh untuk menunjukkan proses pencarian Algoritma Not So Naive dengan pola WIJA yang akan dicari pada teks RICKYWIJAYA. Dimana karakter urutan 0 dan karakter urutan 1 pada pattern tidak mengalami kesamaan (x[0] !=x[1]) maka nilai variabelkakan diinisialisasi dengan nilai 1 dan nilai variabel ell akan diinisialisasi dengan nilai 2 dimana kedua variabel tersebut akan digunakan untuk nilai pergeseran pada proses pencocokan.


(66)

Tabel 2.1Proses Pencocokan Algoritma Not So Naive di Percobaan Pertama

Pada Tabel 2.1, perbandingan karakter pertama (x[1] == y[j+1]) mengalami kecocokan namun di perbandingan kedua mengalami ketidakcocokan, karena saat perbandingan pertama telah terjadi kecocokan, namun di urutan selanjutnya tidak terjadi kecocokan maka posisi pola akan digeser sebanyak 2 posisi sesuai dengan nilai variabelell.

Tabel 2.2Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Kedua

PadaTabel 2.2, perbandingan karakter pertama (x[1] !=y[j+1]) sudah mengalami ketidakcocokan. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabelk.

Tabel 2.3Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Ketiga

PadaTabel 2.3, perbandingan karakter pertama (x[1] !=y[j+1]) masih mengalami ketidakcocokan. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabelk.

Tabel 2.4Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Keempat

I 0 1 2 3 4 5 6 7 8 9 10

Teks R I C K Y W I J A Y A

Pola W I J A

II 0 1 2 3 4 5 6 7 8 9 10

Teks R I C K Y W I J A Y A

Pola W I J A

III 0 1 2 3 4 5 6 7 8 9 10

Teks R I C K Y W I J A Y A

Pola W I J A

IV 0 1 2 3 4 5 6 7 8 9 10

Teks R I C K Y W I J A Y A


(67)

PadaTabel 2.4, perbandingan karakter pertama (x[1] !=y[j+1]) masih mengalami ketidakcocokan. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabelk.

Tabel 2.5Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Kelima

Pada Tabel 2.5, perbandingan karakter mengalami kecocokan (x[1] == y[j+1]) dimulai dari perbandingan karakter W, I, J, dan A semua mengalami kecocokan, oleh sebab itu teks akan dikeluarkan. Namun, algoritma Not So Naive tidak berhenti sampai disini. AlgoritmaNot So Naiveakan melakukan percobaan terus sampai sisa teks lebih kecil daripada pola. Untuk percoabaan selanjutnya, posisi pola akan digeser sebanyak 2 posisi sesuai dengan nilai variabelell.

Tabel 2.6Proses Pencocokan algoritmaNot So Naivedi Percobaan Keenam

PadaTabel 2.6, perbandingan karakter pertama mengalami ketidakcocokan (x[1] != y[j+1]). Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabelk. Namun dikarenakan sisa teks telah lebih kecil daripada pola maka fase pencarian berhenti disini.

2.1.1.2 Algoritma Skip Search

AlgoritmaSkip Searchmerupakan salah satu algoritma pencocokanstring, yang dipublikasikan secara luas oleh Charas, Cet al., (1998). Cara kerja algoritmaSkip

Search seperti algoritma Knuth Morris Pratt dengan mendeteksi jendela dari

karakter yang ada dari kiri ke kanan dan menyimpannya ke dalam sebuah wadah untuk menentukan titik awal dari jendela karakter tersebut (Charas et al., Naser

et al., 2012, 1998).

V 0 1 2 3 4 5 6 7 8 9 10

Teks R I C K Y W I J A Y A

Pola W I J A

VI 0 1 2 3 4 5 6 7 8 9 10

Teks R I C K Y W I J A Y A


(68)

Jadi, terdapat suatu pola yang ingin kita cari dan kita inisialkan x dan memiliki panjang yang kita inisialkan dengan m. Teks yang ingin kita cari kita inisialkan y dan memiliki panjang yang kita inisialkan dengan n. Untuk setiap simbol alfabet, sebuah wadah akan menyimpan semua posisi simbol dari x. Saat sebuah simbol berulang sebanyak k di dalam teks, maka akan ada sebanyak k

posisi yang sesuai dalam wadah simbol. Saat pola lebih pendek daripada alfabet yang ada dalam teks, maka akan ada banyak tempat kosong dalam wadah.

Dalam perulangan utama dari fase pencarian terdapat proses memeriksa setiap teks simbol ke m, Yj (yang nantinya iterasi utama n/m). Untuk Yj, menggunakan setiap posisi yang ada di wadahz[Yj] untuk mendapatkan titik awal yang memungkinkan (p) darixdi dalamy. Lalu dilakukan proses perbandinganx

denganydari posisip, simbol dengan simbol, sampai terjadi ketidakcocokan atau seluruhnya cocok (Charraset al., 1998). AlgoritmaSkip Searchmemiliki efisiensi dalam mencari huruf kecil dalam pola yang panjang (Naseret al., 2012).

2.1.1.2.1 Fase Preprocessing Algoritma Skip Search

Tahappreprocessing AlgoritmaSkip Searchterdiri dari tahap komputasi wadah untuk menampung seluruh karakter alfabet untuk c∈ ∑

z[c] = { i; 0im-1 and x[i] = c}.

Ruang dan waktu kompleksitas dari fasepreprocessingadalah O (m+ ) (Charras & Lecroq, 2004). Berikut diberikan contoh pada Tabel 2.7 untuk menunjukkan proses pencarian AlgoritmaSkip Searchdengan polaWIJAyang akan dicari pada teksRICKYWIJAYA.

Tabel 2.7Tabel Teks dan Pola yang akan Dijadikan Contoh Kasus

Maka hasil dari fasepreprocessingAlgoritmaSkip Searchdapat dilihat diTabel 2.8

0 1 2 3 4 5 6 7 8 9 10

Teks R I C K Y W I J A Y A


(69)

Tabel 2.8Tabel Hasilpreprocessingdari AlgoritmaSkip Search

2.1.1.2.2 Fase Pencarian Algoritma Skip Search

Dalam Fase Pencarian, algoritma Skip Search menggunakan aturan The Two

Window Ruleuntuk menentukan batas sampai mana pola boleh digeser. Panjang

batasThe Two Window Rulemenggunakan rumus 2m-1 dimanamadalah panjang dari pola (Bhandari & Kumar, 2013). Lalu panjang dari hasil aturan The Two

Window Rule akan bernilai ganjil dan karakter yang terdapat di tengah panjang

teks tersebutlah yang akan dilakukan proses pencocokan.

Gambar 2.1Penentuan Panjangwindowdan Karakter Tengah yang akan Digunakan dalam Proses Pencocokan 1

DariGambar 2.1didapatkan batas panjang untuk pola digeser adalah dari urutan 0 (huruf R) sampai urutan 6 (huruf I) dan karakter yang akan digunakan dalam proses pencocokan adalah karakter K. Namun, berdasarkan tabel 8 karakter K

c z[c]

A (3)

C

I (1)

J (2)

K

R

W (0)


(70)

bernilai nol (tidak ada dalam pola) maka percobaan akan dilanjutkan dengan posisi jendela digeser sebanyak 4 posisi sesuai dengan panjang pola (m).

Gambar 2.2Penentuan Panjangwindowdan Karakter Tengah yang akan Digunakan dalam Proses Pencocokan 2

Dari Gambar 2.2 didapatkan batas panjang untuk pola digeser adalah dari urutan 4 (huruf W) sampai urutan 10 (huruf A) dan karakter yang akan digunakan dalam proses pencocokan adalah karakter J. Berdasarkan tabel 8 karakter J terdapat di posisi 2 dalam pola, oleh karena itu pola akan langsung diposisikan menurut posisi J, dan dilakukan proses pencocokan dari urutan 5, 6, 7 dan 8. Dalam pencocokan 2 ini, pola yang berisi karakter W, I, J, dan A mengalami kecocokan maka teks akan ditampilkan. Dan fase pencarian berhenti sampai disini. Ini dikarenakan saat pola digeser sebanyak 4 posisi, panjang teks untuk dibandingkan hanya bersisa 3 dimana panjang pola lebih banyak daripada panjang teks yang akan dicocokan.

2.2. Kompleksitas Algoritma

Kebenaran suatu algoritma harus diuji dengan jumlah masukan tertentu untuk melihat kinerja algoritma berupa waktu yang diperlukan untuk menjalankan algoritmanya dan ruang memori yang diperlukan untuk struktur datanya. Algoritma yang bagus adalah algoritma yang mangkus (efisien). Kemangkusan algoritma diukur dari jumlah waktu dan ruang memori yang dibutuhkan untuk menjalankan algoritma tersebut.

Ada dua macam kompleksitas algoritma, yaitu kompleksitas waktu dan kompleksitas ruang. Kompleksitas waktu dari algoritma adalah mengukur jumlah perhitungan (komputasi) yang dikerjakan oleh komputer ketika menyelesaikan


(71)

suatu masalah dengan menggunakan algoritma. Ukuran yang dimaksud mengacu ke jumlah langkah-langkah perhitungan dan waktu tempuh pemrosesan. Kompleksitas waktu merupakan hal penting untuk mengukur efisiensi suatu algoritma.

Kompleksitas waktu dari suatu algoritma yang terukur sebagai suatu fungsi ukuran masalah. Kompleksitas waktu dari algoritma berisi ekspresi bilangan dan jumlah langkah yang dibutuhkan sebagai fungsi dari ukuran permasalahan. Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan dalam eksekusi program.

Untuk mengukur kebutuhan waktu sebuah algoritma yaitu dengan mengeksekusi langsung algoritma tersebut pada sebuah komputer, lalu dihitung berapa lama durasi waktu yang dibutuhkan untuk menyelesaikan sebuah persoalan dengan n yang berbeda-beda. Kemudian dibandingkan hasil komputasi algoritma tersebut dengan notasi kompleksitas waktunya untuk mengetahui efisiensi algoritmanya (Nugraha, D.W. 2012).

Kompleksitas algoritma diukur berdasarkan kinerjanya dengan menghitung waktu eksekusi suatu algoritma. Menurut Cormenet al. (2009) waktu eksekusi algoritma dapat diklasifikasikan menjadi tiga kelompok besar, yaitu

best-case (kasus terbaik), average-case (kasus rata-rata) dan worst-case (kasus

terjelek).

Pada pemrograman yang dimaksud dengan kasus terbaik, kasus terjelek dan kasus rata-rata suatu algoritma adalah besar kecilnya atau banyak sedikitnya sumber-sumber yang digunakan oleh suatu algoritma. Makin sedikit makin baik, makin banyak makin jelek (Subandijo. 2011).

2.3. Kamus

Menurut Kamus Besar Bahasa Indonesia, pengertian kamus adalah buku acuan yang memuat kata dan ungkapan yang biasanya disusun menurut abjad berikut keterangan maknanya, pemakaiannya dan terjemahannya. Kamus juga dapat digunakan sebagai buku rujukan yang menerangkan makna kata – kata yang berfungsi untuk membantu seseorang mengenal perkataan baru.


(1)

vii

THE COMPARISON OF STRING MATCHING ALGORITHM NOT SO NAIVE AND SKIP SEARCH

ON ANDROID PLATFORM

ABSTRACT

The Science of Psychology have a function to explain what, how and why a certain desired behavior can happen. Based on the function of the science of psychology appear term psychology, the medium used to introduce term psychology is through a dictionary. However, we required a new media that is pratical and efficient such as Smartphone that support various application such as dictionary application. This research discusses about how to search word on Term Psychology Dictionary with String Matching Algorithm. String matching is an important part of string searching process on a document. String Matching Algorithm used in this research is Not So Naive Algorithm and Skip Search Algorithm. This research attempts to compare Complexity Time (O) and Running time for Not So Naive Algorithm and Skip Search Algorithm which implemented in the Term Psychology Dictionary. The results of this research indicate that Not So Naive Algorithm is slower than Skip Search Algorithm in searching word. The average yield Running Time for Not So Naive Algorithm is 38 ms and Skip Search algorithm only 33 ms, where Not So Naive Algortihm and Skip Search Algortihm complexity isO(mn)

Keywords : Dictionary, String Matching, Skip Search Algorithm, Not So Naive Algorithm.


(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.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan penelitian 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori

2.1 Algoritma 6

2.1.1 AlgoritmaString Matching (pencocokan string) 6

2.1.1.1 AlgoritmaNot So Naive 8

2.1.1.1.1 Pencarian AlgoritmaNot So Naive 8

2.1.1.2 AlgoritmaSkip Search 10

2.1.1.2.1 FasePreprocessingAlgoritmaSkip Search 11 2.1.1.2.2 Fase Pencarian AlgoritmaSkip Search 12

2.2 Kompleksitas Algoritma 13

2.3 Kamus 14

2.4 Android 15

2.4.1 Versi Android 15


(3)

ix

3.1.3.1Use CaseDiagram 21

3.1.3.2ActivityDiagram 24

3.1.3.3SequanceDiagram 26

3.2Flowchart 27

3.2.1FlowchartGambaran Umum Sistem 28

3.2.2FlowchartAlgoritmaNot So Naive 29

3.2.3FlowchartAlgoritmaSkip Search 30

3.3 Kamus Data 31

3.4 Perancangan Antarmuka Sistem (Interface) 32

3.4.1 Rancangan HalamanSplash Screen 32

3.4.2 RancanganNavigation Drawer 33

3.4.3 Rancangan HalamanHome 34

3.4.4 Rancangan HalamanAbout 37

3.4.5 Rancangan HalamanHelp 37

Bab 4 Implementasi dan Pengujian

4.1 Implementasi 39

4.1.1 Tampilan HalamanSplash Screen 39

4.1.2 TampilanNavigation Drawer 40

4.1.3 Tampilan HalamanHome 41

4.1.4 Tampilan HalamanAbout 42

4.1.5 Tampilan HalamanHelp 43

4.1.6 Tampilan HalamanExit 44

4.2 Pengujian Sistem 44

4.2.1 Pengujian pencarian kata pada Kamus Istilah Psikologi

dengan AlgoritmaNot So Naive 44

4.2.2 Pengujian pencarian kata pada Kamus Istilah Psikologi

dengan AlgoritmaSkip Search 51

4.3 Hasil Pengujian 56

4.4 Kompleksitas Algoritma 60

4.4.1 Kompleksitas AlgoritmaNot So Naive 60

4.4.2 Kompleksitas AlgoritmaSkip Search 62

Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 64

5.2. Saran 65


(4)

DAFTAR TABEL

Halaman

Tabel 2.1 Proses Pencocokan Algoritma Not So Naive di Percobaan Pertama 9 Tabel 2.2 Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Kedua 9 Tabel 2.3 Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Ketiga 9 Tabel 2.4 Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Keempat 9 Tabel 2.5 Proses Pencocokan AlgoritmaNot So Naivedi Percobaan Kelima 10 Tabel 2.6 Proses Pencocokan algoritmaNot So Naivedi Percobaan Keenam 10 Tabel 2.7 Tabel Teks dan Pola yang akan Dijadikan Contoh Kasus 11 Tabel 2.8 Tabel Hasilpreprocessingdari AlgoritmaSkip Search 12

Tabel 2.9 Versi–Versi Android 15

Tabel 3.1 TabelUse CaseMemilihModeuntuk kata yang akan diartikan 22

Tabel 3.2 TabelUse CaseProsesInputkata 23

Tabel 3.3 TabelUse CaseProses AlgoritmaNot So Naive 23 Tabel 3.4 TabelUse CaseProses AlgoritmaSkip Search 24

Tabel 3.5 Kamus Data 32

Tabel 4.1 Hasil Pencarian kata AlgoritmaNot So Naive 45 Tabel 4.2 Hasil Pencarian kata AlgoritmaSkip Search 51 Tabel 4.3 Hasil Pengujian AlgoritmaNot So Naive 57 Tabel 4.4 Hasil Pengujian AlgoritmaSkip Search 58 Tabel 4.5 Kompleksitas fungsi preproses dari AlgoritmaNot So Naive 60 Tabel 4.6 Kompleksitas fungsi proses pencarian dari AlgoritmaNot So Naive 61 Tabel 4.7 Kompleksitas fungsi preproses dari AlgoritmaSkip Search 62 Tabel 4.8 Kompleksitas fungsi proses pencarian dari AlgoritmaSkip Search 63


(5)

xi

DAFTAR GAMBAR

Halaman

Gambar 2.1 Penentuan Panjangwindowdan Karakter Tengah

yang akan Digunakan dalam Proses Pencocokan 1 12 Gambar 2.2 Penentuan Panjangwindowdan Karakter Tengah

yang akan Digunakan dalam Proses Pencocokan 2 13 Gambar 2.3 Logo-logo android dari versi 1.0–6.0 16

Gambar 3.1 DiagramIshikawa 19

Gambar 3.2 Use Case DiagramSistem 21

Gambar 3.3 Activity DiagramSistem 25

Gambar 3.4 Sequence DiagramSistem 26

Gambar 3.5 FlowchartGambaran Umum Sistem Kamus Istilah Psikologi 28

Gambar 3.6 FlowchartAlgoritmaNot So Naïve 29

Gambar 3.7 FlowchartAlgoritmaSkip Search 30

Gambar 3.8 Pre-processing Algoritma Skip Search 31

Gambar 3.9 Rancangan TampilanSplash Screen 33

Gambar 3.10 Rancangan TampilanNavigation Drawer 34

Gambar 3.11 Rancangan TampilanHome 35

Gambar 3.12 RancanganIntentdariList View Mode

Istilah Psikologi–Definisi 36

Gambar 3.13 Rancangan HalamanAbout 37

Gambar 3.14 Rancangan HalamanHelp 38

Gambar 4.1 Tampilan HalamanSplash Screen 40

Gambar 4.2 Tampilan HalamanNavigation Drawer 40

Gambar 4.3 Tampilan HalamanHome 41

Gambar 4.3.1 TampilanToast Message 42

Gambar 4.3.2 Tampilan HalamanIntentSaat Salah Satu

Kata diList Viewdi Klik 42

Gambar 4.4 Tampilan HalamanAbout 43

Gambar 4.5 Tampilan HalamanHelp 43

Gambar 4.6 Tampilan HalamanExit 44

Gambar 4.7 Perbandingan HasilRunning Time

AlgoritmaNot So Naivedan AlgoritmaSkip Search 59 Gambar 4.8 Perbandingan TotalRunning Time


(6)

DAFTAR LAMPIRAN

Halaman

A.ListingProgram A-1