• Tidak ada hasil yang ditemukan

PRESENTASI TUGAS AKHIR KI IMPLEMENTASI ALGORITMA PENCARIAN K JALUR SEDERHANA TERPENDEK DALAM GRAF

N/A
N/A
Protected

Academic year: 2021

Membagikan "PRESENTASI TUGAS AKHIR KI IMPLEMENTASI ALGORITMA PENCARIAN K JALUR SEDERHANA TERPENDEK DALAM GRAF"

Copied!
51
0
0

Teks penuh

(1)

IMPLEMENTASI ALGORITMA PENCARIAN

K

JALUR SEDERHANA TERPENDEK

DALAM GRAF

(Kata kunci:

Algoritma deviasi, algoritma Dijkstra, jalur sederhana, jalur terpendek)

PRESENTASI TUGAS AKHIR – KI091391

Penyusun Tugas Akhir :

Anggakara Hendra Nandana

(NRP: 5108.100.075)

Dosen Pembimbing

:

Yudhi Purwananto, S.Kom., M.Kom.

Rully Soelaiman, S.Kom., M.Kom.

(2)
(3)

ILUSTRASI PERMASALAHAN

3 10 Juli 2013 Tugas Akhir - KI091391

Problem dari situs Sphere Online Judge (SPOJ) berjudul “

Kth Shortest Path

(4)

DESKRIPSI SOAL SPOJ “Kth Shortest Path”

1. Seseorang bernama Isaac merasa bosan karena setiap hari melalui jalur yang sama untuk melakukan perjalanan dari rumah menuju kantor.

2. Jalur yang diambil Isaac selalu merupakan jalur terpendek, yaitu jalur dengan biaya terkecil, dan selalu merupakan jalur sederhana.

3. Biaya pada sebuah jalur merupakan total waktu yang dibutuhkan untuk melewati jalan-jalan yang menghubungkan dua buah tempat yang menyusun jalur tersebut. 4. Waktu yang dibutuhkan untuk melewati sebuah jalan bisa bernilai sama atau berbeda

dengan jalan-jalan yang lain.

5. Pada hari-hari berikutnya, Isaac ingin melewati jalur terpendek yang belum pernah dilewatinya.

(5)

BATASAN SOAL SPOJ “Kth Shortest Path”

5 10 Juli 2013 Tugas Akhir - KI091391

1. Jumlah verteks maksimum 50 buah, jumlah

edge

maksimum 2450 buah, dan banyak jalur yang dicari (

k

) maksimum 200 buah.

2. Jalur yang dicari harus merupakan jalur sederhana, yaitu jalur yang tidak memiliki pengulangan verteks penyusun.

(6)

FORMAT DATA MASUKAN

• Data masukan merupakan sebuah berkas teks yang hanya berisi bilangan bulat • Masing-masing bilangan bulat merepresentasikan detail graf dengan format seperti

pada Gambar 1

n m k a b

x

1

y

1

z

1

x

2

y

2

z

2

x

m

y

m

z

m

jumlah verteks jumlah edge jumlah jalur

yang dicari verteks sumber jalur verteks tujuan jalur

(7)

FORMAT DATA MASUKAN

7 10 Juli 2013 Tugas Akhir - KI091391

n m k a b

x

1

y

1

z

1

x

2

y

2

z

2

x

m

y

m

z

m

verteks sumber

verteks tujuan

bobot

edge

• Data masukan merupakan sebuah berkas teks yang hanya berisi bilangan bulat • Masing-masing bilangan bulat merepresentasikan detail graf dengan format seperti

pada Gambar 1

(8)

CONTOH DATA MASUKAN

4 6 2 1 4

2 3 1

1 3 2

1 2 1

1 4 3

2 4 2

3 4 1

1

2

4

3

1

2

1

3

2

1

1

4

(9)

FORMAT DATA KELUARAN

9 10 Juli 2013 Tugas Akhir - KI091391

• Data keluaran merupakan sebuah berkas teks yang hanya berisi bilangan bulat.

• Masing-masing bilangan bulat merepresentasikan verteks-verteks penyusun jalur yang ditemukan

• Urutan penulisan verteks-verteks penyusun jalur dimulai dari verteks sumber hingga verteks tujuan.

• Pada tiap dua buah verteks dipisahkan sebuah tanda hubung (-).

a-v

2

-…-v

l-1

-b

(10)

CONTOH DATA KELUARAN

1-2-4

4 6 2 1 4

2 3 1

1 3 2

1 2 1

1 4 3

2 4 2

3 4 1

Data Masukan

2 3 1 2 1 3 2 1 1 4

(11)

10 Juli 2013 Tugas Akhir - KI091391 11

ALGORITMA NAIF (1)

2 3 1 2 1 3 2 1 1 4

• Daftar kemungkinan jalur dari vertex 1 ke vertex 4: 1 : 1-2-3-4, bobot = 3

2 : 1-2-4, bobot = 3 3 : 1-3-4, bobot = 3 4 : 1-4, bobot = 3

• Pada

k

jalur terpendek pertama, masing-masing verteks dapat menjadi verteks penyusun jalur sebanyak

maksimal

k

kali.

• Vertex sumber dan verteks tujuan jalur selalu muncul pada setiap

k

jalur terpendek.

• Pencarian jalur dapat dilakukan dengan mencari seluruh kemungkinan jalur yang menuju verteks tujuan, hingga ditemukan jalur yang berasal dari verteks sumber

(12)

ALGORITMA NAIF (2)

2 3 1 2 1 3 2 1 1 4

(13)

10 Juli 2013 Tugas Akhir - KI091391 13

HASIL ALGORITMA NAIF

Kesimpulan:

Algoritma naif kurang efisien untuk menyelesaikan permasalahan pencarian

k

jalur sederhana terpendek.

(14)

LATAR BELAKANG

1. Problem berjudul “

Kth Shortest Path

” pada situs SPOJ merupakan contoh

permasalahan yang dapat ditemukan dalam kehidupan sehari-hari, sehingga

dibutuhkan sebuah algoritma untuk menyelesaikan permasalahan tersebut.

2. Algoritma naif kurang efisien dalam hal kecepatan dan memori yang

(15)

BATASAN MASALAH

15 10 Juli 2013 Tugas Akhir - KI091391

1. Pustaka yang digunakan untuk membantu pengimplementasian algoritma

merupakan C++ Standard Template Library (STL). Pustaka-pustaka tersebut

antara lain: cstdio, iostream, algorithm, cstring, vector, queue, dan ctime.

2. Kebutuhan memori hasil implementasi mengacu pada hasil keluaran dari

(16)

TUJUAN MASALAH

1. Untuk melakukan studi dan mengimplementasi algoritma pencarian

k

jalur

sederhana terpendek dalam graf yang lebih optimal dibandingkan dengan

algoritma naif dengan bantuan pustaka dari C++ Standard Template Library

.

2. Untuk menguji kebenaran hasil implementasi algoritma pencarian

k

jalur

sederhana terpendek dalam graf.

(17)

10 Juli 2013 Tugas Akhir - KI091391 17

KERANGKA PRESENTASI

Pendahuluan

Rangkaian Proses

Uji Coba

Kesimpulan

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

Pengecekan jumlah jalur dan isi himpunan kandidat

(18)

RANGKAIAN PROSES: LANGKAH 1

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

1 • Jalur terpendek pertama digunakan sebagai acuan untuk menentukan kandidat-kandidat jalur terpendek

berikutnya.

(19)

10 Juli 2013 Tugas Akhir - KI091391 19

RANGKAIAN PROSES: LANGKAH 1

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

Pengecekan jumlah jalur dan isi himpunan kandidat

jalur

1 • Jalur terpendek dari verteks 1 menuju verteks 4 pada Gambar 2 adalah jalur 1-2-3-4

• Jalur terpendek yang didapat kemudian ditambahkan ke himpunan kandidat jalur

X

(20)

ALGORITMA DEVIASI

• Jalur-jalur terpendek yang didapat dari sebuah graf dapat membentuk pohon jalur terpendek seperti pada Gambar 3

• Sebuah jalur

p

k selalu memiliki rangkaian vertex yang sama dengan jalur

p

1, …,

p

k-1 dari verteks sumber sampai verteks tertentu.

• Verteks tersebut merupakan letak jalur

p

k menyimpang dari himpunan jalur {

p

1, …,

p

k-1} dan disebut verteks deviasi. Verteks deviasi pada jalur

p

dinotasikan sebagai

d

(

p

)

(21)

10 Juli 2013 Tugas Akhir - KI091391 21

RANGKAIAN PROSES: LANGKAH 2

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

Pengecekan jumlah jalur dan isi himpunan kandidat

jalur

2

• Himpunan kandidat jalur

X

berisi kandidat-kandidat jalur terpendek

• Jalur yang diambil adalah jalur dengan bobot minimum dari semua anggota

X

, dan dinotasikan sebagai jalur

p.

• Panjang jalur

p

dinotasikan sebagai

l

, dan urutan verteks penyusunnya dinotasikan sebagai

v

1,

v

2, …,

v

l.

• Banyaknya jalur yang telah diambil dari

X

menunjukkan banyaknya jalur yang telah ditemukan

2

1

1 1

4

Contoh jalur terpendek dari

X

(bobot = 3)

v

1

v

2

v

l /

v

4

3

v

3

(22)

RANGKAIAN PROSES: LANGKAH 2

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

2

• Agar proses pemilihan jalur terpendek dapat lebih efisien, maka diperlukan struktur data yang tepat. • Pada program, implementasi himpunan kandidat jalur

menggunakan struktur data priority_queue yang

mengaplikasikan struktur heap biner.

1 1

v

1

v

2

v

3

v

l /

v

4

(23)

10 Juli 2013 Tugas Akhir - KI091391 23

RANGKAIAN PROSES: LANGKAH 3

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

Pengecekan jumlah jalur dan isi himpunan kandidat

jalur

3

• Bertujuan agar jalur yang sudah ditemukan tidak dapat menjadi kandidat jalur terpendek berikutnya. • Subjalur yang dihapus dimulai dari verteks sumber

hingga verteks ke-(

l

-1) pada jalur

p

dan dinotasikan dengan

sub

p(

s

,

v

l -1 )

• Hapus semua edge yang berasal dari verteks deviasi jalur-jalur yang ditemukan sebelum jalur

p

.

(24)

RANGKAIAN PROSES: LANGKAH 4

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

4

• Pohon jalur terpendek

T

t adalah struktur pohon dari graf yang berakar pada verteks

t

, yaitu verteks tujuan jalur.

(25)

10 Juli 2013 Tugas Akhir - KI091391 25

RANGKAIAN PROSES: LANGKAH 4

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

Pengecekan jumlah jalur dan isi himpunan kandidat

jalur

4

• Pada proses algoritma, pohon jalur terpendek dibentuk dari graf setelah dilakukan penghapusan verteks dan edge pada graf

(26)

RANGKAIAN PROSES: LANGKAH 5

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

5

Pengembalian verteks vi ke dalam graf

Penghitungan jarak antara

vi dengan t

Penambahan kandidat jalur ke dalam X Pengembalian edge (vi, vi+1) pada graf 5.1 5.2 5.3 5.4

(27)

10 Juli 2013 Tugas Akhir - KI091391 27

RANGKAIAN PROSES: LANGKAH 5.1

Pencarian kandidat-kandidat jalur terpendek berikutnya

5

Pengembalian verteks vi ke dalam graf

Penghitungan jarak antara

vi dengan t

Penambahan kandidat jalur ke dalam X

Pengembalian edge (vi, vi+1)

pada graf 5.1

Perbaikan struktur pohon Tt

(28)

RANGKAIAN PROSES: LANGKAH 5.2

Pencarian kandidat-kandidat jalur terpendek berikutnya

5

Pengembalian verteks vi ke dalam graf

Penghitungan jarak antara

vi dengan t

Penambahan kandidat jalur ke dalam X

Pengembalian edge (vi, vi+1)

pada graf 5.2

Dilakukan penghitungan kembali jarak antara

v

i

(29)

10 Juli 2013 Tugas Akhir - KI091391 29

RANGKAIAN PROSES: LANGKAH 5.3

Pencarian kandidat-kandidat jalur terpendek berikutnya

5

Pengembalian verteks vi ke dalam graf

Penghitungan jarak antara

vi dengan t

Penambahan kandidat jalur ke dalam X

Pengembalian edge (vi, vi+1)

pada graf 5.3

Perbaikan struktur pohon Tt

• Jika jalur dari verteks

v

i ke verteks

t

dapat

ditetapkan, maka dilakukan penambahan kandidat jalur baru.

• Kandidat jalur merupakan gabungan dari

sub

p(

s

,

v

i) dengan jalur dari

v

i menuju

t

pada struktur pohon

T

t

.

(30)

RANGKAIAN PROSES: LANGKAH 5.4

Pencarian kandidat-kandidat jalur terpendek berikutnya

5

Pengembalian verteks vi ke dalam graf

Penghitungan jarak antara

vi dengan t

(31)

10 Juli 2013 Tugas Akhir - KI091391 31

RANGKAIAN PROSES: LANGKAH 5.5

Pencarian kandidat-kandidat jalur terpendek berikutnya

5

Pengembalian verteks vi ke dalam graf

Penghitungan jarak antara

vi dengan t

Penambahan kandidat jalur ke dalam X

Pengembalian edge (vi, vi+1)

pada graf

5.5 Perbaikan struktur pohon Tt

3 1 4 2 2 1 1 2 3 4

v

i 3 1 4 2 2

T

t

sebelum

(32)

RANGKAIAN PROSES: LANGKAH 6

Pencarian kandidat jalur terpendek pertama

Pengambilan jalur terpendek dari himpunan kandidat

jalur X

Penghapusan subjalur dan edge-edge dari graf

Pembentukan pohon jalur terpendek Tt

Pencarian kandidat-kandidat jalur terpendek berikutnya

• Rangkaian proses algoritma berhenti jika salah satu dari dua kondisi berikut tercapai:

1. jumlah jalur yang diambil dari

X

sudah sama dengan

k

(33)

10 Juli 2013 Tugas Akhir - KI091391 33

KERANGKA PRESENTASI

Uji Kebenaran

Uji Kecepatan

Uji Perbandingan Algoritma

Pendahuluan

Rangkaian Proses

Uji Coba

(34)

UJI KEBENARAN

5 8 4 1 5 1 2 1 1 4 3 1 3 1 2 4 2 3 4 2 2 5 3 4 5 1 3 5 2 1-3-4-5

Data Masukan Data Keluaran Program

(35)

10 Juli 2013 Tugas Akhir - KI091391 35

UJI KECEPATAN (1)

• Waktu minimal = 2,73 detik • Waktu maksimal = 2,83 detik

(36)

UJI KECEPATAN (2)

k Judul Graf Waktu (detik) 100 A 0.024 B 0.035 C 0.588 D 94.856 500 A 0.115 B 0.161 C 3.030 D 448.342 1000 A 0.227 B 0.328 C 6.165 D 888.671 5000 A 1.114 B 1.562 C 32.113 D 4486.230

Judul Graf Jumlah Verteks Jumlah Edge

(37)

10 Juli 2013 Tugas Akhir - KI091391 37

UJI PERBANDINGAN ALGORITMA

k Judul Graf Algoritma TA Algoritma Naif 100 A 0.016 0.296 B 0.035 0.561 500 A 0.093 1.294 B 0.161 3.104 1000 A 0.187 2.62 B 0.328 6.24 5000 A 0.974 14.461 B 1.562 30.576

Judul Graf Jumlah Verteks Jumlah Edge

(38)

KERANGKA PRESENTASI

Kesimpulan

Pendahuluan

Rangkaian Proses

(39)

10 Juli 2013 Tugas Akhir - KI091391 39

Kesimpulan

1. Hasil implementasi algoritma pencarian jalur sederhana terpendek yang

dijelaskan pada tugas akhir ini dapat menghasilkan keluaran yang benar.

2. Kompleksitas waktu eksekusi program adalah

Ο

(

kn

(

m

+

n

log

(

n

)) pada

n

buah

edge

,

m

buah verteks, dan

k

jalur yang dicari pada graf.

(40)

Saran

(41)
(42)

KERANGKA PRESENTASI

Struktur Pohon Jalur Terpendek

Struktur Percabangan Jalur

Struktur Pohon

T

t

Pendahuluan

Metode

Uji Coba

(43)

10 Juli 2013 Tugas Akhir - KI091391 43

POHON JALUR TERPENDEK

Struktur Pohon Jalur Terpendek

Struktur Percabangan Jalur

Struktur Pohon

T

t Rangkaian Proses

2

1

3

4

0 2 0 2 0 0 3 1

5

Daftar tiga jalur terpendek dari

verteks 1 ke verteks 5:

P

1

: 1-2-5

P

2

: 1-4-3-5

(44)

POHON JALUR TERPENDEK

Struktur Percabangan Jalur

(45)

10 Juli 2013 Tugas Akhir - KI091391 45

PERCABANGAN JALUR

Struktur Percabangan Jalur

Struktur Pohon

T

t

Rangkaian Proses

s

a

t

Struktur Pohon Jalur Terpendek

Jalur ke-

p

:

Kandidat jalur-jalur ke-

q

(

q

>

p

):

s

a

t

(46)

STRUKTUR POHON T

t

Struktur Percabangan Jalur

Struktur Pohon

T

t

Rangkaian Proses

Struktur Pohon Jalur Terpendek

(47)

10 Juli 2013 Tugas Akhir - KI091391 47

STRUKTUR POHON T

t

Struktur Percabangan Jalur

Struktur Pohon

T

t

Rangkaian Proses

Struktur Pohon Jalur Terpendek

2

3

4

2 0 2 0

5

Struktur Pohon T

t

setelah dilakukan

penghapusan edge-edge pada jalur 1-2-5

1

3

(48)
(49)

10 Juli 2013 Tugas Akhir - KI091391 49

(50)
(51)

10 Juli 2013 Tugas Akhir - KI091391 51

Gambar

ILUSTRASI PERMASALAHAN
Gambar Graf  Data Keluaran

Referensi

Dokumen terkait

Algoritma ini diujikan untuk melakukan proses optimasi dalam pencarian lintasan ataupun jalur terpendek dari suatu model graf.. Lalu dilakukan analisis kinerja perangkat

DAN ALGORITMA FLOYD-WARSHALL UNTUK PENCARIAN JALUR TERPENDEK PADA BUS TRANS

Pencarian lintasan terpendek dalam graf berarti meminimalisasi bobot suatu lintasan dalam Banyak algoritma untuk mencari lintasan terpendek, namun yang paling

Penelitian yang dilakukan oleh (Mindaputra, 2009) menemukan bahwa algoritma koloni semut sering digunakan untuk penyelesaian masalah pencarian jalur terpendek salah

Pencarian lokasi Rumah Sakit terdekat dipilih menggunakan algoritma Dijkstra karena Algoritma ini dapat menentukan jalur terpendek dari graph berbobot yang bobotnya

Some rights reserved Implementasi Algoritma Ant Colony Optimization ACO Pada Pencarian Jalur Terpendek Automatic Teller Machine ATM Di Kota Palu Deny Wiria Nugraha, Amriana, Rieska

Pada gambar 1, yang merupakan gambar peta dari jalur penelurusan game, maka penulis membuat graf jalur penelusuran untuk pencarian jalur terpendek dengan menggunakan algoritma greedy