• Tidak ada hasil yang ditemukan

Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Pencarian Word Suggestion

N/A
N/A
Protected

Academic year: 2019

Membagikan "Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Pencarian Word Suggestion"

Copied!
19
0
0

Teks penuh

(1)

LISTING PROGRAM

brute.php

<?php

$time_start = microtime(true); function bruteforce($cari,$kata){

$ditemukan=0; //$cari="katu";

//$kata="kata kita ke katu kate";

$cari_arr= str_split($cari); //mengubah kata yang dicari ke bentuk array $cari_len= count($cari_arr); // menghitung panjang kata yang dicari

$kata_arr= str_split($kata); //mengubah kata yang diperiksa ke bentuk array $kata_len= count($kata_arr); // menghitung panjang kata yang diperiksa $batas=$kata_len-$cari_len; // panjang kata - panjang yang di cari $x=0;

while ($x<=$batas) { $char_kata=''; $kata_full='';

for ($i=$x, $n=0; $i < $x+$cari_len; $i++, $n++) { $char_kata[$n]=$kata_arr[$i];

$kata_full.=$kata_arr[$i]; }

for ($j=0; $j < $cari_len; $j++) { // perulangan membandinkan huruf $a=$cari_arr[$j];

$b=$char_kata[$j];

if ($a!=$b) { // jika tidak cocok break;

} }

if ($kata_full==$cari) {

$ditemukan=1; // ditemukan break;

}

//echo "$kata_full, "; $x++;

}

if ($ditemukan==1) {

//echo "kata ditemukan di iterasi ke $iterasike"; //echo $kata."</br>";

$hasil="<a href='brute2.php?cari=$cari&kata=$kata' target='_blank'>$kata</a>";

return $hasil."<br/>"; }

}

(2)

$cari=$_REQUEST['cari']; include "koneksi.php";

$sql=mysql_query("SELECT * from kata",$koneksi)or die(mysql_error()); while($data=mysql_fetch_array($sql)){

$kata=$data['kata'];

$hasil=bruteforce($cari,$kata); echo $hasil;

if ($hasil!='') {

$jlh_temuan++; }

}

if ($jlh_temuan==0) { echo "not found"; }

if($cari!='')

echo '<br/> Run Time : ' . number_format((microtime(true) - $time_start),5); ?>

brute2.php

<style type="text/css"> table td {

width: 15px; text-align: center; }

.merah{

background: #99BFDB; }

.hijau{

background: #E1EEFC; }

</style>

<h1>Hasil Iterasi Saran Brute Force</h1> <?php

$time_start = microtime(true); function bruteforce($cari,$kata){

$ditemukan=0; //$cari="katu";

//$kata="kata kita ke katu kate";

$cari_arr= str_split($cari); //mengubah kata yang dicari ke bentuk array $cari_len= count($cari_arr); // menghitung panjang kata yang dicari

$kata_arr= str_split($kata); //mengubah kata yang diperiksa ke bentuk array $kata_len= count($kata_arr); // menghitung panjang kata yang diperiksa

(3)

$x=0;

while ($x<$batas+1) { $char_kata=''; $kata_full='';

for ($i=$x, $n=0; $i < $x+$cari_len; $i++, $n++) { $char_kata[$n]=$kata_arr[$i];

$kata_full.=$kata_arr[$i]; }

for ($j=0; $j < $cari_len; $j++) { $a=$cari_arr[$j];

$b=$char_kata[$j]; if ($a!=$b) {

break; }

}

//memunculkan iterasi ke echo "Iterasi ke-$iterasi"; //memunculkan perbandingan echo "<table border=1>"; //kata yang dibandingkan echo "<tr>";

for ($m=0; $m < $kata_len; $m++) { $char_kata=$kata_arr[$m]; echo "<td>$char_kata</td>"; }

echo "</tr>";

//spasi sebelum kata yang di cari echo "<tr>";

$b_char=0;

for ($n=0; $n < $x; $n++) { echo "<td>$nbsp</td>"; $b_char++;

}

//kata yang di cari

for ($o=0; $o < $cari_len; $o++) { $char_cari=$cari_arr[$o];

$char_kata=$kata_arr[$o+$b_char]; if ($char_cari==$char_kata)

$warna='hijau'; else

$warna='merah';

echo "<td class='$warna'>$char_cari</td>"; }

//spasi setelah kata yang di cari

for ($n=0; $n < $kata_len-$x-$cari_len; $n++) { echo "<td>$nbsp</td>";

}

(4)

echo "</table>";

if ($kata_full==$cari) { $ditemukan=1; break;

}

$x++; $iterasi++; }

if ($ditemukan==1) {

//echo "kata ditemukan di iterasi ke $iterasike"; //echo $kata."</br>";

} }

$jlh_temuan=0;

$cari=$_REQUEST['cari']; $kata=$_REQUEST['kata']; bruteforce($cari,$kata);

if($cari!='')

echo '<br/> Run Time : ' . number_format((microtime(true) - $time_start),5); ?>

kmp.php

<?php

$time_start = microtime(true); $jlh_temuan=0;

function kmp($cari, $kata){ $ditemukan=0; //$cari='kita';

//$kata="kata kita ke katu kate";

$cari_arr= str_split($cari); //mengubah kata yang dicari ke bentuk array $cari_len= count($cari_arr); // menghitung panjang kata yang dicari

$kata_arr= str_split($kata); //mengubah kata yang diperiksa ke bentuk array $kata_len= count($kata_arr); // menghitung panjang kata yang diperiksa $batas=$kata_len-$cari_len;

$x=0;

while ($x<=$batas) { $char_kata=''; $kata_full='';

for ($i=$x, $n=0; $i < $x+$cari_len; $i++, $n++) { $char_kata[$n]=$kata_arr[$i];

(5)

for ($j=0; $j < $cari_len; $j++) { // membandingkan huruf $a=$cari_arr[$j];

$b=$char_kata[$j]; if ($a!=$b) {

break; }

}

if ($kata_full==$cari) { // jika cocok $ditemukan=1;

break; }

//echo "$kata_full, "; $x+=$j+1; //

}

if ($ditemukan==1) {

//echo "kata ditemukan di iterasi ke $iterasike"; //echo $kata."</br>";

$hasil="<a href='kmp2.php?cari=$cari&kata=$kata'

target='_blank'>$kata</a>";

return $hasil."<br/>"; }

}

$cari=$_REQUEST['cari']; include "koneksi.php";

$sql=mysql_query("SELECT * from kata",$koneksi)or die(mysql_error()); while($data=mysql_fetch_array($sql)){

$kata=$data['kata']; $hasil=kmp($cari,$kata); echo $hasil;

if ($hasil!='') {

$jlh_temuan++; }

}

if ($jlh_temuan==0) { echo "not found"; }

if($cari!='')

(6)

kmp2.php

<style type="text/css"> table td {

width: 15px; text-align: center; }

.merah{

background: #99BFDB; }

.hijau{

background: #E1EEFC; }

</style>

<h1>Hasil Iterasi Saran Knuth-Morris-Pratt (KMP)</h1> <?php

$time_start = microtime(true); $jlh_temuan=0;

function kmp($cari, $kata){ $ditemukan=0; //$cari='kita';

//$kata="kata kita ke katu kate";

$cari_arr= str_split($cari); //mengubah kata yang dicari ke bentuk array $cari_len= count($cari_arr); // menghitung panjang kata yang dicari

$kata_arr= str_split($kata); //mengubah kata yang diperiksa ke bentuk array $kata_len= count($kata_arr); // menghitung panjang kata yang diperiksa $batas=$kata_len-$cari_len;

$iterasi=1; $x=0;

while ($x<=$batas) { $char_kata=''; $kata_full='';

for ($i=$x, $n=0; $i < $x+$cari_len; $i++, $n++) { $char_kata[$n]=$kata_arr[$i];

$kata_full.=$kata_arr[$i]; }

for ($j=0; $j < $cari_len; $j++) { $a=$cari_arr[$j];

$b=$char_kata[$j]; if ($a!=$b) {

break; }

}

(7)

echo "<table border=1>"; //kata yang dibandingkan echo "<tr>";

for ($m=0; $m < $kata_len; $m++) { $char_kata=$kata_arr[$m]; echo "<td>$char_kata</td>"; }

echo "</tr>";

//spasi sebelum kata yang di cari echo "<tr>";

$b_char=0;

for ($n=0; $n < $x; $n++) { echo "<td>$nbsp</td>"; $b_char++;

}

//kata yang di cari

for ($o=0; $o < $cari_len; $o++) { $char_cari=$cari_arr[$o];

$char_kata=$kata_arr[$o+$b_char]; if ($char_cari==$char_kata)

$warna='hijau'; else

$warna='merah';

echo "<td class='$warna'>$char_cari</td>"; }

//spasi setelah kata yang di cari

for ($n=0; $n < $kata_len-$x-$cari_len; $n++) { echo "<td>$nbsp</td>";

}

echo "</tr>"; echo "</table>";

if ($kata_full==$cari) { $ditemukan=1; break;

}

//echo "$kata_full, "; $x+=$j+1;

$iterasi++; }

if ($ditemukan==1) {

//echo "kata ditemukan di iterasi ke $iterasike"; //echo $kata."</br>";

//return $kata."<br/>"; }

(8)

$cari=$_REQUEST['cari']; $kata=$_REQUEST['kata']; $hasil=kmp($cari,$kata);

if($cari!='')

echo '<br/> Run Time : ' . number_format((microtime(true) - $time_start),5); ?>

class_paging.php

<?php class Paging {

// Fungsi untuk mencek halaman dan posisi data function cariPosisi($batas)

{

if(empty($_GET[halaman])){ $posisi=0;

$_GET[halaman]=1; }

else{

$posisi = ($_GET[halaman]-1) * $batas; }

return $posisi; }

// Fungsi untuk menghitung total halaman function jumlahHalaman($jmldata, $batas) {

$jmlhalaman = ceil($jmldata/$batas); return $jmlhalaman;

}

// Fungsi untuk link halaman 1,2,3 ... Next, Prev, First, Last function navHalaman($halaman_aktif, $jmlhalaman, $page) {

$link_halaman = "";

// Link First dan Previous if ($halaman_aktif > 1) {

$link_halaman .= " <a href=$file?$page&amp;halaman=1><< First</a> | "; }

if (($halaman_aktif-1) > 0) {

$previous = $halaman_aktif-1;

(9)

// Link halaman 1,2,3, ...

for ($i=1; $i<=$jmlhalaman; $i++) {

if ($i == $halaman_aktif) {

$link_halaman .= "<b>$i</b> | "; }

else {

$link_halaman .= "<a href=$file?$page&amp;halaman=$i>$i</a> | "; }

$link_halaman .= " "; }

// Link Next dan Last

if ($halaman_aktif < $jmlhalaman) {

$next=$halaman_aktif+1;

$link_halaman .= " <a href=$file?$page&amp;halaman=$next>Next ></a> "; }

if (($halaman_aktif != $jmlhalaman) && ($jmlhalaman != 0)) {

$link_halaman .= " | <a href=$file?$page&amp;halaman=$jmlhalaman>Last >></a> "; }

return $link_halaman; }

} ?>

edit_data.php

<!DOCTYPE html> <html>

<head>

<title>Adli Abdillah Nababan</title>

<link rel="stylesheet" type="text/css" href="css/style.css"> <style type="text/css">

#table_kata table{

border:1px solid #000000; }

#table_kata th{

background-color:#000; color:#FFFFFF;

}

#table_kata tr:hover{

(10)

#table_kata a{

text-decoration:none; color:#333;

} </style> </head>

<body>

<div id="wrapper"> <div id="header">

Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP)

Dalam Pencarian Word Suggestion </div>

<div id="menu"> <ul>

<li><a href="index.php">Word Suggestion</a></li> <li><a href="tambah_data.php">Tambah Data</a></li> <li><a href="tentang.php">Tentang</a></li>

</ul> </div>

<div id="pattern-wrap"> <?php

include "koneksi.php"; $id=$_REQUEST['id'];

$sql=mysql_query("SELECT * FROM kata WHERE

id_kata='$id'",$koneksi)or die(mysql_error()); $row=mysql_fetch_array($sql);

$kata=$row['kata']; ?>

<form action="proses_edit.php"> Edit Kata: <br/>

<input type="hidden" name="id" value="<?php echo $id?>">

<input type="text" name="kata" id="pattern" value="<?php echo $kata?>" /><br/>

<input type="submit" value="Edit Kata" /> </form>

</div> </div>

</body> </html>

index.php

<!DOCTYPE html> <html>

<head>

<title>Adli Abdillah Nababan</title>

(11)

</head> <body>

<div id="wrapper"> <div id="header">

Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP)

Dalam Pencarian Word Suggestion </div>

<div id="menu"> <ul>

<li><a href="index.php">Word Suggestion</a></li> <li><a href="tambah_data.php">Tambah Kata</a></li> <li><a href="tentang.php">Tentang</a></li>

</ul> </div>

<div id="pattern-wrap"> Input Pattern: <br/>

<input type="text" id="pattern" /> </div>

<div id="result">

<div id="result-left"> Brute Force:

<div id="brute_force">result</div> </div>

<div id="result-right"> Knuth-Morris-Pratt:

<div id="kmp">result</div> </div>

</div>

<a href="http://www.pnri.go.id/IstilahKomputer.aspx"<h>sumber: http://www.pnri.go.id/IstilahKomputer.aspx/</a>

</div>

<script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" language="javascript">

$(document).ready(function() {

$("#pattern").keyup(function(event){ var kata = $("#pattern").val();

$("#brute_force").load('brute.php', {"cari":kata} ); $("#kmp").load('kmp.php', {"cari":kata} );

(12)

koneksi.php

<?php

$host="localhost"; $username="root"; $password="";

$database="istilah komputer";

$koneksi=mysql_connect($host,$username,$password) or die(mysql_error()); mysql_select_db($database,$koneksi) or die(mysql_error());

?>

proses_edit.php

<?php

include "koneksi.php";

$id=$_REQUEST['id']; $kata=$_REQUEST['kata'];

if($id && $kata) {

$sql=mysql_query("UPDATE kata SET kata='$kata' WHERE id_kata=$id",$koneksi) or die (mysql_error()); ?>

<script language="javascript">

alert('perubahan telah di simpan') window.location = "tambah_data.php"; </script>

<?php }

else { ?>

<script language="javascript">

alert('maaf, isi data anda dengan benar') window.back();

</script>

<?php } ?>

proses_hapus.php

(13)

include ("koneksi.php");

$id=$_REQUEST[id];

if($id!='') {

mysql_query("DELETE FROM kata WHERE id_kata=$id");

?>

<script language="javascript"> alert('kata di hapus')

window.location = "tambah_data.php"; </script>

<?php }

else {

?>

<script language="javascript">

alert('hapus gagal di hapus') window.back();

</script> <?php

} ?>

proses_tambah.php

<?php

include "koneksi.php";

$kata=$_REQUEST['kata'];

if($kata!=''){

$sql=mysql_query("INSERT into kata (kata) values ('$kata')"); if ($sql) {

?>

<script language="javascript"> alert('kata telah di simpan');

window.location = "tambah_data.php"; </script>

<?php }

} else{

?>

<script language="javascript"> alert('isi kata');

(14)

</script> <?php

}

?>

result.php

<?php

if( $_REQUEST["kata"] ) {

$kata = $_REQUEST['kata']; echo "Welcome ". $kata; }

?>

tambah_data.php

<!DOCTYPE html> <html>

<head>

<title>Adli Abdillah Nababan</title>

<link rel="stylesheet" type="text/css" href="css/style.css"> <style type="text/css">

#table_kata table{

border:1px solid #000000; }

#table_kata th{

background-color:#000; color:#FFFFFF;

}

#table_kata tr:hover{

background-color:#CCCCCC; }

#table_kata a{

text-decoration:none; color:#333;

} </style> </head>

<body>

<div id="wrapper"> <div id="header">

Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP)

(15)

<div id="menu"> <ul>

<li><a href="index.php">Word Suggestion</a></li> <li><a href="tambah_data.php">Tambah Kata</a></li> <li><a href="tentang.php">Tentang</a></li>

</ul> </div>

<div id="pattern-wrap">

<form action="proses_tambah.php"> Kata Baru: <br/>

<input type="text" name="kata" id="pattern" /><br/> <input type="submit" value="Tambah Kata" /> </form>

</div>

<div id="result">

<h3>Data Kata</h3> <?php

include "koneksi.php";

$file = "tambah_data.php"; $page = "";

// Memanggil dan menginisiasi class include "class_paging.php";

$p = new Paging;

// Tentukan limit atau batas $batas = 100;

// Cek halaman dan posisi data $posisi = $p->cariPosisi($batas);

$warna1 = ""; //baris ganjil $warna2 = ""; //baris genap

$warna = $warna1; //warna default

?>

<table id="table_kata"> <tr>

<th>No.</th> <th>Kata</th> <th>Action</th> </tr>

<?php $no=$posisi+1;

$sql = mysql_query("SELECT * FROM kata ORDER BY kata ASC LIMIT $posisi,$batas", $koneksi) or die (mysql_error());

$sql2 = mysql_query("SELECT * FROM kata ORDER BY kata ASC");

(16)

{

if($no%2==0) $warna=$warna2; else

$warna=$warna1;

//mencari sisa

$id_kata=$row['id_kata']; $kata=$row['kata'];

?>

<tr bgcolor="<?php echo $warna ?>"> <td><?php echo $no?></td>

<td><?php echo $kata ?></td> <td>

<a href='edit_data.php?id=<?php echo $id_kata?>' onClick="return confirm('Anda ingin mengubah data?')"><acronym title='Edit Data'><img src='images/edit.png' width='20' height='20' alt='edit'></a>&nbsp;&nbsp;

<a href='proses_hapus.php?id=<?php echo $id_kata?>' onClick="return confirm('Anda ingin menghapus data?')"><acronym title='Hapus

Data'><img src='images/delete.png' width='20' height='20'

alt='delete'></acronym></a>&nbsp;&nbsp;

</td> </tr> <?php $no++; }

?>

</table> <?php

// Dapatkan jumlah data keseluruhan $jmldata = mysql_num_rows($sql2);

// Dapatkan jumlah halaman

$jmlhalaman = $p->jumlahHalaman($jmldata, $batas);

// Cetak link navigasi halaman

$linkHalaman = $p->navHalaman($_GET[halaman], $jmlhalaman, $page); echo $linkHalaman;

?> </div> </div>

(17)

tentang.php

<!DOCTYPE html> <html>

<head>

<title>Adli Abdillah Nababan</title>

<link rel="stylesheet" type="text/css" href="css/style.css"> <style type="text/css">

#tentang-right{

font-family: Times; font-size: 20px; }

table td{

vertical-align: top; }

</style> </head>

<body>

<div id="wrapper"> <div id="header">

Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP)

Dalam Pencarian Word Suggestion </div>

<div id="menu"> <ul>

<li><a href="index.php">Word Suggestion</a></li> <li><a href="tambah_data.php">Tambah Kata</a></li> <li><a href="tentang.php">Tentang</a></li>

</ul> </div>

<div id="pattern-wrap"> Tentang Saya </div>

<div id="tentang">

<div id="tentang-left"> <br><br><br>

<center><img src="images/word-suggestion.png"></center> </div>

<div id="tentang-right"> <table>

<tr>

<td width="125">Nama</td> <td>:</td>

<td>Adli Abdillah Nababan</td> </tr>

<tr>

(18)

<td>131421065</td> </tr>

<tr>

<td>Judul Skripsi</td> <td>:</td>

<td>Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP) Dalam

Pencarian Word Suggestion. </td>

</tr> <tr>

<td>Pembimbing I</td> <td>:</td>

<td>Dr. Poltak Sihombing, M.Kom</td> </tr>

<tr>

<td>Pembimbing II</td> <td>:</td>

<td>Dian Rachmawati, S.Si, M.Kom</td> </tr>

</table>

<center><img src="images/logo-usu.png"></center> </div>

</div> </div>

<script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" language="javascript">

$(document).ready(function() {

$("#pattern").keyup(function(event){ var kata = $("#pattern").val();

$("#brute_force").load('brute.php', {"cari":kata} ); $("#kmp").load('kmp.php', {"cari":kata} );

(19)

DAFTAR RIWAYAT HIDUP

Saya yang bertanda tangan dibawah ini :

DATA PRIBADI

Nama : Adli Abdillah Nababan

Alamat : Jl. Pintu Air Gg. Langgar No.7A Medan

Hp : 082168444649

E-Mail : [email protected]

Tempat/ tanggal lahir : Padangsidimpuan, 13 Juni 1992 Jenis Kelamin : Laki-laki

Status : Belum Menikah

PENDIDIKAN

1998 - 2004 : SD Negeri 200110 Padangsidimpuan 2004 - 2007 : SMP Negeri 1 Padangsidimpuan 2007 - 2010 : SMA Negeri 1 Padangsidimpuan

2010 - 2013 : DIII Teknik Informatika Universitas Sumatera Utara 2013 - 2015 : S-1 Ekstensi Ilmu Komputer Universitas Sumatera Utara

SEMINAR

 Seminar Nasional Literasi Informasi (SENARAI) 2014 Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Demikianlah Daftar Riwayat Hidup ini saya perbuat dengan sebenarnya.

Hormat Saya,

Referensi

Dokumen terkait

melakukan pencocokan satu persatu di dalam pattern dengan seluruh huruh yang terdapat pada string. Flowchart algoritma Knuth Morris Pratt pada permainan

Hasil pencarian yang ditampilkan berupa dokumen-dokumen yang tersedia dalam Android dan informasi mengenai jumlah dari dokumen yang tersedia dalam Android tersebut, serta

Demikian daftar riwayat hidup ini saya buat dengan sebenarnya dan dapat dipertanggungjawabkan.

Hal inilah yang melatarbelakangi untuk membuat sebuah penelitian mengenai “Implementasi Porter Stemming menggunakan Algoritma Knuth-Morris-Pratt (KMP) Untuk Menentukan

Bioinformatika dapat digunakan dalam mendiagnosis penyakit para pasien dengan cara dengan mengidentifikasi pola yang tidak biasa dalam DNA mereka.Database DNA tersebut dapat

Demikianlah daftar riwayat hidup ini saya buat dengan sebenarnya. Bandung, Mei 2014 Saya

Setelah tahap implementasi, dilakukan pengujian algoritma dengan cara membaca posisi string yang ditemukan berdasarkan kata yang dicari dan pengujian performa

Untuk membandingkan kedua algoritma tersebut dibutuhkan analisa untuk menentukan algoritma mana yang lebih efektif dalam memunculkan Word Suggestion sehingga