Laporan Dijktra

Embed Size (px)

DESCRIPTION

djikstra

Citation preview

  • OLEH : MIRRA ARIESTA AMALIA ADIBA

    2 D3 TEKNIK INFORMATIKA B | 2103131055

    TEORI KONSEP JARINGAN -

    ALGORITMA DIJKSTRA

  • Mirra Ariesta Amalia Adiba | 2 D3 Teknik Informatika B | 2103131055 Page 1

    DAFTAR ISI

    DAFTAR ISI ............................................................................................................................................... 1

    ALGORITMA DIJKSTRA............................................................................................................................. 2

    Penjelasan ........................................................................................................................................... 2

    Pseudocode ......................................................................................................................................... 3

    Source program................................................................................................................................... 4

    Output program .................................................................................................................................. 6

    Analisa program .................................................................................................................................. 7

  • Mirra Ariesta Amalia Adiba | 2 D3 Teknik Informatika B | 2103131055 Page 2

    ALGORITMA DIJKSTRA

    Penjelasan

    Algoritma dijkstra ditemukan oleh seorag ilmuwan computer berkebangsaan

    Belanda, bernama Edsger Dijkstra. Algoritma dijkstra ini adalah algoritma yang digunakan

    untuk mencari lintasan terpendek pada sebuah graf berarah maupun tidak. Algoritma

    Dijkstra merupakan salah satu varian dari algoritma greedy, yaitu salah satu bentuk

    algoritma populer dalam pemecahan persoalan yang terkait dengan masalah optimasi,

    algoritma greedy ini hanya memikirkan solusi terbaik yang akan diambil pada setiap

    langkah tanpa memikirkan konsekuensi ke depan. Prinsipnya, ambillah apa yang bisa Anda

    dapatkan saat ini (take what you can get now!), dan keputusan yang telah diambil pada

    setiap langkah tidak akan bisa diubah kembali. Intinya algoritma greedy ini berupaya

    membuat pilihan nilai optimum lokal pada setiap langkah dan berharap agar nilai

    optimum lokal ini mengarah kepada nilai optimum global.

    Cara kerja Algoritma dijkstra memakai strategi greedy, dimana pada setiap langkah

    di pilih sisi dengan bobot terkecil yang menghubungkan sebuah simpul yang sudah terpilih

    dengan simpul yang sudah terpilih dengan simpul lain yang belum terpilih. Algoritma

    Dijkstra membutuhkan parameter tempat asal dan tempat tujuan. Hasil akhir dari

    algoritma ini adalah jarak terpendek dari tempat asal ke tempat ujuan beserta rutenya.

  • Mirra Ariesta Amalia Adiba | 2 D3 Teknik Informatika B | 2103131055 Page 3

    Pseudocode

    - Masukkan banyakRouter (number_of_vertices)

    - Masukkan jarak pada masing-masing router dalam matriks atau jarakMatriks[][]

    (adjacency_matrix[][])

    - Untuk i dan j =1 hingga n (banyakRouter)

    Jika i dan j sama maka jarakMatriks[i][j] = 0, continue;

    Jika jarakMatriks = 0 maka jarak Matriks=Integer.maxValue;

    - for (int i = 1; i

  • Mirra Ariesta Amalia Adiba | 2 D3 Teknik Informatika B | 2103131055 Page 4

    Source program

    1. import java.util.*;

    2.

    3. public class Main {

    4.

    5. private int distances[];

    6. private Set settled;

    7. private Set unsettled;

    8. private int number_of_nodes;

    9. private int adjacencyMatrix[][];

    10.

    11. public Main(int number_of_nodes) {

    12. this.number_of_nodes = number_of_nodes;

    13. distances = new int[number_of_nodes + 1];

    14. settled = new HashSet();

    15. unsettled = new HashSet();

    16. adjacencyMatrix = new int[number_of_nodes + 1][number_of_nodes + 1];

    17. }

    18.

    19. public void dijkstra_algorithm(int adjacency_matrix[][], int source) {

    20. int evaluationNode;

    21. for (int i = 1; i

  • Mirra Ariesta Amalia Adiba | 2 D3 Teknik Informatika B | 2103131055 Page 5

    55. }

    56. return node;

    57. }

    58.

    59. private void evaluateNeighbours(int evaluationNode) {

    60. int edgeDistance = -1;

    61. int newDistance = -1;

    62.

    63. for (int destinationNode = 1; destinationNode

  • Mirra Ariesta Amalia Adiba | 2 D3 Teknik Informatika B | 2103131055 Page 6

    108. for (int i = 1; i

  • Mirra Ariesta Amalia Adiba | 2 D3 Teknik Informatika B | 2103131055 Page 7

    Analisa program

    Pada program Algoritma Dijkstra diatas, hal pertama kali yang harus kita lakukan

    adalah menginputkan matriks jarak antar router setelah kita inputkan semua, proses

    selanjutnya adalah mencari jarak router satu dengan yang lain pencarian jarak dilakukan

    dengan cara : pertama dilakukan looping sebanyak router. pada setiap looping dilakukan

    pemanggilan method dijkstra_algorithm dengan paramter pertama berupa matriks jarak

    router dan parameter kedua merupakan router tujuan yg akan dicari jarak terdekatnya

    setelah jarak di temukan, maka hasilnya langsung di tampilkan.

    Di dalam method dijkstra_algorihm terjadi proses : pertama matriks yg berisi jarak-

    jarak antar router tadi isinya di masukkan ke dalam matriks yg lain agar nilai tidak berubah.

    selanjutnya isi distance dengan Integer.MAX_VALUE sebagai pengganti infinity. Masukkan

    target ke dalam unsettled sebagai flag bahwa target belum di kunjungi.

    lakukan looping selama unsettled tidak kosong. di dalam looping, terjadi pencarian jarak

    terdekat dengan titik yg berada di dalam unsettled. setelah mendapatkan titip tedekat,

    remove titik di unsettled yg telah yg ditemukan. masukkan titik tersebut ke dalam settled,

    kemudian lakukan pencarian node node yg terhubung dengan titik terdekat yang di

    temukan. ulangi jika memang unsettled belum kosong. jika sudah kosong, maka pencarian

    selesai.