Anda di halaman 1dari 20

1.

2 Tujuan Praktikum

1. Definisi Algoritma, Algoritma Dynamic Programming


2. Model Dynamic Programming
3. Karakteristik dan Konsep Algoritma Dynamic Programming

1.3 Alat dan Bahan Praktikum

Alat : Laptop Hp

Bahan Praktikum : Netbeans 8.0

Bahasa Pemograman : Java

6
BAB II

ISI

2.1. Langkah Percobaan

1. Buka file netbeans 8.0 pada laptop

Gambar 2.1. Gambar Awal Pembuka Netbeans

2. klik file pilih new project maka ditampilkan lembaran project seperti gambar di
bawah ini.

7
Gambar 2.2. Kotak Dialog Awal Proses Project Netbeans

3. lalu klik java pilih java application kemudian tekan next.

Gambar 2.3. Kotak Pemilihan Project Netbeans

4. kemudian buat nama project lalu klik finish seperti pada gambar di bawah ini.

8
Gambar 2.4. Kotak Dialog Untuk Menyimpan Nama Project

5.kemudian akan ditampilkan lembaran kerja project yang sudah dibuat seperti
gambar di bawah ini dan sudah bisa membuat program apa yang ingin dikerjakan
pada project ini.

Gambar 2.5. Lembaran Kerja Untuk Membuat Program

9
6.Setelah program selesai dibuat, build program tersebut, apakah program yang

dibuat sudah benar atau masih ada error, dengan mengklik ikon yang ada
pada taskbar ini.

Gambar 2.6. Proses Build Program

7. Setelah build selesai, jalankan program dengan mengklik icon ini pada
taskbar.

10
Gambar 2.7. Proses Run Program

11
2.2. Data Hasil Percobaan

1. Program levenshteindistance untuk membuat string menggunakan netbeans

package levenshteindistance;

public class LevenshteinDistance

public static int distance (String s, String t)

int d[][]=new int[s.length()+1][t.length()+1];

for(int i=0; i<=s.length(); i++)

d[i][0]=i;

for(int j=0; j<=t.length();j++)

d[0][j]=j;

for(int i=1; i<=s.length(); i++)

for(int j=1; j<=t.length();j++)

int cost=(s.charAt(i-1)==t.charAt(j-1)?0:1);

d[i][j]=Math.min(d[i-1][j]+1,

Math.min(d[i][j-1]+1,

d[i-1][j-1]+cost));

return d[s.length()][t.length()];

12
2. Program leven untuk mengeksekusi string pada levenshteindistance
menggunakan netbeans

package levenshteindistance;

import java.util.Scanner;

public class leven {

public static void main (String [] args)

Scanner scan = new Scanner(System.in);

System.out.println("Masukkan string source : ");

String s = scan.nextLine();

System.out.println("Masukkan string target : ");

String t = scan.nextLine();

LevenshteinDistance ld = new LevenshteinDistance();

int jarak = ld.distance(s,t);

System.out.println("Jarak = "+jarak);

Output :

Gambar 2.8. Output Data levenshteindistance

13
2.3. Analisa Data

a.Analisa pada perhitungan manual

Pada percobaan ini kita menghitung nilai secara manual dengan menjumlahkan
antara baris, kolom dan diagonal. Masing masing berkaitan dengan sebelumnya
maupun sesudahnya. Perhitungan ini menggunakan dua cara yaitu cara manual
dan cara cepat. Lebih mudah didapatkan hasil menggunakan cara cepat
dibandingkan dengan manual dimana kita harus menjumlahkan baris, kolom
maupun diagonal sesuai dengan rumus yang sudah ditentukan. Walaupun cara
manual sangat lambat tapi bisa dibuktikan hasilnya menggunakan cara cepat,
karena hanya dengan menjumlah sisi atas , sisi bawah dan diagonal maka kita
dengan mudah mendapatkan hasil akhir dari perhitungan tersebut. Cara
menjumlahkan menggunakan perhitungan manual yaitu :

S = saya m = 4

T = kamu n = 4

Target k a m u
source 0 1 2 3 4
1 2 3 4
s 1
2 1 2 3
a 2
3 2 2 3
y 3
4 3 3 3
a 4

Baris 1 , kolom 1

14
I = 1, j = 1

S [ i ] = t [ j ] s [ 1 ] = t [1 ]

S=kF

Cost = 1

D[1,1]=?

D [ i 1 , j ] + 1 = d [ 0 , 1] + 1 = 2

D[i,j1]+1=d[1,0]+1=2

D [ i 1 , j 1 ] + cost = d [ 0 , 0 ] + cost = 1

D [ 1 , 1 ] = min [ 2 , 2 , 1 ] = 1

Baris 1 , kolom 2

I = 1, j = 2

S[i]=t[j]s[1]=t[2]

S=aF

Cost = 1

D[1,2]=?

D [ i 1 , j ] + 1 = d [ 0 , 2] + 1 = 3

D[i,j1]+1=d[1, 1]+1=2

D [ i 1 , j 1 ] + cost = d [ 0 , 1 ] + cost = 2

D [ 1 , 2 ] = min [ 3 , 2 , 2 ] = 2

15
Baris 1 , kolom 3

I = 1, j = 3

S[i]=t[j]s[1]=t[3]

S=mF

Cost = 1

D[1,3]=?

D [ i 1 , j ] + 1 = d [ 0 , 3] + 1 = 4

D[i,j1]+1=d[1,2]+1=3

D [ i 1 , j 1 ] + cost = d [ 0 , 2 ] + cost = 3

D [ 1 , 3 ] = min [ 4 , 3 , 3 ] = 3

Baris 1 , kolom 4

I = 1, j = 4

S [ i ] = t [ j ] s [ 1 ] = t [4 ]

S=uF

Cost = 1

D[1,4]=?

D [ i 1 , j ] + 1 = d [ 0 , 4] + 1 = 5

D[i,j1]+1=d[1,3]+1=4

D [ i 1 , j 1 ] + cost = d [ 0 , 3 ] + cost = 4

D [ 1 , 4 ] = min [ 5 , 4 , 4 ] = 4

16
Baris 2 , kolom 1

I = 2, j = 1

S [ i ] = t [ j ] s [ 2 ] = t [1 ]

A=kF

Cost = 1

D[2,1]=?

D [ i 1 , j ] + 1 = d [ 1 , 1] + 1 = 2

D[i,j1]+1=d[2,0]+1=3

D [ i 1 , j 1 ] + cost = d [ 1 , 0 ] + cost = 2

D [ 2 , 1 ] = min [ 2 , 3 , 2 ] = 2

Baris 2 , kolom 2

I=2,j=2

S [ i ] = t [ j ] s [ 2 ] = t [2 ]

a=a T

Cost = 0

D[2,2]=?

D [ i 1 , j ] + 1 = d [ 1 , 2] + 1 = 3

D[i,j1]+1=d[2,1]+1=3

D [ i 1 , j 1 ] + cost = d [ 1 , 1 ] + cost = 1

D [ 1 , 1 ] = min [ 3 , 3 , 1 ] = 1

17
Baris 2 , kolom 3

I=2,j=3

S [ i ] = t [ j ] s [ 2 ] = t [3 ]

a=mF

Cost = 1

D[2,3]=?

D [ i 1 , j ] + 1 = d [ 1 , 3] + 1 = 4

D[i,j1]+1=d[2,2]+1=2

D [ i 1 , j 1 ] + cost = d [ 1 , 2 ] + cost = 3

D [ 1 , 1 ] = min [ 4 , 2 , 3 ] = 2

Baris 2 , kolom 4

I=2,j=4

S[i]=t[j]s[2]=t[4]

S=uF

Cost = 1

D[2,4]=?

D[i1,j]+1=d[1,4]+1=5

D[i,j1]+1=d[2,3]+1=3

D [ i 1 , j 1 ] + cost = d [ 1 , 3 ] + cost = 4

D [ 2 , 4 ] = min [ 5 , 3 , 4 ] = 3

18
Baris 3 , kolom 1

I = 3, j = 1

S [ i ] = t [ j ] s [ 3 ] = t [1 ]

y=kF

Cost = 1

D[3,1]=?

D [ i 1 , j ] + 1 = d [ 2 , 1] + 1 = 3

D[i,j1]+1=d[3,0]+1=4

D [ i 1 , j 1 ] + cost = d [ 2 , 0 ] + cost = 3

D [ 3 , 1 ] = min [ 3 , 4 , 3 ] = 3

Baris 3 , kolom 2

I = 3, j = 2

S [ i ] = t [ j ] s [ 3 ] = t [2 ]

y=aF

Cost = 1

D[3,2]=?

D [ i 1 , j ] + 1 = d [ 2 , 2] + 1 = 2

D[i,j1]+1=d[3,1]+1=4

D [ i 1 , j 1 ] + cost = d [ 2 , 1 ] + cost = 3

D [ 3 , 2 ] = min [ 2 , 4 , 3 ] = 2

19
Baris 3 , kolom 3

I=3,j=3

S [ i ] = t [ j ] s [ 3 ] = t [3 ]

y=mF

Cost = 1

D[3,3]=?

D[i1,j]+1=d[2,3]+1=3

D[i,j1]+1=d[3,2]+1=3

D [ i 1 , j 1 ] + cost = d [ 2 , 2 ] + cost = 2

D [ 3 , 3 ] = min [ 3 , 3 , 2 ] = 2

Baris 3 , kolom 4

I = 3, j = 4

S[i]=t[j]s[3]=t[4]

y=uF

Cost = 1

D[3,4]=?

D[i1,j]+1=d[2,4]+1=4

D[i,j1]+1=d[3,3]+1=3

D [ i 1 , j 1 ] + cost = d [ 2 , 3 ] + cost = 3

D [ 3 , 4 ] = min [ 4 , 3 , 3 ] = 3

20
Baris 4 , kolom 1

I = 4, j = 1

S [ i ] = t [ j ] s [ 4 ] = t [1 ]

a=kF

Cost = 1

D[4,1]=?

D [ i 1 , j ] + 1 = d [ 3 , 1] + 1 = 4

D[i,j1]+1=d[4,0]+1=5

D [ i 1 , j 1 ] + cost = d [ 3 , 0 ] + cost = 4

D [ 4 , 1 ] = min [ 4 , 5 , 4 ] = 4

Baris 4 , kolom 2

I=4,j=2

S[i]=t[j]s[4]=t[2]

a=aT

Cost = 0

D[4,2]=?

D[i1,j]+1=d[3,2]+1=3

D[i,j1]+1=d[4,1]+1=5

D [ i 1 , j 1 ] + cost = d [ 3 , 1 ] + cost = 3

D [ 4 , 2 ] = min [ 3 , 5 , 3 ] = 3

21
Baris 4 , kolom 3

I=4,j=3

S[i]=t[j]s[4]=t[3]

a=mF

Cost = 1

D[4,3]=?

D [ i 1 , j ] + 1 = d [ 3 , 3] + 1 = 3

D[i,j1]+1=d[4,2]+1=4

D [ i 1 , j 1 ] + cost = d [ 3 , 2 ] + cost = 3

D [ 4 , 3 ] = min [ 3 , 4 , 3 ] = 3

Baris 4 , kolom 4

I=4,j=4

S[i]=t[j]s[4]=t[4]

a=uF

Cost = 1

D[4,4]=?

D [ i 1 , j ] + 1 = d [ 3 , 4] + 1 = 4

D[i,j1]+1=d[4,3]+1=4

D [ i 1 , j 1 ] + cost = d [ 3 , 3 ] + cost = 3

D [ 4 , 4 ] = min [ 4 , 4 , 3 ] = 3

22
b. Flowchart

start

Masukkan teks 1

dan 2 sebagai string


s1, s2

Menyusun s1 sebagai array i dan s2


sebagai array j

Membandingkan karakter array i


dengan karakter array j

no
Karakter array I sama dengan

karakter array j

Mencari nilai minimun diantara nilai yes


edit distance sebelumnya, array i,
dan array j

Nilai edit distance sama dengan nilai

edit distance sebelumnya

Cetak nilai edit

distance terakhir

end

Gambar 2.9 Flowchart Program Levenshtein

23
BAB III

PENUTUP

3.1. KESIMPULAN

Pemrograman dinamis merupakan suatu teknik analisa kuantitatif untuk


membuat tahapan keputusan yang saling berhubungan. Teknik ini menghasilkan
prosedur yang sistematis untuk mencari keputusan dengan kombinasi yang
optimal.

Pemrograman dinamis membagi permasalahan menjadi beberapa tahap


keputusan, dimana hasil keputusan dari satu tahap akan mempengaruhi keputusan
dari tiap-tiap tahapan selanjutnya.

Dynamic programming dapat didefinisikan juga sebagai suatu pendekatan


matematik yang memiliki prosedure sistematis yang dirancang sedemikian rupa
dengan tujuan untuk mengoptimalkan penyelesaian suatu masalah tertentu yang
diuraikan menjadi sub-sub masalah yang lebih kecil yang terkait satu sama lain
dengan tetap memperhatikan kondisi dan batasan permasalahan tersebut.

24
DAFTAR PUSTAKA

Jobsheet, Modul Praktikum Program Dinamis (Dynamic Programming.


Politeknik Negeri Lhokseumawe

Rinaldi Munir, Diktat Kuliah IF2251 Strategi Algoritmik, Program Studi


Informatika ITB, 2007.

http://aryo.lecture.ub.ac.id/files/2013/05/DAA-VII-Dynamic-Programming.pptx
diakses pada tanggal 25 Mei 2017

http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2013-
2014/Makalah2013/MakalahIF2211-2013-043.pdf diakses pada tanggal 25 Mei
2017

25

Anda mungkin juga menyukai