STRUKTUR DATA
MODUL 6
GRAPH DAN WEIGHTED GRAPH
Dosen Pengampu
Achmad Arif Alfin, S.Si., M.MT
Oleh :
PENDAHULUAN
98
BAB II
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>.
100
A. Implementasi Algoritma Graph
Class Edge digunakan untuk menyimpan hubung edge pada vertices.
class Edge{
int s, d;
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
102
BAB IV
IMPLEMENTASI
1. Buat algoritma di Graph untuk gambar 3, lengkapi dengan pembobotan
(weight) di graph. Dan tampilkan output pembacaan graph.
A. Output
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
• Edge
• Path
• Complete Graph
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
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.
• 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;
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<>();
}
}
99