STRUKTUR
DATA
TA. 2020-2021
1
Gambar 10.2 Contoh Graph
Pada contoh itu di dapatkan Simpul atau Vertices (V) nya adalah
V = { V1, V2, V3, V4, V5, V6, V7, V8 } dan Busur atau Edge (E) nya
adalah E = {{V1,V2}, {V1,V3}, {V1,V4}, {V2,V5}, {V2,V6}, {V3,V7},
{V4,V8}, {V7,V8}, {V5,V8}, {V6,V8}}.
B. Jenis Graph
2
Dalam contoh diatas terdapat 2 buah busur terarah. Pertama kita
dapat definisikan vertex asal adalah A dan tujuannya adalah B sehingga
dihasilkan anak panah pada bagian atas (dalam kasus tersebut). Kemudian
terdapat juga vertex asal adalah B dan tujuannya adalah A sehingga
dihasilkan anak panah pada bagian bawah (dalam kasus tersebut).
Dikarenakan prinsip Elemen berurutan (ordered pair), Maka untuk
menuliskan notasinya haruslah urut. Objek pertama adalah asal dan objek
kedua adalah tujuan maka didapatkan (A,B) dan (B,A). Perlu diingat
kedua busur tersebut dapatlah berbeda jika nilai A tidak sama dengan nilai
B (Pahami prinsip Elemen berurutan (ordered pair)) .
3
Misal Magelang ke Yogya memiliki bobot 40 atau berjarak 40 kilometer.
Lalu jalan mana yang harus dilewati agar perjalanan tidak membutuhkan
jarak yang panjang? Maka jawabannya adalah melewati Yogya, lalu ke
Klaten, kemudian sampai di Solo dengan jarak total adalah 100 Km.
Berbeda jika melewati Yogya, lalu ke Wonosari, dan sampai di Solo yang
berjarak 113 Km.
4
Gambar 10.7 Contoh graph tak berbobot
5
Gambar 10.9 Contoh Graph Berarah
6
Suatu vertex bisa saja disebut vertex terisolasi. Hal ini terjadi kalau
terdapat vertex yang tidak terhubung ke vertex lain. Contoh Vertex terilosai
V5 pada Gambar 10.10.
Sebuah graf disebut graf berbobot kalau pada setipa garis terdapat
nilai atau bobot. Contoh dapat dilihat pada Gambar10.6
Sebuah graf G2 disebut sebagai subgraf dari graf G1, apabilla
himpunan vertex graf G2 merupakan himpunan bagian dari Vertex G1 dan
himpunan garisnya merupakan himpunan bagian dari himpunan garis pada
G1. Contoh dapat dilihat pada Gambar 10.11.
7
simpul. Matriks ini diisi dengan 1 atau 0. Di sini, 1 menyatakan bahwa
ada tepi dari puncak baris ke puncak kolom dan 0 menunjukkan bahwa
tidak ada tepi dari puncak baris ke puncak kolom.
2. Incidence Matrix
Dalam representasi ini, grafik direpresentasikan menggunakan
matriks ukuran jumlah total simpul dengan jumlah total sisi. Artinya graf
dengan 4 buah simpul dan 6 tepi direpresentasikan dengan menggunakan
matriks berukuran 4X6. Dalam matriks ini, baris mewakili simpul dan
kolom mewakili tepi. Matriks ini diisi dengan 0 atau 1 atau -1. Di sini, 0
menunjukkan bahwa tepi baris tidak terhubung ke simpul kolom, 1
menunjukkan bahwa tepi baris terhubung sebagai tepi keluar ke simpul
kolom dan -1 menunjukkan bahwa tepi baris terhubung sebagai tepi yang
masuk ke simpul kolom.
8
Gambar 10.15 Contoh Incidence Matrix dalam directed graph
3. Adjacency List
Dalam representasi ini, setiap simpul dari grafik berisi daftar
simpul yang berdekatan. Misalnya, pertimbangkan representasi grafik
terarah berikut yang diimplementasikan menggunakan linked list.
9
Gambar 10.18(a). Lintasan ABCA dan juga ABDCA adalah contoh siklus.
Pada Gambar 10.18(b). BCDB merupakan satu-satunya siklus dalam graf
tersebut. Adapaun ACDBA bukan Siklus, sebab tidak ada garis B ke A
(yang ada adalah dari A ke B)
10
Gambar 10.20 Contoh berbagai spanning tree
F. Contoh Program
Misal kita ingin membuat sebuah graph seperti berikut
Source Code
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
bool ketemu, nolsemua;
int matrix[10] [10];
int i,j,jumlah_simpul,jumlah_sisi,asal,tujuan;
//isnisialisasi matrix
cout<<"===== Program Graph ====="<<endl<<endl;
cout<<"Masukkan jumlah jumlah simpul : ";
cin>>jumlah_simpul;
for (i=1;i<=jumlah_simpul;i++)
{
for (j=1;j<=jumlah_simpul;j++)
{
matrix[i][j]=0;
}
11
}
//telusuri graf
i=1;
nolsemua=false;
else {
j++;
};
}
if (ketemu == false) {
nolsemua=true;
}
else{
i++;
}
}
if(nolsemua) {
cout<<endl;
cout<<"<<<< Graf tidak terhubung >>>>";
}
else{
cout<<endl;
cout<<"<<<< Graf terhubung >>>>";
}
getch();
}
12
Tampilan :
13