Anda di halaman 1dari 20

Teori Graph

Algoritma Graph
Algoritma Kruskal
• Algoritma Kruskal adalah sebuah algoritma dalam teori graf yang
mencari sebuah minimum spanning tree untuk sebuah graf berbobot
yang terhubung.
• Algoritma ini pertama kali muncul pada tahun 1956 dalam sebuah
tulisan yang ditulis oleh Joseph Kruskal.
• Dasar pembentukan algoritma kruskal berasal dari analogi growing
forest.
• Growing forest adalah untuk membentuk pohon merentang minimum T
dari grapf G dengan cara mengambil satu persatu sisi dari graph G dan
memasukkannya ke dalam pohon yang telah terbentuk sebelumnya.
Algoritma Kruskal
• Kelebihan algoritma kruskal adalah sangat cocok digunakan saat graph
memiliki sisi berjumlah sedikit namun memiliki sangat banyak simpul,
karena orientasi kerja algoritma ini adalah berdasarkan pada urutan
bobot sisi, tidak berdasarkan simpul.
• Kekurangan algoritma kruskal adalah algoritma ini kurang cocok
digunakan saat graph lengkap atau mendekati lengkap, dimana setiap
simpul terhubungkan dengan semua simpul yang lain. Karena algoritma
ini menitik beratkan pada pencarian sisi, dimana sisi-sisi tersebut harus
diurutkan dan ini memakan waktu yang tidak sedikit.
Langkah – Langkah Algoritma Kruskal
• Pada algoritma kruskal, sisi (edge) dari Graph diurut terlebih dahulu berdasarkan bobotnya
dari kecil ke besar.
• Sisi yang dimasukkan ke dalam himpunan T adalah sisi graph G yang sedemikian sehingga T
adalah Tree (pohon). Sisi dari Graph G ditambahkan ke T jika ia tidak
membentuk cycle.

1. T masih kosong
2. pilih sisi (i,j) dengan bobot minimum
3. pilih sisi (i,j) dengan bobot minimum berikutnya yang tidak membentuk cycle di T,
tambahkan (i,j) ke T
4. Ulangi langkah 3 sebanyak (n-2) kali.
5. Total langkah (n-1) kali
Contoh 1 Algoritma Kruskal

• Perhatikan gambar graph dan table diatas


• Graph diatas terdiri dari 6 edge
• Sisi (e,c) menjadi bobot minimum pertama (Langkah ke-2)
• Selanjutnya sisi (a,b) menjadi bobot minimum berikutnya dengan tidak membuat cycle pada T (Langkah ke-3)
• (n-2), 6-2 = 4, Jumlah sisi bobot minimum setelah sisi (e,c) adalah 4 (Langkah ke-4)
• (n-1), 6-1 = 5, Total langkah algoritma kruskal pada graph diatas adalah 5 (Langkah ke-5)
• Untuk penjabarannya bisa dilihat pada slide berikutnya.
Contoh 1 Algoritma Kruskal
Contoh 2 Algoritma Kruskal

Note : “Diskusikan di forum :Berikan penjelasan dari graph diatas seperti pada slide 5.”
Contoh 2 Algoritma Kruskal
Contoh 2 Algoritma Kruskal
Contoh 2 Algoritma Kruskal
Algoritma Djiktra
• Algortima djiktra ini ditemukan oleh Edsger W. Dikstra dan di
publikasi pada tahun 1959 pada sebuah jurnal Numerische
Mathematik yang berjudul “A Note on Two Problems in
Connexion with Graphs“.
• Algoritma djikstra adalah sebuah algoritma yang dipakai dalam
memecahkan permasalahan jarak terpendek (shortest path
problem) untuk sebuah graf berarah (directed graph).
Algoritma Djiktra
• Permasalahan rute terpendek dari sebuah titik ke akhir titik
lain adalah sebuah masalah klasik optimasi yang banyak
digunakan untuk menguji sebuah algoritma yang diusulkan.
• Permasalahan rute terpendek dianggap cukup baik untuk
mewakili masalah optimisasi, karena permasalahannya mudah
dimengerti (hanya menjumlahkan seluruh edge yang dilalui)
namun memiliki banyak pilihan solusi.
Algoritma Djiktra
• Ide dari algoritma ini sangat sederhana. Algoritma Dijkstra
memilih titik (sumber) dan menetapkan kemungkinan biaya
optimum (yaitu tak terhingga) ke setiap titik lainnya.
• Langkah berikutnya akan mencoba untuk meminimalkan biaya
untuk setiap titik. Biaya yang dimaksud disini adalah jarak atau
waktu yang diambil untuk mencapai titik tujuan dari titik
sumber.
Langkah – Langkah Algoritma Djiktra
• Diskripsi matematis untuk grafik dapat diwakili G = {V. E}, yang
berarti sebuah grafik (G) didefenisikan oleh satu set simpul
(Vertex = V) dan koleksi Edge (E).
• Algoritma Dijkstra bekerja dengan membuat jalur ke satu
simpul optimal pada setiap langkah. Jadi pada langkah ke n,
setidaknya ada n node yang sudah kita tahu jalur terpendek.
Langkah-langkah algoritma Dijkstra dapat dilakukan
dengan langkah-langkah berikut:
Langkah – Langkah Algoritma Djiktra
1. Tentukan titik mana yang akan menjadi node awal, lalu beri bobot jarak pada node
pertama ke node terdekat satu per satu, Dijkstra akan melakukan pengembangan
pencarian dari satu titik ke titik lain dan ke titik selanjutnya tahap demi tahap.
2. Beri nilai bobot (jarak) untuk setiap titik ke titik lainnya, lalu set nilai 0 pada node awal dan
nilai tak hingga terhadap node lain (belum terisi) 2.
3. Set semua node yang belum dilalui dan set node awal sebagai “Node keberangkatan”
4. Dari node keberangkatan, pertimbangkan node tetangga yang belum dilalui dan hitung
jaraknya dari titik keberangkatan. Jika jarak ini lebih kecil dari jarak sebelumnya (yang telah
terekam sebelumnya) hapus data lama, simpan ulang data jarak dengan jarak yang baru
5. Saat kita selesai mempertimbangkan setiap jarak terhadap node tetangga, tandai node
yang telah dilalui sebagai “Node dilewati”. Node yang dilewati tidak akan pernah di cek
kembali, jarak yang disimpan adalah jarak terakhir dan yang paling minimal bobotnya.
6. Set “Node belum dilewati” dengan jarak terkecil (dari node keberangkatan) sebagai “Node
Keberangkatan” selanjutnya dan ulangi langkah 3.
Contoh Algoritma Djiktra
Hitunglah Jarak terdekat dari V1 ke V7 pada gambar graph berikut ini :

Hasil setiap stepnya dapat dilihat pada tabel berikut ini.

Note : “Untuk penjelasan lebih detail, silahkan buka link


referensi. Bila masih ada pertanyaan silahkan diskusikan
diforum.”
Contoh Penerapan Algoritma Djiktra Pada Jaringan Komputer
Selesai…
Latihan 1

• Gunakan Algoritma Kruskal untuk


menentukan pohon rentang dengan
bobot minimum dari graph disamping.
Latihan 2

• Hitunglah jarak terdekat dari


Boston (5) ke Los Angles (1),
dari graph disamping.

Anda mungkin juga menyukai