Anda di halaman 1dari 14

LAPORAN PRAKTIKUM

STRUKTUR DATA

MODUL 6
GRAPH DAN WEIGHTED GRAPH

Dosen Pengampu
Achmad Arif Alfin, S.Si., M.MT

Oleh :

Nama Mahasiswa : Mohamad Alief S.

NPM - Kelas : 20562020064 - A2


Tanggal Praktikum : 18 Juni 2021
Tanggal Pengumpulan : 28 Juni 2021

PROGRAM STUDI TEKNIK KOMPUTER


FAKULTAS TEKNIK
UNIVERSITAS ISLAM KADIRI – KEDIRI
TAHUN 2021
BAB I

PENDAHULUAN

1.1 Latar Belakang

Graph pertama kali dikemukakan pada tahun 1937 oleh seorang


matematikawan bernama Leonhard Euler. Masalah ini muncul
dilatarbelakangi adanya permasalahan yang timbul di daerah asalnya yang
dikenal dengan "Tujuh Jembatan Konigsberg". Suatu jaringan
telekomunikasi strukturnya dapat di presentasikan dengan sebuah graph,
titik-titiknya dapat dengan mudah di hubungkan secara langsung yang di
tunjukan dengan vertex-vertex yang adjacent. Semua terminal station
dapat di hubungkan, tetapi hampir semua hubungan atau sambungan di
kerjakan secara tidak langsung melalui titik-titik lainnya, sehingga grapnya
akan menjadi sangat kompleks, tetapi graph tersebut merupakan graph
yang terhubung (conneted graph).
Sebuah graph dari suatu jaringan dapat di gunakan sebagai wahana
untuk mempelajari property strukturnya, ketepatan perputaran dan
algoritma kontrolnya serta kemungkinan kemacetannya.
Pada jaringan yang paling sederhana ada tepat satu path antara dua
titik yang di tunjuk. Dalam system telepon modern menyediakan banyak
path alternative. Pendekatan secara graph dapat digunakan untuk
menghitung path alternative tersebut, untuk menunjukan apakah
jumlahnya cukup atau tidak, untuk memastikan kualitas yang dimiliki
(seperti pembebasan dari blocking), untuk menemukan struktur baru dan
untuk mempelajari algoritma penyelesaiannya. Contoh lain untuk
penggunaan graph masalah dalam jaringan komunikasi, penjadualan,
optimisasi, transportasi, ilmu komputer, riset operasi, ilmu kimia,
Sosiologi, Kartographi dan lain sebagainya.
1.2 Tujuan Praktikum
1. Memahami mengenai Konsep Graph dan istilah-istilah yang
terdapat pada Graph.
2. Memahami implementasi Graph ke dalam bahasa pemrograman java.

98
BAB II

DASAR TEORI GRAPH DAN WEIGHTED GRAPH

2.1 DASAR TEORI


Graph merupakan struktur data non-linier yang terdiri dari himpunan
vertices (node) dan himpunan Edges yang menghubungkan sepasang node.

Gambar 2.1 Stuktur Data Graph

Gambar 2.1 terdiri dari himpunan vertices V = {0,1,2,3,4} dan


himpunan edges E = {(5,3), (3,1), (1,2), (3,4), (4,2), (2,6)}. Dua vertices
x, y
dikatakan adjacent apabila x dan y dihubungkan oleh sebuah edges.
Path antara dua vertices x dan z adalah sekumpulan edges yang
menghubungkan vertice x ke vertice z. Panjang path adalah jumlah
edges dalam path. Graph dikatakan connected apabila ada sebuah path
yang menghubungkan sembarang dua vertices berbeda. Complete
graph adalah graph yang terhubung (connected graph) dan setiap
pasang vertices dihubungkan dengan Edges. Direct graph disebut
strongly connected jika ada sebuah path dari sembarang vertices ke
semua vertices. Direct graph disebut weakly conneted jika vertices x, z
tidak dapat ditelusuri dengan single path.

Gambar 2.2. Graph With Five Vertices and Seven edges.

Pada graph berarah (directed graph/digraph), setiap edges mempunyai arah


dari x ke y dan

99
dituliskan sebagai pasangan <x,y> atau x → y. Pada graph tak berarah
(undirected graph),
edges tidak mempunyai arah dan dituliskan sebagai pasangan {x, y} atau x
y.
berarah merupakan graph berarah jika setiap garis tak berarah {x,y}
merupakan dua garis berarah <x,y> dan <y,x>.

Gambar 2.3 Graph with five vertices and seven edges


Jumlah edge yang keluar dari vertices y tersebut adalah out-degree dari
vertices y. Jumlah edge yan masuk di vertices y adalah in-degree vertices
y. Baik graph berarah maupun tak berarah dapat diberikan pembobot
(weight). Pembobot diberikan untuk setiap garis. Hal ini biasanya
digunakan untuk menggambarkan jarak antara dua kota, waktu
penerbangan, harga tiket, kapasitas elektrik suatu kabel atau ukuran lain
yang berhubungan dengan jalur.

Gambar 2.4. Weighted Grap

100
A. Implementasi Algoritma Graph
Class Edge digunakan untuk menyimpan hubung edge pada vertices.
class Edge{

int s, d;

//creating a constructor of the class Edge Edge(int s, int d){


this.s = s;
this.d = d;
}}

Class yang digunakan untuk merepresentasikan object graph

class Graph{
//note that we have created an adjacency list (i.e. List of List)
List<List<Integer>> adjlist = new ArrayList<>();
//creating a constructor of the class Graph that construct a graph
public Graph(List<Edge> edges){
int n = 0;
//foreach loop that iterates over the edge for (Edge e: edges){
//determines the maximum numbered vertex n = Integer.max(n, Integer.max(e.s,
e.d));
}
//reserve the space for the adjacency list for (int i = 0; i <= n; i++){
adjlist.add(i, new ArrayList<>());
}
//adds the edges to the undirected graph for (Edge current: edges){
//allocate new node in adjacency list from source to destination
adjlist.get(current.s).add(current.d);
}
}
//Function to print adjacency list representation of a graph
public static void showGraph(Graph graph){ int s = 0;
//determines the size of the adjacency list int n = graph.adjlist.size(); while
(s < n){
//prints the neighboring vertices including the current vertex for (int d:
graph.adjlist.get(s)){
System.out.print("Adjacency List for the graph is:");

//prints the edge between the two vertices System.out.print("(" + s + " -- > "
+ d + ")\t");
}

System.out.println();
//increments the source
by 1 s++;
}
}
}

101
BAB III
TUGAS PENDAHULUAN

Jelaskan terminology berikut ini, dan sertakan contoh:


• Kegunaan Graph
• Vertex
• Edge
• Path
• Connected dan Disconnected
• Complete Graph
• Undirected Graph dan DiGraph
• StronglyConnected dan Weakly Connec

102
BAB IV
IMPLEMENTASI
1. Buat algoritma di Graph untuk gambar 3, lengkapi dengan pembobotan
(weight) di graph. Dan tampilkan output pembacaan graph.

Gambar 4.1 Graph

A. Output

Gambar 4.1 Output graph

B. Analisa
Setiap sisi dari graph memiliki nilai numerik terkait, yang disebut
bobot. Biasanya, bobot tepi adalah bilangan bulat non-negatif. Graph
berbobot dapat berarah atau tidak berarah. Bobot tepi sering disebut
sebagai "biaya" tepi. Akan membuat kelas edge untuk memberi bobot
pada setiap tepi.

103
BAB V
KESIMPULAN

Setelah melakukan praktikum graph dan weight graph dapat disimpulkan bahwa
graph merupakan salah satu jenis struktur data yang terdiri dari titik atau yang
disebut vertex dan garis (edge). Dimana dalam graph tersebut vertex-vertex yang
ada dihubungkan oleh edge hingga menjadi suatu kesatuan yang disebut graph.

104
DAFTAR PUSTAKA

Modul 6 Praktikum Stuktur Data - Graph Dan Weighted Graph


LAMPIRAN
A. Tugas Pendahuluan

Jelaskan terminology berikut ini, dan sertakan contoh:


• Kegunaan Graph
• Vertex

• Edge

• Path

• Connected dan Disconnected

• Complete Graph

• Undirected Graph dan DiGraph

• StronglyConnected dan Weakly Connec

Jawaban
• Kegunaan Graph untuk mereprentasikan sebuah objek dan
hubungannya dengan objek lain.
• Vertex adalah bagian dari titik yang akan dilakukan penghubungan
dengan menggunakan edge dan juga merupakan sebuah komponen yang
dianggap paling dasar dari sebuah objek 3 diensi. Didalam melakukan
pemanipulasian posisi vertex akan dapat dilakukan dengan cara mengganti
koordinat pada bagian x, y, dan z yang berada

• Edge, juga disebut grafik atau hubungan, adalah garis yang


menghubungkan node ke node lain; mereka mewakili hubungan di antara
mereka. Pola bermunculan muncul saat memeriksa koneksi dan
interkoneksi node, properti, dan edge. Edge adalah konsep kunci dalam
105
database grafik, mewakili abstraksi yang tidak langsung diimplementasikan
di sistem lain.
• Path adalah serangkaian simpul-simpul yang berbeda, yang adjacent
secara berturut-turut dari simpul satu ke simpul berikutnya.

106
• Connected adalah suatu graf terhubung jika dua buah titik pada graf
tersebut dihubungkan oleh suatu lintasan.

Disconnected suatu graf tidak terhubung jika setidaknya dua simpul dari graf
tersebut tidak dihubungkan oleh suatu lintasan. Jika suatu graf G terputus, maka
setiap subgraf terhubung maksimal dari G disebut komponen terhubung dari graf
G.

• Complete Graph adalah graph yang terhubung (connected graph) dan


setiap pasang vertices dihubungkan dengan Edges.

• Digraph Graph Berarah (directed graph atau digraph): jika sisi-sisi pada
graph, misalnya {x, y} hanya berlaku pada arah-arah tertentu saja, yaitu dari x ke
y tapi tidak dari y ke x; verteks x disebut origin dan vertex y disebut terminus
dari sisi tersebut. Secara grafis maka penggambaran arah sisi-sisi digraph
dinyatakan

107
dengan anak panah yang mengarah ke verteks terminus, secara notasional sisi
graph berarah ditulis sebagai vektor dengan (x, y).
Undigraph Graph Tak Berarah (undirected graph atau undigraph): setiap
sisi {x, y} berlaku pada kedua arah: baik x ke y maupun y ke x. Secara grafis sisi
pada undigraph tidak memiliki mata panah dan secara notasional menggunakan
kurung kurawal. Dalam masalah-masalah graph undigraph bisa dipandang
sebagai suatu digraph dengan mengganti setiap sisi tak berarahnya dengan dua
sisi untuk masing-masing arah yang berlawanan.
• StronglyConnected Suatu graph dikatakan terhubung kuat jika setiap
pasangan simpul (u, v) pada graf tersebut memuat lintasan antara satu sama lain.
Dalam graf berarah tak berbobot G, setiap pasangan simpul u dan v harus
memiliki lintasan di setiap arah di antara mereka, yaitu lintasan dua arah.
Elemen-elemen dari matriks jalur dari grafik semacam itu akan berisi semua.

Weakly Conec suatu graph dikatakan terhubung lemah jika tidak terdapat
lintasan antara dua pasang simpul. Oleh karena itu, jika graf G tidak memuat
lintasan berarah (dari u ke v atau dari v ke u untuk setiap pasangan simpul u, v)
maka graf tersebut terhubung lemah. Elemen-elemen dari matriks jalur seperti itu
dari grafik ini akan acak.

108
B. Source Code

package modoul6UDN;

import java.util.LinkedList;

public class WeightedGraph {


static class Edge {
int source;
int destination;
int weight;

public Edge(int source, int destination, int


weight) {
this.source = source;
this.destination = destination;
this.weight = weight;
}
}

static class Graph {


int vertices;
LinkedList<Edge> [] adjacencylist;

Graph(int vertices) {
this.vertices = vertices;
adjacencylist = new LinkedList[vertices];
//initialize adjacency lists for all the
vertices
for (int i = 0; i <vertices ; i++) {
adjacencylist[i] = new LinkedList<>();
}
}

public void addEgde(int source, int destination,


int weight) {
Edge edge = new Edge(source, destination,
weight);
adjacencylist[source].addFirst(edge); //for
directed graph
}

public void printGraph(){


for (int i = 0; i <vertices ; i++) {
LinkedList<Edge> list = adjacencylist[i];
for (int j = 0; j <list.size() ; j++) {
System.out.println("vertex-" + i + "
is connected to " +
list.get(j).destination + "
with weight " + list.get(j).weight);
98
}
}
}
}
public static void main(String[] args) {
int vertices = 5;
Graph graph = new Graph(vertices);
graph.addEgde(0, 1, 3);
graph.addEgde(0, 2, 2);
graph.addEgde(1, 2, 6);
graph.addEgde(2, 1, 4);
graph.addEgde(4, 1, 5);
graph.addEgde(2, 3, 1);
System.out.println("MOHAMAD ALIEF SYAIFUDIN NPM
20562020064”);
graph.printGraph();
}
}

99

Anda mungkin juga menyukai