• Tidak ada hasil yang ditemukan

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

3.2. Pemodelan sistem

3.2.3. Activity diagram

Activity diagram adalah bentuk pemodelan dari sistem yang menggambarkan alur dari proses yang terjadi pada sebuah use case dan untuk menggambarkan logika dari suatu sistem. Activity diagram dibuat berdasarkan use case yang telah ditentukan sebelumnya pada proses requirement analysis. Activity diagram yang terdapat pada sistem ini adalah sebagai berikut.

Pada proses home (input vertex), aktivitas yang berlangsung dapat dilihat pada Gambar 3.3.

Gambar 3.3. Activity Diagram

3.2.4. Sequence diagram

Sequence Diagram adalah suatu diagram yang menggambarkan interaksi antara aktor dan sistem pada use case skenario diagram ini sangat membantu melihat pesan higt level yang masuk dan keluar dari sistem (Bentley, Whitten, 2007). Sequence Diagram untuk sistem minimum spanning tree algoritma Kruskal dan Prim dapat dilihat pada Gambar 3.4.

Gambar 3.4. Sequence Diagram

3.2.5. Flowchart

Flowchart adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program. Flowchart sistem merupakan bagan yang menunjukan alur kerja atau apa yang sedang dikerjakan didalam sistem secara keseluuhan dan menjelaskan urutan dari prosedur-prosedur yang ada didalam sistem.

Dengan kata lain flowchart ini merupakan deskripsi secara grafik dari urutan prosedur-prosedur yang terkombinasi yang memberntuk suatu sistem.

Flowchart sistem terdiri dari data yang mengalir melalui sistem dan proses yang mentransformasikan data tersebut. Data dan proses dalam flowchart sistem dapat digambarkan secara online (dihubungkan langsung dengan komputer) atau offline.

27

1. Flowchart sistem utama

Flowchart sistem secara umum dalam algoritma minimum spanning tree menggunakan algoritma kruskal dan algoritma prim dapat dilihat pada Gambar 3.5.

Gambar 3.5. Flowchart Sistem Input Titik

Kordinat Fakultas

Output (Lintasan Graf,

running time) Tabel jarak dan

Titik

Hitung MST Algoritma Kruskal dan Prim

Start

Finish

2. Flowchart algoritma Kruskal

Flowchart algoritma Kruskal yang akan di gunakan pada sistem ini dapat dilihat dari Gambar 3.6. flowchart ini mengikuti langkah-langkah dari algoritma Kruskal yang di jelaskan pada bab 2.

Gambar 3.6. Flowchart Algoritma Kruskal

Tidak

Tidak

Ya

Ya

End

Start

Isi t dengan semua titik G

tanpa garis

M <

(n-1)

Tentukan e ϵ E dengan bobot minimum

Jika e ϵ E masukan ke T tapi tidak membentuk sirkuit

Masukan e ke T sehingga edge = edge+1

Hapus e dari E Output T =

edge

29

3. Flowchart algoritma Prim

Flowchart algoritma prim yang akan di gunakan pada sistem ini dapat dilihat dari Gambar 3.7 flowchart ini mengikuti langkah-langkah dari algoritma Prim yang di jelaskan pada bab 2.

Gambar 3.7. Flowchart Algoritma Prim

3.3. Perancangan Antarmuka Sistem

Pada perancangan antar muka sistem ini perancangan sistem dibuat dengan Graphic User Interface (GUI) yang akan mempermudakan user dalam menggunakan sistem dari aplikasi ini, terdapat beberapa form yang ada di dalam aplikasi ini yaitu form utama, form data, form about.

1. Form Utama

Pada halaman form utama menampilkan langsung bagian dari program sehingga user bisa langsung memakai aplikasi ini tanpa perlu menekan button untuk masuk ke dalam aplikasi. Pada halaman form ini juga terdapat beberapa keterangan seperti nama aplikasi dan algoritma. Form utama dapat dilihat pada Gambar 3.8.

Gambar 3.8. Tampilan Form Utama

31

Keterangan : 1. Tab File

Pada bagian ini berisi sub menu yaitu keluar yang berguna untuk keluar dari aplikasi atau bisa menggunakan alternatif alt+f4

2. Tab Ubah

Pada bagian ini juga berisi sub menu yaitu undo dan redo yang berfungsi untuk kembali ke keperintah yang sebelumnya dan redo untuk mengulang perintah yang telah dibatalkan sebelumnya dan dapat memakai alternatif yaitu undo ctrl+z , redo ctrl+y.

3. Tab MST

Pada bagian ini terdiri dari beberapa sub menu yaitu : 1. Menampilkan

Terdiri dari beberapa sub tab juga yaitu :

• Kosongkan

Berfungsi untuk mengosokan lembar tampilan yang telah dibuat dan juga dapat memakai alternatif yaitu shift+n.

• Algoritma Prim

Berfungsi untuk menampilkan hasil dari minimum spanning tree dengan algoritma Prim dapat juga memakai alternatif yaitu shift+p.

• Algoritma Kruskal

Berfungsi untuk menampilkan hasil dari minimum spanning tree dengan algoritma Kruskal dapat juga memakai alternatif yaitu shift+k.

2. Hapus

Berfungsi untuk menghapus vertex yang telah diinputkan kedalam lembar kerja.

3. Data

Berikan link ke form data yang berisikan data log dari vertex yang ada berupa koordinat dari vertex.

4. Frame

Berisi map kerja untuk menggunakan algoritma Kruskal dan algoritma Prim disini merupakan bagian utama dari aplikasi.

2. Form data

Form data berisikan keterangan dari hasil input dari user berupa warna vertex dan juga koordinat vertex. Form dat dapat dilihat pada Gambar 3.9.

Gambar 3.9. Tampilan Form Data Keterangan :

1. Label

Berisikan informasi dari program berupa nama program.

2. Frame 1

Menampilkan jenis warna yang telah diinput oleh user berupa vertex berwana 3. Frame 2

Menampilkan posisi koordinat dari vertex yang telah diinput oleh user

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bab 4 ini penulis memaparkan bagaimana implementasi dari sistem dan juga hasil pengujian aplikasi yang dilakukan pada algoritma kruskal dan prim yang sudah dibangun menggunakan java.

4.1. Implementasi Sistem

Implementasi sistem adalah prosedur yang dilakukan untuk menyelesaikan desain yang ada dalam dokumen desain sistem yang disetujui dan menguji, menginstal, memulai, serta menggunakan sistem yang baru atau sistem yang diperbaiki.

Implementasi sistem pada penelitian ini menggunakan bahasa pemrograman. Bahasa pemrograman digunakan adalah java versi 1.8.0_111. Perangkat lunak yang digunakan dalam membagun sistem ini adalah Netbeans IDE 8.1 include Java SE Runtime Environtment 1.8.0_111-b14 dan Java Development Kit 1.8.0_73.

Proses implementasi yang diranang dari sistem ini dibagi menjadi 2 form dalam bahasa java, di antaranya yaitu form utama, form data.

4.1.1. Form utama

Form utama merupakan form yang akan muncul pertama kali ketika aplikasi dijalankan. Form ini terdiri dari 3 tab menu, yaitu tab file, tab ubah, dan tab MST.

Form utama pada aplikasi dapat dilihat pada Gambar 4.1.

Gambar 4.1 Form utama

4.1.2. Form data

Form data adalah form yang berisikan data-data dari vertex yang telah diinputkan, dimana di dalam form ini terdapat informasi letak titik vertex dan warna dari vertex tersebut. Form data pada aplikasi dapat dilihat pada Gambar 4.1.

Gambar 4.2 Form Data

35

4.1.3. Tab file

Tab file merupakan tab yang berisikan sub tab yaitu keluar yang berfungsi untuk keluar dari program yang telah dijalankan. Tab file pada aplikasi dapat dilihat pada Gambar 4.1.

Gambar 4.3 Tab File

4.1.4. Tab Ubah

Tab ubah merupakan tab yang berisikan 2 sub tab yaitu undo dan redo yang berfungsi untuk mengembalikan data yang telah diproses dan menampilkan kembali data yang telah dihapus atau di undo. Tab ubah pada aplikasi dapat dilihat pada Gambar 4.1.

Gambar 4.4 Tab Ubah

4.1.5. Tab MST

Tab MST berisikan tampilan, hapus, dan data dimana masing masing mempunyai fungsi masing-masing. Tab MST dan sub menu tampilan pada aplikasi dapat dilihat pada Gambar 4.4 dan Gambar 4.5.

Gambar 4.4 Tab MST

Gambar 4.5 Sub Menu Tampilan

37

4.2. Pengujian Sistem

Pengujian sistem merupakan tahap mengidentifikasi hasil dari implementasi sistem apakah sistem akan berjalan sesuai dengan fungsi-fungsi yang telah ditentukan sebelumnya pada tahap analisis dan perancangan sistem. Pengujian sistem ini dilakukan pada vertex yang berupa titik pada map. Pengujian sistem ini di bagi dalam 2 proses yaitu pengujian proses algoritma Kruskal dan algoritma Prim.

4.2.1. Pengujian algoritma Kruskal

Pengujian sistem algoritma Kruskal ini dilakukan dengan tahap memasukan vertex yang diinginkan secara manual di halaman utama. Langkah-langkah pengujian sistem algoritma Kruskal dapat dilihat sebagai berikut.

1. Input vertex secara manual di tempat yang diinginkan. Vertex yang telah diinput dapat dilihat pada Gambar 4.6.

Gambar 4.6. Vertex yang Telah di Input

2. Pilih tab MST dan pilih sub menu tampilkan.

3. Memilih algoritma sesuai yang diinginkan yaitu agoritma Kruskal atau bisa juga menekan tombol pada keyboard sebagai alternatif yaitu shift+k.

4. Lalu akan muncul jalur minimum spanning tree dari algoritma Kruskal yang telah dipilih. Minimum spanning tree dari algoritma kruskal dapat dilihat pada Gambar 4.7.

Gambar 4.7. Minimum Spanning Tree Algoritma Kruskal

4.2.2. Pengujian algoritma Prim

Pengujian sistem algoritma Prim ini dilakukan dengan tahap sama seperti pengujian sistem pada algoritma Kruskal yaitu memasukan vertex yang diinginkan secara manual di halaman utama. Langkah-langkah pengujian sistem algoritma Kruskal dapat dilihat sebagai berikut.

1. Input vertex secara manual di tempat yang diinginkan. Vertex yang telah diinput dapat dilihat pada Gambar 4.8.

Gambar 4.8. Vertex yang Telah di Input

39

2. Pilih tab MST dan pilih sub menu tampilkan

3. Memilih algoritma sesuai yang diinginkan yaitu agoritma Prim atau bisa juga menekan tombol pada keyboard sebagai alternatif yaitu shift+p.

4. Lalu akan muncul jalur minimum spanning tree dari algoritma Prim yang telah dipilih. Minimum spanning tree dari algoritma Prim dapat dilihat pada Gambar 4.9.

Gambar 4.9. Minimum Spanning Tree Algoritma Prim

4.3. Hasil Pengujian

Berdasarkan penelitian pengujian sistem dari gambar running time dari minimum spanning tree dengan algoritma Kruskal dan algoritma Prim dapat di ketahui dari beberapa vertex yang telah diinputkan dengan 5 kali percobaan. Adapun hasil pengujian dari algoritma Kruskal dan algoritma Prim dapat dilihat pada Tabel 4.1.

Tabel 4.1. Hasil Pengujian Algoritma Kruskal dan Algoritma Prim No Banyak Vertex Running Time (ms)

Algoritma Kruskal

Running Time (ms) Algoritma Prim

1 18 0,015 0,016

2 24 0,016 0,015

3 30 0,031 0,031

4 36 0,063 0,032

5 40 0,031 0,078

Total 0,156 0,172

Rata-rata 0,031 0,034

Setelah mendapatkan hasil pengujian dari Tabel 4.1 maka dapat dibuat grafik perbandingan algoritma Kruskal dan algoritma Prim berdasarkan hasil pengujian.

Grafik dapat dilihat pada Gambar 4.10.

15 16 31

Gambar 4.10. Grafik Running time Algoritma Kruskal dan Algoritma Prim

Berdasarkan gambar 4.2 dapat disimpulkan bahwa algoritma Kruskal memiliki running time yang relative lebih sedikit di bandingkan algoritma Prim namun perbandingan tersebut perbedaannya tidak telalu jauh dengan rata-rata waktu perbedaan 3ms. Rata-rata waktu kedua algoritma dapat dilihat pada Gambar 4.11.

151

Gambar 4.11. Grafik Perbandingan Total dan Rata-rata Running time Algoritma Kruskal dan Algoritma Prim

41

4.4. Kompleksitas Waktu

Kompleksitas waktu yang akan di uji adalah kompleksitas algoritma Kruskal dan algoritma Prim.

4.4.1. Kompleksitas algoritma Prim

Kompleksitas algoritma Prim dapat kita cari melalui algoritma yang ada dan melihat dari koding yang telah dibuat pada aplikasi yang dibuat oleh peneliti. Kompleksitas algoritma Prim dapat dilihat pada tabel 4.2.

Tabel 4.2. Kompleksitas Fungsi Proses Algoritma Prim

Langkah T(V,E) Koding

1 1 ArrayList<Sisi> result = new

ArrayList<Sisi>();

result.add(arraySisi.remove(0));

2 V for (int i = 0; i < source.size() -

2; i++)

a i for (int j = 0; j <arraySisi.size();

j++)

b 1 if (isBeside(result, s)) {

c 1 if (!isCircular(result, s)) { arraySisi.remove(s);

result.add(s);

Sehingga dapat kita lihat kompleksitas algoritma dari algoritma Prim adalah T(V,E) = 1 + V (i+1+1)

= 1 + + 2V = ½ V2 + 2 ½ V + 1

Sehingga kompleksitas algoritma Prim adalah O = (V2) dengan V menyatakan banyaknya vertex.

4.4.2. Kompleksitas algoritma Kruskal

Kompleksitas algoritma Kruskal dapat kita cari melalui algoritma yang ada dan melihat dari koding yang telah dibuat pada aplikasi yang dibuat oleh peneliti.

Kompleksitas algoritma Prim tidak jauh berbeda dengan algoritma Kruskal karena mempunyai banyak perulangan yang sama. Kompleksitas algoritma Kruskal dapat dilihat pada tabel 4.3.

Tabel 4.3. Kompleksitas Fungsi Proses Algoritma Kruskal

Langkah T(V,E) Koding

1 1 ArrayList<Sisi> result = new

ArrayList<Sisi>();

result.add(arraySisi.remove(0));

2 V while (result.size() <

source.size() - 1)

a i for (int j = 0; j <arraySisi.size();

j++)

b 1 if (isBeside(result, s)) {

c 1 if (!isCircular(result, s)) { result.add(arraySisi.remove(j));

Sehingga dapat kita lihat kompleksitas algoritma dari algoritma Kruskal adalah T(V,E) = 1 + V (i+1+1)

= 1 + + 2V = ½ V2 + 2 ½ V + 1

Sehingga kompleksitas algoritma Kruskal adalah O = (V2) dengan V menyatakan banyaknya vertex.

Notasi untuk big O adalah keadaan terburuk (worst case) artinya pencapaian T(n) paling maksimum atau tidak ada yang bisa lebih lambat dari T(n) yang didapat.

Notasi untuk big O bisa dikatakan jika algoritma dengan T(n) = Ɵ(n) artinya memiliki O sama dengan atau lebih besar dari Ɵ(n).

Notasi untuk big Ω adalah keadaan terbaik (best case) artinya pencapaian T(n) paling minimum atau tidak ada yang bisa lebih cepat dari T(n) yang didapat. Notasi

43

untuk big Ω bisa dikatakan jika algoritma dengan T(n) = Ɵ(n) artinya memiliki Ω sama dengan atau lebih kecil dari Ɵ(n). Notasi untuk big Ɵ adalah keadaan rata-rata (average case) artinya pencapaian nilai tengah atau T(n) berada di tengah antara O(n) dan Ω(n).

Notasi untuk big Ɵ bisa dikatakan jika algoritma dengan T(n) = Ɵ(n) artinya jika nilai O(n) dan Ω(n) sama maka dikatakan kompleksitas itu adalah Ɵ. Pada penelitian, algoritma Kruskal memiliki T(n) = Ɵ(n2) sedangkan algoritma Prim memiliki T(n) = Ɵ(n2).

Maka kompleksitas kedua algoritma sama sama memiliki Ɵ(n2) tetapi memiliki perbedaan running time yang tidak terlalu besar dikarenakan variabel yang berbeda algoritma Kruskal memiliki variabel yang lebih sedikit di bandingkan algoritma Prim sehingga algoritma Kruskal lebih cepat beberapa ms dalam melakukan proses minimum spanning tree.

BAB 5

KESIMPULAN DAN SARAN

Pada bab 5 ini akan disimpulkan, aplikasi yang telah dirancang telah dapat melakukan minimum spanning tree. Pada bab ini juga akan disajikan saran-saran yang bermanfaat bagi yang akan mengembangkan aplikasi minimum spanning tree dengan algoritma Kruskal dan algoritma Prim menjadi lebih baik.

5.1. Kesimpulan

Kesimpulan yang dapat di ambil dari penelitian ini adalah :

1. Aplikasi yang telah dirancang oleh peneliti telah dapat melakukan proses minimum spanning tree dengan algoritma Kruskal dan algoritma Prim.

2. Aplikasi yang telah dirancang dalam penelitian ini dapat melakukan proses minimum spanning tree dengan vertex yang dinamis.

3. Hasil pengujian waktu proses antara algoritma Kruskal dan Algoritma Prim adalah 0.31 detik dan 0.34 detik dengan perbedaan waktu rata-rata 0,03 detik.

4. Kompleksitas dari masing-masing algoritma Prim dan algoritma Kruskal adalah sama yaitu O(n2).

5.2. Saran

Saran yang dapat diberikan penulis untuk mengembangkan dan memperbaiki sistem adalah:

1. Waktu proses algoritma yang lebih efesien dan lebih akurat.

2. Aplikasi yang dirancang dapat dipakai pada wilayah yang lebih luas.

3. Aplikasi yang dirancang memiliki fitur yang sangat sederhana, sehingga diharapkan bisa dikembangkan menjadi lebih kompleks lagi.

DAFTAR PUSTAKA

Abdusakir. 2009. Teori Graf Topik Dasar Untuk Tugas Akhir/Skripsi. Malang: UIN Malang

Afrianto, Irawan., Jamilah, Euis Widiani. Oktober 2012, Penyelesaian Masalah Minimum Spanning Tree (MST) Menggunakan Ant Colony System (ACS), Jurnal Ilmiah Komputer dan Informatika, vol.1(2):35-40.

http://komputa.if.unikom.ac.id/jurnal/penyelesaian-masalah-minimum.p.

(diakses 24 Agustus 2016)

Bentley, Whitten. 2009. System Analysis And Design Method. Avenue of the Americas, NewYork.

Efendi. R. 2003. Penerapan Algoritma Semut Untuk Pemecahan Masalah Spanning Tree Pemasangan Jaringan Kabel Telepon. Skripsi. Universitas Islam Indonesia

Graham, R.L., Hell, Pavol. January 1985, On The History of the Minimum Spanning Tree Problem, Annals of the History of Computing, vol.7(1):43-57.

http://ieeexplore.ieee.org/document/4392963/. (diakses 23 Agustus 2016) Hartati, G. Sri. 2008. Pemrograman GUI Swing Java. Yogyakarta: Penerbit Andi Hartono, Tony. 2007.Algoritma dan Pemrograman. Jakarta: Erlangga

Horowitz, Ellis., Sartaj, Sahni, & Saguthevar, Rajashekaran.(1997). Computer Algorithms. New York: W.H Freeman and Company

Khanam, A., Mathew, M. 2012, Minimum Spanning Tree of Undirected Graphs, International Journal of Engineering Research & Technology (IJERT), vol.1(10):1-4. http://www.ijert.org. (diakses 24 Agustus 2016)

Knuth, Donald E. 1973, The Art of Computer Programming Volume 1, AddisonWesley Company, Inc,

Ladjamudin, Al-Bahra bin. 2005. Analisis dan Desain Sistem Informasi. Graha Ilmu:

Yogyakarta

Levitin, A. 2011. Introduction to the Design and Analysis of Algorithm 3rd Edition.

United States of America. Pearson Education,Inc.

Lipschutz, Seymour. 2008. Matematika Diskrit 1. Jakarta: Erlangga Munir, Rinaldi. 2009. Matematika Diskrit. Bandung: Informatika

Purwanto, E. B. 2008. Perancangan & Analisis Algoritma. Graha Ilmu : Yogyakarta.

Ren, ChuanJun., Yang, Chenghui. July 2010, Simulation Research of Communication Networks Based on Prim Algorithm, Information Technology and Aplication (IFITA), vol.3. http://ieeexplore.ieee.org/document/5634734/. (diakses 23 Agustus 2016)

Retanto, Yudi. 2009. Algoritma Djikstra dan Bellmanford dalam Pencarian Jalur Terpendek. Skripsi. Institut Teknologi Bandung

Riska. 2014. Perbandingan Algoritma Kruskal dengan Algoritma Genetika dalam Penyelesaian Maslah MST. Skripsi. Universitas Bengkulu

Sigit W, Aloysius. 2010. Proyek Aplikasi dengan Java. Jakarta: Elex Media Komputindo

Wu, Ying-Fung., Widmayer, Wong, Schlag. March 1987, Rectilinear Shortest Paths and Minimum Spanning Trees in the Presence of Rectilinear Obstacles, IEEE Transactions on Computers, vol.C-36(3): 321-331.

http://ieeexplore.ieee.org/document/1676904/. (diakses 23 Agustus 2016)

Wilson, R. J., dan Watkhins, J. J. (1990). Graph An Introductionary Approach,A First Course in Discrete Mathematics. John Willey and Sons, New York

Zakiah, Nina., Desniarti., Sofyan, Benny. December 2015, Minimum Spanning Tree Determination Program Using Kruskal Algorithm on Visual Basic 6.0, International Journal of Science and Research (IJSR), vol.4(12): 1817-1821.

https://www.ijsr.net. (diakses 23 Agustus 2016)

A-1

public class FormUtama extends javax.swing.JFrame { private static final long serialVersionUID = 1L;

private DialogAbout dialogAbout;

private DialogInfo dialogInfo;

public FormUtama() {

getRootPane().getActionMap().put("UNDO", new AbstractAction() {

getRootPane().getActionMap().put("REDO", new AbstractAction() {

if (JOptionPane.showConfirmDialog(this, "Anda Yakin Akan Keluar Program ?", "Keluar Program", JOptionPane.OK_CANCEL_OPTION,

} else {

panelTree = new minimum.spanning.tree.PanelTree();

menubar = new javax.swing.JMenuBar();

itemNone = new javax.swing.JRadioButtonMenuItem();

itemAllLine = new javax.swing.JRadioButtonMenuItem();

itemPrim = new javax.swing.JRadioButtonMenuItem();

itemKruskal = new javax.swing.JRadioButtonMenuItem();

itemClear = new javax.swing.JMenuItem();

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowClosing(java.awt.event.WindowEvent evt)

labelJudul.setText("MINIMUM SPANNING TREE");

getContentPane().add(labelJudul);

labelJudul.setBounds(0, 11, 1370, 29);

panelTree.setBackground(new java.awt.Color(0, 0, 0));

panelTree.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 3));

panelTree.setMinimumSize(new java.awt.Dimension(1319, 870));

panelTree.setOpaque(false);

panelTree.setPreferredSize(new java.awt.Dimension(1350, 870));

panelTree.setLayout(null);

jPanel1.add(panelTree);

jScrollPane1.setViewportView(jPanel1);

getContentPane().add(jScrollPane1);

jScrollPane1.setBounds(30, 50, 1310, 660);

menuFile.setMnemonic('F');

A-3

public void actionPerformed(java.awt.event.ActionEvent evt) {

menuUbah.addMenuListener(new javax.swing.event.MenuListener() {

public void menuCanceled(javax.swing.event.MenuEvent evt) {

}

public void menuDeselected(javax.swing.event.MenuEvent evt) {

public void actionPerformed(java.awt.event.ActionEvent evt) {

public void actionPerformed(java.awt.event.ActionEvent evt) {

menuPohon.setMnemonic('P');

menuPohon.setText("MST");

menuTampilkan.setMnemonic('T');

menuTampilkan.setText("Tampilkan");

public void actionPerformed(java.awt.event.ActionEvent evt) {

itemAllLine.setText("Seluruh Kemungkinan");

itemAllLine.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

public void actionPerformed(java.awt.event.ActionEvent evt) {

itemKruskal.setText("Algoritma Kruskal");

itemKruskal.addActionListener(new java.awt.event.ActionListener() {

A-5

public void actionPerformed(java.awt.event.ActionEvent evt) {

public void actionPerformed(java.awt.event.ActionEvent evt) {

public void actionPerformed(java.awt.event.ActionEvent evt) {

if (panelTree.getMinimumSpanningTree().size() < 1) {

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

A-7

private javax.swing.ButtonGroup groupTampilkan;

private javax.swing.JRadioButtonMenuItem itemAllLine;

private javax.swing.JMenuItem itemClear;

private javax.swing.JMenuItem itemData;

private javax.swing.JMenuItem itemExit;

private javax.swing.JRadioButtonMenuItem itemKruskal;

private javax.swing.JRadioButtonMenuItem itemNone;

private javax.swing.JRadioButtonMenuItem itemPrim;

private javax.swing.JMenuItem itemRedo;

private javax.swing.JMenuItem itemUndo;

private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JLabel labelJudul;

}

public class PanelTree extends JPanel { public static final int TREE_NONE = 0;

public static final int TREE_KEMUNGKINAN = 1;

public static final int TREE_PRIM = 2;

public static final int TREE_KRUSKAL = 3;

private int treeType;

private ArrayList<Point> minimumSpanningTree;

private ArrayList<Color> minimumSpanningTreeColor;

private ArrayList<Point> minimumSpanningTreeHistory;

private ArrayList<Color> minimumSpanningTreeColorHistory;

private Random random;

private final Image gambarPanel;

public PanelTree() { super();

gambarPanel = new ImageIcon(getClass().getResource ("/minimum/spanning/tree/usu.jpg")).getImage();

setMinimumSpanningTree(new ArrayList<Point>());

setMinimumSpanningTreeHistory(new ArrayList<Point>());

setMinimumSpanningTreeColor(new ArrayList<Color>());

setMinimumSpanningTreeColorHistory(new ArrayList<Color>());

setRandom(new Random());

protected ArrayList<Color> getMinimumSpanningTreeColorHistory() { return minimumSpanningTreeColorHistory;

}

protected void

setMinimumSpanningTreeColorHistory(ArrayList<Color>

minimumSpanningTreeColorHistory) {

this.minimumSpanningTreeColorHistory = minimumSpanningTreeColorHistory;

}

protected ArrayList<Point> getMinimumSpanningTreeHistory() { return minimumSpanningTreeHistory;

}

protected void setMinimumSpanningTreeHistory(ArrayList<Point>

minimumSpanningTreeHistory) {

this.minimumSpanningTreeHistory = minimumSpanningTreeHistory;

}

public boolean canUndo() {

return getMinimumSpanningTree().size() > 0;

}

public boolean canRedo() {

return getMinimumSpanningTreeHistory().size() > 0;

}

public void undo() { Point p =

getMinimumSpanningTree().remove(getMinimumSpanningTree().size() - 1);

getMinimumSpanningTreeHistory().add(p);

repaint();

A-9

protected void doMouseClick(MouseEvent e) { getMinimumSpanningTree().add(e.getPoint());

getMinimumSpanningTreeColor().add(new

Color(getRandom().nextInt(255), getRandom().nextInt(255),

protected void paintComponent(Graphics g) { super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g.create();

g2d.drawImage(gambarPanel, 0, 0,getWidth(),getHeight(),null);

g2d.dispose();

Graphics2D g2 = (Graphics2D) g.create();

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

public static void removeDuplicate(ArrayList<Sisi> array) {

int index = 0;

public ArrayList<Point> getMinimumSpanningTree() { return minimumSpanningTree;

}

public void setMinimumSpanningTree(ArrayList<Point>

minimumSpanningTree) {

this.minimumSpanningTree = minimumSpanningTree;

}

public Random getRandom() { return random;

}

public void setRandom(Random random) { this.random = random;

}

public ArrayList<Color> getMinimumSpanningTreeColor() { return minimumSpanningTreeColor;

}

public void setMinimumSpanningTreeColor(ArrayList<Color>

minimumSpanningTreeColor) {

this.minimumSpanningTreeColor = minimumSpanningTreeColor;

}

public static int getDistance(Point p1, Point p2) { int hasil;

double result = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));

return (int) result;

}

if (temp.contains(s.getFrom()) && temp.contains(s.getTo())) {

A-11

curcular = true;

}

return curcular;

}

public static boolean isBeside(ArrayList<Sisi> result, Sisi s) { for (int i = 0; i < result.size(); i++) {

if (result.get(i).getFrom() == s.getFrom() ||

result.get(i).getFrom() == s.getTo() || result.get(i).getTo() ==

s.getFrom() || result.get(i).getTo() == s.getTo()) { return true;

} }

return false;

} } }

DAFTAR RIWAYAT HIDUP

Address : Jalan Sei Padang No.138m, Kecamatan Medan Selayang,

Programming: IDE Software

Basic, C, Java Visual Basic, Borland , NetBeans Database:

MySQL

COMPUTER SKILL

Dokumen terkait