• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
12
0
0

Teks penuh

(1)

LISTING PROGRAM

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)

52. {

53. super.onCreate(savedInstanceState);

54. }

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)

111. }

112. @Override

113. public void onClick(View v) {

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)

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

165. } 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");

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)

17. import android.text.TextWatcher; 18. import android.widget.AdapterView;

19. import android.widget.AdapterView.OnItemClickListener; 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)

76. text.setOnKeyListener(new View.OnKeyListener() { 77. @Override

78. public boolean onKey(View v, int keyCode, KeyEvent event) { 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)

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

135. }

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");

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)

185. } catch (Exception e) {

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

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

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

30. j += k;

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++;}

45. catch(Exception e){

(9)

46. }

47. }

48. System.out.println(a+" hasil");

49. if(a == m){

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)

34. for(j = m -1; j<n; j += m){

35. komp.komparasi++;

36. komp1.komparasi++;

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 {

(11)

B-1

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,

(12)

B-2

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

Referensi

Dokumen terkait

PENGUM UM AN PEM ENANG LELANG TAHAP-X UNIT LAYANAN PENGADAAN (ULP) KABUPATEN KLATEN.. POKJA PENGADAAN PEKERJAAN KONSTRUKSI

Pada hari ini, Selasa tanggal Dua puluh empat bulan Mei tahun Dua Ribu Enam Belas, kami Kelompok Kerja Unit Layanan Pengadaan Daerah Kepulauan Riau, memperhatikan ketentuan

Berdasarkan Penetapan Pemenang NOMOR : KEP – 11/ULPD/WII.10/2016, Tanggal : 24 Mei 2016, dengan ini Pokja ULPD Kepulauan Riau, Tahun Anggaran 2016, Mengumumkan

[r]

[r]

Uji statistik t atau uji parsial dilakukan untuk menguji pengaruh masing-masing variabel independen. Dengan demikian secara statistik modal intelektual tidak berpengaruh

Umi Isrotun, Peningkatan Pemahaman Konsep Matematika Melalui Penerapan Pembelajaran Realistik (PTK Pada Siswa Kelas VIII H Semester Genap MTs Negeri Surakarta II

Pemerintah ke bisnis (G2B) merupakan model E- Government dimana transaksi-transaksielektronik dan pemerintah menyediakan berbagai informasi yang dibutuhkan bagi kalangan