Anda di halaman 1dari 9

STRUKTUR DATA

GRAPH &ALGORITMA GREEDY

Disusun oleh :
Ulil Abshor
G.231.21.0034

PROGRAM STUDI S1 – TEKNIK INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI DAN KOMUNIKASI
UNIVERSITAS SEMARANG
TAHUN AJARAN 2021/2022
A. Struktur Data Grafik

Dalam tutorial ini, Anda akan mempelajari apa itu Struktur


Data Graf. Juga, Anda akan menemukan representasi grafik.
Struktur data grafik adalah kumpulan node yang memiliki data dan
terhubung ke node lain. Mari kita coba memahami ini melalui
sebuah contoh. Di facebook, semuanya adalah simpul. Itu
termasuk Pengguna, Foto, Album, Acara, Grup, Halaman,
Komentar, Cerita, Video, Tautan, Catatan... apa pun yang memiliki
data adalah simpul.

Mari kita coba memahami ini melalui sebuah contoh. Di


facebook, semuanya adalah simpul. Itu termasuk Pengguna, Foto,
Album, Acara, Grup, Halaman, Komentar, Cerita, Video, Tautan,
Catatan... apa pun yang memiliki data adalah simpul.

Setiap hubungan adalah keunggulan dari satu simpul ke


simpul lainnya. Apakah Anda memposting foto, bergabung dengan
grup, menyukai halaman, dll, keunggulan baru dibuat untuk
hubungan itu.

Semua facebook kemudian merupakan kumpulan dari node


dan edge ini. Ini karena facebook menggunakan struktur data
grafik untuk menyimpan datanya. Lebih tepatnya, grafik adalah
struktur data (V, E) yang terdiri dari :

 Kumpulan simpul V

 Kumpulan sisi-sisi E, direpresentasikan sebagai


pasangan terurut dari titik-titik (u,v)
In the graph :
V = {0, 1, 2, 3}
E = {(0,1), (0,2), (0,3), (1,2)}
G = {V, E}

B. TERMINLOGI GRAF

a) Adjacency
Suatu simpul dikatakan bertetangga dengan simpul lain jika
ada sisi yang menghubungkannya. Simpul 2 dan 3 tidak
bertetangga karena tidak ada sisi di antara keduanya.

b) Path
Urutan sisi yang memungkinkan Anda pergi dari simpul A ke
simpul B disebut jalur. 0-1, 1-2 dan 0-2 adalah lintasan dari
simpul 0 ke simpul 2

c) Grafik Berarah
Sebuah grafik di mana sisi (u,v) tidak selalu berarti bahwa
ada sisi (v, u) juga. Tepi-tepi dalam grafik seperti itu diwakili oleh
panah untuk menunjukkan arah tepi.

C. REPRESENTASI GRAFIK
Grafik umumnya direpresentasikan dalam dua cara:
1. Matriks Kedekatan
Matriks adjacency adalah larik 2D dari simpul V x V.
Setiap baris dan kolom mewakili sebuah simpul. Jika nilai
dari setiap elemen a[i][j] adalah 1, ini menyatakan bahwa
ada sebuah sisi yang menghubungkan simpul i dan simpul j.
Matriks ketetanggaan untuk graf yang kita buat di atas
adalah

Karena merupakan graf tak berarah, untuk sisi (0,2),


kita juga perlu menandai sisi (2,0); membuat matriks
adjacency simetris terhadap diagonal.
Pencarian tepi (memeriksa apakah ada tepi antara
simpul A dan simpul B) sangat cepat dalam representasi
matriks adjacency tetapi kita harus mencadangkan ruang
untuk setiap tautan yang mungkin antara semua simpul (V x
V), sehingga membutuhkan lebih banyak ruang.

2. Daftar Adjacency
Daftar adjacency mewakili grafik
sebagai larik daftar tertaut. Indeks array mewakili sebuah
simpul dan setiap elemen dalam daftar tertautnya
mewakili simpul lain yang membentuk sisi dengan simpul
tersebut. Daftar adjacency untuk graf yang kita buat pada
contoh pertama adalah sebagai berikut :
Daftar adjacency efisien dalam hal penyimpanan
karena kita hanya perlu menyimpan nilai untuk edge.
Untuk grafik dengan jutaan simpul, ini bisa berarti banyak
ruang yang dihemat

D. GRAPH OPERATIONS
Operasi grafik yang paling umum adalah:
 Periksa apakah elemen tersebut ada dalam grafik
 Penjelajahan Graf
 Tambahkan elemen (simpul, tepi) ke grafik
 Menemukan jalur dari satu simpul ke simpul lainnya

E. GREEDY ALGORITHM
Dalam tutorial ini, Anda akan mempelajari apa itu Algoritma
Greedy. Juga, Anda akan menemukan contoh pendekatan
serakah.
Algoritma serakah adalah pendekatan untuk memecahkan
masalah dengan memilih opsi terbaik yang tersedia saat ini. Tidak
perlu khawatir apakah hasil terbaik saat ini akan membawa hasil
yang optimal secara keseluruhan.
Algoritme tidak pernah membalikkan keputusan sebelumnya
meskipun pilihannya salah. Ini bekerja dalam pendekatan top-
down.
Algoritma ini mungkin tidak menghasilkan hasil terbaik untuk
semua masalah. Itu karena selalu memilih pilihan terbaik lokal
untuk menghasilkan hasil terbaik global.
Namun, kami dapat menentukan apakah algoritme dapat
digunakan dengan masalah apa pun jika masalah tersebut
memiliki properti berikut:

1) Properti Pilihan Serakah


Jika solusi optimal untuk masalah dapat ditemukan
dengan memilih pilihan terbaik pada setiap langkah tanpa
mempertimbangkan kembali langkah sebelumnya yang telah
dipilih, masalah dapat diselesaikan dengan menggunakan
pendekatan serakah. Properti ini disebut properti pilihan
rakus.

2) Substruktur Optimal
Jika solusi keseluruhan yang optimal untuk masalah
tersebut sesuai dengan solusi optimal untuk submasalahnya,
maka masalah tersebut dapat diselesaikan dengan
menggunakan pendekatan serakah. Properti ini disebut
substruktur optimal.

F. KEUNTUNGAN PENDEKATAN SERAKAH

Algoritma lebih mudah untuk dijelaskan. Algoritma ini dapat


bekerja lebih baik daripada algoritma lain (namun, tidak dalam
semua kasus). Kelemahan Pendekatan Serakah Seperti
disebutkan sebelumnya, algoritma rakus tidak selalu menghasilkan
solusi optimal. Ini adalah kelemahan utama dari algoritma

Sebagai contoh, misalkan kita ingin mencari jalur terpanjang pada


graf di bawah ini dari akar ke daun. Mari
gunakan algoritma serakah di sini.
a) Pendekatan serakah

1. Mari kita mulai dengan simpul akar 20. Berat anak kanan
adalah 3 dan berat anak kiri adalah 2.

2. Masalah kita adalah menemukan jalur terbesar. Dan, solusi


optimal saat ini adalah 3. Jadi, algoritma serakah akan memilih
3.

3. Akhirnya berat anak tunggal dari 3 anak adalah 1. Hasilnya


adalah 20 + 3 + 1 = 24.

Namun, itu bukan solusi optimal. Ada jalur lain yang memiliki
bobot lebih (20 + 2 + 10 = 32) seperti yang ditunjukkan pada
gambar di bawah.
Oleh karena itu, algoritma serakah tidak selalu
memberikan solusi yang optimal/layak

G. GREEDY ALGORITHM

1. Pertama-tama, kumpulan solusi (berisi jawaban) kosong.


2. Pada setiap langkah, item ditambahkan ke set solusi
sampai solusi tercapai.
3. Jika set solusi layak, item saat ini disimpan.
Jika tidak, item tersebut ditolak dan tidak pernah
dipertimbangkan lagi.
4. Sekarang mari kita gunakan algoritma ini untuk
memecahkan masalah.

H. EXAMPLE GREEDY ALGORITHM

Masalah: Anda harus melakukan perubahan jumlah menggunakan


jumlah koin sekecil mungkin.
Jumlah: $18

Koin yang tersedia adalah


koin $5
koin $2
koin $1
Tidak ada batasan jumlah setiap koin yang dapat Anda gunakan.
Solusi :

1. Buat himpunan solusi kosong = { }. Koin yang tersedia adalah


{5, 2, 1}.
2. Kita seharusnya mencari jumlah = 18. Mari kita mulai dengan
jumlah = 0.
3. Selalu pilih koin dengan nilai terbesar (yaitu 5) hingga
jumlahnya > 18. (Saat kita memilih nilai terbesar di setiap
langkah, kita berharap dapat mencapai tujuan lebih cepat.
Konsep ini disebut properti pilihan rakus.)
4. Pada iterasi pertama, himpunan solusi = {5} dan jumlah = 5.
5. Pada iterasi kedua, himpunan solusi = {5, 5} dan jumlah = 10.
6. Pada iterasi ketiga, himpunan solusi = {5, 5, 5} dan jumlah = 15.
7. Pada iterasi keempat, himpunan solusi = {5, 5, 5, 2} dan jumlah
= 17. (Kita tidak dapat memilih 5 di sini karena jika demikian,
jumlah = 20 yang lebih besar dari 18. Jadi, kita pilih yang ke-2
item terbesar yaitu 2.)
8. Demikian pula, pada iterasi kelima, pilih 1. Sekarang jumlah =
18 dan himpunan solusi = {5, 5, 5, 2, 1}.

Anda mungkin juga menyukai