• Tidak ada hasil yang ditemukan

Algoritma Johnson adalah dapat digunakan untuk graf yang berbobot negatif dan untuk menyelesaikan masalah lintasan terpendek di setiap titik ke semua titik lain. Langkah awal penyelesaian (Noviandi, E. 2012).

Algoritma Johnson adalah mengonstruksi graf yang baru dengan menambahkan graf baru pada graf dan memberi bobot sisi yang keluar dari titik baru tersebut dengan 0. Langkah selanjutnya adalah mencari lintasan terpendek dari titik baru ke semua titik lain.

Lintasan Terpendek tersebut digunakan untuk mengubah bobot semua sisi pada graf baru agar bobot semula bernilai positif. Setelah itu dicari lintasan terpendek dari tiap titik ke semua titik lain dengan mengubah hasilnya dengan menggunakan hasil dari perhitungan berupa matriks. Dari matriks ini dapat diketahui panjang lintasan terpendek dari titik ke semua titik lain.

Langkah Algoritma Johnson adalah sebagai berikut

1. Mengostruksi graf baru G, dengan cara menambahkan titik baru sehingga

V’ = V + {s} dan E + {(s,v)v di V} 2. Setiap titik v di V

0 → w (s, v)

∞ → w (v, s)

3. Menjalankan Algoritma Bellman-Ford pada graf baru a. jika terdapat bobot negatif maka selesai

b. jika tidak terdapat bobot negatif maka hitung d(s, v) , v ∈ V 4. Setiap (u, v) di E

W(u, v) = w(u, v) + d (s, v) – d(s, v)

5. Setiap v di V, dijalankan Algoritma Djikstra untuk menghitung d(u, v) 6. D’ = d(u, v)

7. Setiap (u, v) di V ; d(u, v) = d(u, v) + d(sv) – d(s, u) 8. D = d(u, v)

Keterangan

w(s,v) = bobot sisi dari s ke v.

d(s,v) = panjang lintasan terpendek dari s ke v. w(u,v) = bobot sisi baru dari u ke v.

d(u,v) = panjang lintasan terpendek dari u ke v dan yang dihutung adalah bobot sisi baru (w).

d(u,v) = panjang lintasan terpendek dari u ke v.

D’ = matriks hasil perhitungan lintasan terpendek dari tiap-tiap pasangan titik dan bobot sisi yang digunakan adalah w.

Dalam Algoritma Johnson terdapat dua Algoritma untuk penyelesainnya, yaitu Algoritma Bellman-Ford dan Algoritma Djikstra.

2.5.1. Algoritma Bellman-Ford

Algoritma Bellman-Ford menghitung jarak terpendek (dari satu sumber) pada sebuah graf berbobot. Maksudnya dari satu sumber ialah bahwa ia menghitung semua jarak terpendek yang berawal dari satu vertex. Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada (edge) yang berbobot negatif, maka Algoritma Bellman-Ford hanya digunakan jika ada sisi berbobot negatif.

2.5.2. Algoritma Dijkstra

Algoritma Dijkstra ditemukan oleh Edsger W. Dijkstra yang merupakan salah satu varian bentuk algoritma populer dalam pemecahan persoalan yang terkait dengan masalah optimasi dan bersifat sederhana. Algoritma ini menyelesaikan masalah untuk mencari lintasan terpendek ( sebuah lintasan yang mempunyai panjang minimum) dari vertex a ke

vertex z dalam graf berbobot, bobot tersebut adalah bilangan positif jadi tidak dapat dilalui oleh vertex negatif.

Dalam mencari solusi, Algoritma Dijkstra menggunakan prinsip greedy, yaitu mencari solusi optimum pada setiap langkah yang dilalui dengan tujuan untuk mendapatkan solusi optimum pada langkah selanjutnya yang akan mengarah pada solusi terbaik.

Algoritma ini mencari panjang lintasan terpendek dari vertex a ke z dalam sebuah graf berbobot. Langkah-langkah dalam menentukan lintasan terpendek pada Algoritma

Dijkstra yaitu:

1. Pada awalnya pilih vertex dengan bobot yang terendah dari vertex yang belum dipilih, diinisialisasikan dengan ‘0’ dan yang sudah terpilih diinisialisasikan dengan ‘1’.

2. Bentuk tabel yang terdiri dari vertex, status, bobot. Lengkapi kolom bobot yang diperoleh dari jarak vertex sumber ke semua vertex yang langsung terhubung dengan

vertex sumber tersebut.

3. Jika vertex sumber ditemukan maka tetapkan sebagai vertex terpilih.

4. Tetapkan vertex terpilih dengan label permanen dan perbaharui vertex yang langsung terhubung.

5. Tentukan vertex sementara yang terhubung pada vertex yang sudah terpilih sebelumnya dan merupakan bobot terkecil dilihat dari tabel dan tentukan sebagai

vertex terpilih berikutnya.

6. Apakah vertex yang terpilih merupakan vertex tujuan? Jika ya, maka kumpulan vertex

terpilih merupakan rangkaian yang menunjukkan lintasan terpendek. 7. Begitu seterusnya hingga semua vertex terpilih.

2.6. JAVA

Java adalah bahasa pemrograman yang bersifat open source yang dikembangkan oleh Sun Microsistems sejak tahun 1991 (Hakim,R. & Ir.Sutarno, M.Si. 2009). Bahasa ini dikembangkan dengan model yang mirip dengan bahasa C++ dan Smalltalk, namun dirancang agar lebih mudah dipakai dan platform independent, yaitu dapat dijalankan di berbagai jenis sistem operasi dan arsitektur komputer.

Java sendiri merupakan bahasa pemrograman yang berbasis objek, maksudnya adalah semua aspek yang terdapat pada Java adalah objek, sehingga memudahkan untuk mendesain, membuat dan mengembangkan program Java dengan cepat. Kelebihan ini membuat program Java menjadi mudah untuk digunakan oleh banyak orang.

Pada Tahun 1996, Sun Microsistems secara resmi merilis versi awal Java yang kemudian terus berkembang hingga muncul JDK 1.1 (Java Development Kit versi 1.1). Perkembangan terus dilakukan hingga muncul versi baru yang disebut Java 2. Perubahan utama antara versi sebelumnya adalah adanya Swing yang merupakan teknologi Graphical User Interface (GUI) yang mampu menghasilkan aplikasi desktop yang benar-benar baik.

Dalam penelitian ini penulis menggunakan Java versi The Java 2 Platform, Standart Edition (J2SE) yang merupakan Teknologi Java edisi standar, yang digunakan untuk penerapan Teknologi Java pada komputer desktop. Versi ini menyediakan lingkungan pengembangan yang kaya fitur, stabil, aman dan mendukung konektivitas basis data, rancangan antarmuka pemakai, masukan/keluaran, dan pemrograman jaringan.

2.7. UML (Unified Modeling Language)

Unified Modeling Language (UML) tidak mendefinisiskan proses standar tetapi

S & R.S. Wahyono. 2003). Hal ini dimaksudkan untuk mendukung proses perkembangan dengan Object Oriented. UML menyimpan informasi tentang struktur statis dan perilaku dinamis suatu sistem. Perilaku Dinamis mendefinisikan sejarah objek dari waktu ke waktu dan komunikasi antara objek-objek untuk mencapai tujuan.

UML terdiri atas pengelompokan diagram-diagram sistem menurut aspek atau sudut pandang tertentu. Diagram adalah yang menggambarkan permasalahan maupun solusi dari permasalahan suatu model. UML mempunyai 13 diagram, diantaranya Use Case Diagram, Class Diagram, Package Diagram, Object Diagram, Sequence Diagram, Collaboration Diagram, StatiChart Diagram, Activity Diagram, Deployment Diagram, Component Diagram, Composite Structure Diagram, Interaction Overview Diagram, Timing Diagram. Tetapi yang sering digunakan adalah Use Case Diagram, Activity Diagram, Sequence Diagram, dan Class Diagram.

2.7.1. Use Case Diagram (Diagram Pengguna Keadaan)

Use Case Diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Dalam pembuatan Use Case Diagram, yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah Use Case mempresentasikan sebuah interaksi antara aktor dengan sistem.

Berikut beberapa simbol yang digunakan pada Use Case Diagram di antaranya terdapat pada Tabel 2.1.

Tabel 2.1 Simbol Pada Use Case Diagram

Simbol Nama Simbol Kegunaan

Aktor

Sebagai subjek yang

berinteraksi atau menggunakan sistem

Use Case UseCase

Sebagai kegiatan yang dapat dilakukan oleh pengguna pada sistem

Asosiasi

Sebagai penghubung antara aktor dan Use Case yang dilakukan

<< include >>

Include

Sebagai penghubung antara

Use Case yang

membutuhkan Use Case

yang lain

Sistem

Sistem Sebagai cakupan Wilayah Sistem

2.7.2. Activity Diagram (Diagram Aktivitas)

Activity Diagram menggambarkan berbagai alur aktivitas dalam sistem yang sedang

dirancang, bagaimana masing-masing alur berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Sebuah aktivitas dapat direalisasikan oleh satu Use Case atau lebih. Aktivitas menggambarkan proses yang berjalan, sementara Use Case

menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas.

Berikut ini beberapa simbol yang digunakan pada Activity diagram dapat dilihat pada Tabel 2.2.

Tabel 2.2 Simbol pada Activity Diagram

Simbol Nama Simbol Kegunaan

Inisial node Awal aktivitas

Final Node Akhir Aktivitas

Action

Action Sebagai aktivitas yang

dilakukan oleh sistem

Control Flow Sebagai penghubung urutan

aktivitas

Decision Merupakan aktivitas

pengecekan kondisi

Exception handler Menunjukkan kondisi pengecualian apabila suatu action tidak dapat dilakukan

2.7.3. Class Diagram (Diagram Kelas)

Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class

menggambarkan keadaan (atribut/property) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metode/fungsi).

Class Digram menggambarkan struktur dan deskripsi class, package, dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.

Berikut ini beberapa simbol yang digunakan pesa Class Diagram. Dapat dilihat pada Tabel 2.3.

Tabel 2.3 Simbol Pada Class Diagram

Simbol Nama Simbol Kegunaan

Class

Class

Sebagai kelas yang digunakan pada sistem

Generalization Menunjukkan hubungan

inheritance antar kelas

<<use>> Usage

Menunjukkan hubungan penggunaan suatu kelas dengan kelas yang lain

2.7.4. Sequence Diagram (Diagram Rangkaian)

Sequence Diagram menggambarkan interaksi antar-objek di dalam dan sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence Diagram terdiri atas dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Sequence Diagram biasa digunakan untuk mengambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai tanggapan dari sebuah

event untukmenghasilkan output tertentu.

Berikut ini beberapa simbol yang digunakan pada Sequence Diagram dapat dilihat pada Tabel 2.4.

Tabel 2.4 Tabel simbol pada Sequence Diagram

Simbol Nama Simbol Kegunaan

Actor

Sebagai subjek yang menggunakan sistem

Lifeline

Life line

Bagian dari sistem yang melakukan aktivitas pemrosesan data

Message Alur data yang diproses

oleh sistem

2.8. Flowchart

Flowchart adalah suatu diagram alur (flow) yang menunjukan (flow) di dalam program atau prosedur sistem secara logika (Suarga, 2012). Pada diagram alur, dapat dilihat secara jelas arus pengendalian algoritma, yakni bagaimana rangkaian pelaksanaan kegiatan program tersebut. Suatu diagram alur akan memberi gambaran dua dimensi berupa

simbol-simbol yang masing-masing simbol-simbol tersebut telah ditetapkan lebih dahulu fungsi dan atrinya.

Dua di antara beberapa Flowchart yang menggambarkan proses dengan komputer, yaitu :

1. Sistem Flowchart

Diagram Alur Sistem (Sistem Flowchart) merupakan bagan yang menunjukkan arus pekerjaan secara keseluruhan dari sistem. Bagan ini menjelaskan urutan dari prosedur-prosedur yang ada di dalam sistem.

2. Program Flowchart

Diagram Alur Program (Program Flowchart) merupakan bagan yang menjelaskan secara rinci langkah-langkah dari proses program.

Pada Tebel 2.5 menunjukkan seperangkat simbol diagram alur beserta fungsi dan manfaat yang digunakan dalam pembuatan langkah algoritma pemrograman.

Tabel 2.5. Simbol-Simbol Flowchart

No Simbol Flowchart Keterangan Simbol

1 Start Komponen yang berfungsi untuk mengawali dan

mengakhiri suatu proses

2 Data/Hasil Komponen yang mewakili input dan output

3 Sub Proses Komponen yang menyatakan

subproses/subprogram

4 Proses Komponen yang menyatakan setiap hasil dari

pengolahan proses.

5 Looping Komponen yang berfunsi untuk menyatakan

Dokumen terkait