SlideShare a Scribd company logo
Politeknik Elektronika Negeri Surabaya
210
P
PR
RA
AK
KT
TI
IK
KU
UM
M 2
29
9
G
GR
RA
AP
PH
H 1
1
A. TUJUAN PEMBELAJARAN
1. Memahami mengenai Konsep Graph dan istilah-istilah yang terdapat pada Graph
2. Memahami implementasi Graph ke dalam bahasa pemrograman java
B. DASAR TEORI
B.1 KONSEP GRAPH
Sebuah graph G=<V,E> terdiri dari sekumpulan titik (vertices) V dan sekumpulan
garis (edges) E. Sebuah garis e = (u,v) menghubungkan dua titik u dan v. Self – loop adalah
garis yang menghubungkan ke titik itu sendiri.
Vertices = {v1, v2, v3, …, vm}
Edges = {e1, e2, e3, …, en}
Dua titik u, v dikatakan adjacent to u, jika u dan v dihubungkan dengan garis. Path antara dua
titik v dan w adalah sekumpulan garis yang menghubungkan titik v ke titik w. Panjang path
adalah jumlah garis dalam path. Graph dikatakan connected/terhubung jika ada sebuah path
yang menghubungkan sembarang dua titik berbeda. Complete graph adalah graph yang
terhubung (connected graph) dan setiap pasang titik dihubungkan dengan garis. Digraph
disebut strongly connected jika ada sebuah path dari sembarang titik ke semua titik. Digraph
disebut weakly conneted jika titik u dan v jika terdapat path (u,v) atau path(v,u).
Gambar 29.1 (a) Graph Connected (b) Disconnected (c) Complete
Politeknik Elektronika Negeri Surabaya
211
Gambar 29.2 (a) Graph Weakly Connected (b) Strongly Connected (c) Weakly Connected
Pada graph berarah (directed graph/digraph), setiap garis mempunyai arah dari u ke v dan
dituliskan sebagai pasangan <u,v> atau u->v. Pada graph tak berarah (undirected graph),
garis tidak mempunyai arah dan dituliskan sebagai pasangan {u,v} atau u<->v. Graph tak
berarah merupakan graph berarah jika setiap garis tak berarah {u,v} merupakan dua garis
berarah <u,v> dan <v,u>.
Gambar 29.3 Contoh Graph Digraph
Jumlah edge yang keluar dari titik/vertex v tersebut adalah out-degree dari vertex v. Jumlah
edge yan masuk di vertex v adalah in-degree vertex v.
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 garis.
Politeknik Elektronika Negeri Surabaya
212
Gambar 29.4 Contoh penggunaan Graph
Graph banyak digunakan untuk menggambarkan jaringan dan peta jalan, jalan kereta api,
lintasan pesawat, system perpipaan, saluran telepon, koneksi elektrik, ketergantungan
diantara task pada sistem manufaktur dan lain-lain. Terdapat banyak hasil dan struktur
penting yang didapatkan dari perhitungan dengan graph.
GRAPH DENGAN MATRIK ADJACENCY
Sebuah graph G= dapat direpresentasikan dengan matrik adjacency A sebagai |V|*|V|.
Jika G berarah, Aij = 1 jika dan hanya jika <vi, vj> berada pada E. Terdapat paling banyak
|V|2
garis pada E.
Gambar 29.5 Graph berarah
Matriks adjacency dari Graph berarah adalah sebagai berikut :
1 2 3 4 5 6
1 1
2 1
3 1
4 1 1 1
5 1 1 1
6 1
Jika G adalah graph tak berarah, Aij=Aji=1 jika {vi,vj} berada pada E dan
Aij=Aji=false apabila G adalah graph berarah.
Politeknik Elektronika Negeri Surabaya
213
Gambar 29.6 Graph tak berarah
Matriks adjacency dari Graph berarah adalah sebagai berikut :
1 2 3 4 5 6
1 1 1 1
2 1 1 1 1
3 1 1
4 1 1 1 1
5 1 1 1
6 1 1
Pada graph tak berarah, matriks adjacency dapat berupa matriks segitiga atas sebagai berikut
:
1 2 3 4 5 6
1 1 1 1
2 1 1 1
3 1
4 1
5 1
6
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 garis. Pembobot biasanya disebut panjang garis,
khususnya jika graph menggambarkan peta. Pembobot atau panjang dari suatu jalur atau
siklus merupakan penjumlahan pembobot atau panjang dari komponen garis.
Politeknik Elektronika Negeri Surabaya
214
Gambar 29.7 Graph berarah dengan pembobot
Matriks adjacency dari graph dengan pembobot dapat digunakan untuk menyimpan
pembobot dari setiap garis. Jika garis kehilangan nilai, kemungkinan nilai negative, nol atau
bilangan besar menunjukkan nilai yang tak terbatas (infinity).
Matriks adjacency pada graph berarah dengan pembobot adalah sebagai berikut :
1 2 3 4 5 6
1 4
2 4
3 3
4 3 2 3
5 4 5 1
6 5
Gambar 29.8 Graph tak berarah dengan pembobot
Matriks adjacency pada graph tak berarah dengan pembobot adalah sebagai berikut :
1 2 3 4 5 6
1 4 3 5
2 4 3 4 4
3 3 2
4 3 4 2 3
5 4 3 1
6 5 1
Politeknik Elektronika Negeri Surabaya
215
Atau berupa matriks segitiga atas sebagai berikut :
1 2 3 4 5 6
1 4 3 5
2 3 4 4
3 2
4 3
5 1
6
B.2 IMPLEMENTASI GRAPH
INTERFACE GRAPH
Interface Graph berisi method-method dasar dari graph.
Tabel 29.1 Interface Graph
Interface Graph
boolean addEdge(T v1, T v2,
int w)
Jika edge (v1,v2) belum terdapat pada graph, tambahkan
edge dengan bobot w dan mengembalikan nilai true. Jika
edge(v1,v2) sudah ada maka mengembalikan nilai false. Jika
v1 dan v2 bukan merupakan vertex di graph maka throws
IIlegalArgumentException.
boolean addVertex(T v) Jika vertex v tidak terdapat pada graph maka tambahkan
pada graph dan mengembalikan nilai true. Jika vertex v
sudah ada maka mengembalikan nilai false.
void clear() Menghapus semua vertex dan edge pada graph
boolean containsEdge(T v1, T
v2)
Mengembalikan nilai true jika terdapat sebuah edge dari v1
dan v2 di graph dan mengembalikan nilai false jika
sebaliknya. Jika v1 atau v2 bukan merupakan vertex pada
graph maka throws IIlegalArgumentException.
boolean
containsVertex(Object v)
Mengembalikan nilai true jika v adalah vertex pada Graph
dan mengembalikan nilai false jika v bukan merupakan
vertex pada Graph
Set<T> getNeighbors(T v) Mengembalikan vertex-vertex yang terhubung dengan vertex
v, dan vertex-vertex tersebut disimpan dalam object S. Jika v
bukan merupakan vertex pada graph maka throws
IIlegalArgumentException.
int getWeight(T v1, T v2) Mengembalikan bobot dari edge yang menghubungkan
Politeknik Elektronika Negeri Surabaya
216
vertex v1 dan v2, jika edge (v1,v2) tidak ada maka
mengembalikan nilai -1. Jika v1 atau v2 bukan merupakan
vertex pada graph maka throws IIlegalArgumentException.
boolean isEmpty() Mengembalikan nilai true jika graph sama sekali tidak
mempunyai vertex dan mengembalikan nilai false jika
memiliki minimal 1 buah vertex.
int numberOfEdges() Mengembalikan jumlah edge pada graph.
int numberOfVertices() Mengembalikan jumlah vertex pada graph.
boolean removeEdge() Jika (v1,v2) merupakan edge, menghapus edge tersebut dan
mengembalikan nilai true dan mengembalikan nilai false jika
sebaliknya. Jika v1 atau v2 bukan merupakan vertex pada
graph maka throws IIlegalArgumentException.
boolean removeVertex(Object
v)
Jika v adalah vertex pada graph, menghapus vertex v dari
graph dan mengembalikan nilai true, dan mengembalikan
nilai false jika sebaliknya.
int setWeight(T v1, T v2,
int w)
Jika edge (v1, v2) terdapat pada graph, ubah bobot edge dan
mengembalikan bobot sebelumnya jika tidak
mengembalikan nilai false. Jika v1 atau v2 bukan vertex di
graph, maka throws IIlegalArgumentException.
Set<T> vertexSet() Mengembalikan vertex-vertex yang terdapat pada Graph
disimpan dalam object Set.
CLASS DIGRAPH
Class DiGraph merupakan implementasi dari interface Graph dan ada beberapa method
tambahan yang berguna dalam aplikasi ini :
Constructor : membuat graph kosong
inDegree() : untuk menghitung jumlah inDegree dari vertex v.
outDegree() : untuk menghitung jumlah outDegree dari vertex v.
static readGraph() : untuk membangun graph dari inputan file.
Politeknik Elektronika Negeri Surabaya
217
Gambar 29.9 Contoh Graph DiGraph
File samplegraph.dat
5 // data for the vertices
A B C D E
6 // data for the edges
A B 3
A C 2
B C 6
C B 4
C D 1
E B 5
// input vertices, edges, and weights from samplegraph.dat
DiGraph g = DiGraph.readGraph("samplegraph.dat");
// display the graph
System.out.println(g)
Output:
A: in-degree 0 out-degree 2
Edges: B(3) C(2)
B: in-degree 3 out-degree 1
Edges: C(6)
C: in-degree 2 out-degree 2
Edges: B(4) D(1)
D: in-degree 1 out-degree 0
Edges:
E: in-degree 0 out-degree 1
Edges: B(5)
REPRESENTASI ADJACENCY
Sebuah graph G= dapat direpresentasikan dengan matrik adjacency. Berikut adalah graph
beserta matrik adjancency.
Gambar 29.10 Graph dan Matrik Adjacency
Politeknik Elektronika Negeri Surabaya
218
Bentuk lain dari matrik adjacency adalah sebagai berikut :
Sebagai contoh vertex A memiliki keterhubungan dengan vertex B dengan bobot 1 dan vertex
C dengan bobot 1.
Gambar 29.11 Graph 1 dan List Adjacency
Sebagai contoh vertex A memiliki keterhubungan dengan vertex B dengan bobot 4, vertex C
dengan bobot 7 dan vertex D dengan bobot 6.
Gambar 29.12 Graph 2 dan List Adjacency
REPRESENTASI EDGE
Class Edge merupakan representasi edge yang menghubungkan vertex u dan vertex v pada
Graph.
class Edge
{
// index of the destination vertex in the ArrayList
// vInfo of vertex properties
public int dest;
// weight of this edge
public int weight;
public Edge(int dest, int weight)
{
this.dest = dest;
this.weight = weight;
}
public boolean equals(Object obj)
{
Politeknik Elektronika Negeri Surabaya
219
return ((Edge)obj).dest == this.dest;
}
}
REPRESENTASI INFORMASI VERTEX
Class VertexInfo merepresentasikan sebuah vertex v beserta informasinya yaitu
• vertex : Nama vertex
• edgeList : Vertex-vertex yang terhubung dengan vertex v
• inDegree : Jumlah inDegree
• outDegree : Jumlah outDegree
Gambar 29.13 Cara penyimpanan vertex dalam object VertexInfo
import java.util.LinkedList;
public class VertexInfo<T> {
public T vertex ;
public LinkedList<Edge> edgeList ;
public int inDegree ;
public int outDegree;
public VertexInfo(T v) {
vertex = v ;
edgeList = new LinkedList<Edge>() ;
inDegree = 0 ;
outDegree = 0;
}
public boolean equals(Object obj) {
VertexInfo<T> vertex2 = (VertexInfo<T>) obj ;
return this.vertex.equals(vertex2.vertex);
}
}
VERTEX MAP vtxMap DAN ARRAYLIST VertexInfo
VERTEX vtxMap terdiri dari data yang berpasangan(key-value) sebagai key adalah Vertex
dan sebagai value adalah index pada ArrayList VertexInfo
Politeknik Elektronika Negeri Surabaya
220
Gambar 29.14 Keterkaitan HashMap vtxMap dan ArrayList vInfo
Di bawah ini terdapat Graph, beserta data yang tersimpan di vtxMap dan ArrayList
VertexInfo.
Gambar 29.15 Graph, beserta data yang tersimpan di vtxMap dan ArrayList vInfo.
C. TUGAS PENDAHULUAN
Jelaskan mengenai Graph di bawah ini :
• Kegunaan Graph
• Vertex
• Edge
• Path
• Connected dan Disconnected
• Complete Graph
• Undirected Graph dan DiGraph
• StronglyConnected dan Weakly Connected
Politeknik Elektronika Negeri Surabaya
221
D. PERCOBAAN
Untuk mengimplementasikan Graph, maka perlu dibuat :
• Interface GRAPH
• Class VertexInfo : merepresentasikan sebuah vertex pada Graph
• Class Edge : merepresentasikan sebuah edge/link pada Graph
• Class DiGraph : merepresentasikan Directed Graph/ DiGraph
• Class TestGraph : menguji method-method yang terdapat pada class DiGraph
Gambar 29.15 Diagram UML Implementasi Graph
Percobaan 1 : Interface Graph. Sebelum membuat Graph, terlebih dahulu membuat
Interface Graph, karena class DiGraph mengimplementasikan interface Graph.
public interface GRAPH<T> {
boolean addEdge(T vi, T v2, int w);
boolean addVertex(T v);
void clear();
boolean containsEdge(T vi, T v2);
boolean containsVertex(Object v);
Set<T> getNeighbors(T v);
int getWeight(T vi, T v2);
boolean isEmtpty();
int numberOfEdges();
int numberOfVertices();
boolean removeEdge(T vi, T v2);
void setWeight(T vi, T v2, int w);
Set<T> vertexSet();
}
Politeknik Elektronika Negeri Surabaya
222
Percobaan 2 : Class VertexInfo merepresentasikan object vertex beserta informasinya.
import java.util.LinkedList;
public class VertexInfo<T> {
public T vertex ;
public LinkedList<Edge> edgeList ;
public int inDegree ;
public int outDegree;
public VertexInfo(T v) {
vertex = v ;
edgeList = new LinkedList<Edge>() ;
inDegree = 0 ;
outDegree = 0;
}
public boolean equals(Object obj) {
VertexInfo<T> vertex2 = (VertexInfo<T>) obj ;
return this.vertex.equals(vertex2.vertex);
}
}
Percobaan 3 : Class Edge representasi dari sebuah edge pada Graph
class Edge
{
// index of the destination vertex in the ArrayList
// vInfo of vertex properties
public int dest;
// weight of this edge
public int weight;
public Edge(int dest, int weight)
{
this.dest = dest;
this.weight = weight;
}
public boolean equals(Object obj)
{
return ((Edge)obj).dest == this.dest;
}
}
Buatlah Class DiGraph, seperti gambar UML diatas. Praktikum 4 – 10 merupakan
method-method yang terdapat pada Class DiGraph
Percobaan 4 : Konstruktor class DiGraph.
public DiGraph() {
vtxMap = new HashMap<T, Integer>();
vInfo = new ArrayList<VertexInfo<T>>();
}
Politeknik Elektronika Negeri Surabaya
223
Percobaan 5 : Method numberOfEdges() untuk mengetahui jumlah edge.
public int numberOfEdges() {
int n = 0;
ListIterator it = vInfo.listIterator();
while (it.hasNext()) {
VertexInfo<T> v = (VertexInfo<T>) it.next();
n = n + v.edgeList.size();
}
return n;
}
Percobaan 6 : Method containsVertex() untuk mengetahui ada/tidak sebuah object
vertex dalam ArrayList vInfo.
public boolean containsVertex(Object v) {
return vInfo.contains(v);
}
Percobaan 7 : Method numberOfVertices() untuk mengetahui jumlah vertex pada
Graph.
public int numberOfVertices() {
return vInfo.size();
}
Percobaan 8 : Method isEmpty() untuk mengetahui apakah sebuah Graph kosong atau
tidak.
public boolean isEmtpty() {
return vInfo.size() == 0;
}
Percobaan 9 : method private getVInfoIndex() untuk mencari vertex di map dan
mengembalikan indeks posisi dari vertex yang terdapat di vInfo.
private int getVInfoIndex(Object v)
{
// get the Integer value field of the vtxMap entry
Integer indexObj = vtxMap.get(v);
// if value is null, there is not entry in
// the map; return -1; otherwise, convert
// object to an int
if (indexObj == null)
Politeknik Elektronika Negeri Surabaya
224
return -1;
else
return indexObj;
}
Percobaan 10 : Method addEdge() untuk menambahkan edge(v1, v2) dengan bobot w.
public boolean addEdge(T v1, T v2, int w) {
int pos1 = getVInfoIndex(v1);
int pos2 = getVInfoIndex(v2);
// get VertexInfo objects for vertices v1 and v2
VertexInfo<T> vtxInfo1 = vInfo.get(pos1), vtxInfo2 =
vInfo.get(pos2);
Edge e = new Edge(pos2, w);
boolean returnValue = true;
// try to add an Edge reference v1-v2.
// if it already exists, just return
if (!vtxInfo1.edgeList.contains(e)) {
vtxInfo1.edgeList.add(e);
// increment inDegree for vertex v2 and number of edges
vtxInfo2.inDegree++;
vtxInfo1.outDegree++;
//numEdges++;
} else {
returnValue = false;
}
return returnValue;
}
E. LATIHAN
Latihan 1 : Buatlah method readGraph() untuk membaca Graph pada gambar 15 yang
tersimpan di file *.txt dengan contoh nama file samplegraph.txt
static DiGraph<String> readGraph(String namaFile) throws IOException {}
Gambar 29.16 Contoh Graph
Nama File samplegraph.txt
5 // data for the vertices
A B C D E
6 // data for the edges
Politeknik Elektronika Negeri Surabaya
225
A B 3
A C 2
B C 6
C B 4
C D 1
E B 5
Dengan format file inputan adalah sebagai berikut:
Jumlah vertex N
Vertex1 Vertex2 Vertex3 … VertexN
Jumlah Edge M
Source1 Destination1 Weight1
Source2 Destination2 Weight2
. . .
SourceM DestinationM WeightM
Cara penggunaan method readGraph() adalah sebagai berikut :
DiGraph g = DiGraph.readGraph("samplegraph.dat");
// display the graph
System.out.println(g)
Output dari pembacaan Graph adalah sebagai berikut :
Output:
A: in-degree 0 out-degree 2
Edges: B(3) C(2)
B: in-degree 3 out-degree 1
Edges: C(6)
C: in-degree 2 out-degree 2
Edges: B(4) D(1)
D: in-degree 1 out-degree 0
Edges:
E: in-degree 0 out-degree 1
Edges: B(5)
Latihan 2 : Lengkapi method-method pada class DiGraph seperti UML di bawah ini.
Tabel 29.2 Method pada class DiGraph
Method Kegunaan
- public String toString() Representasi Graph dalam bentuk String
- public boolean addVertex(T v) Menambahkan vertex pada Graph
- public boolean containsEdge(T
v1, T v2)
Untuk mengecek apakah pada Graph memiliki edge dari Vertex
v1 ke Vertex v2. Mengembalikan nilai true jika terdapat edge dari
vertex v1 ke vertex v2 dan sebaliknya.
- public int numberOfVertices() Untuk mengetahui jumlah dari Vertex
- public Set<T> vertexSet() Himpunan dari Vertex
- public int inDegree(T v) Untuk mendapat jumlah edge yang masuk ke Vertex tertentu
- public int outDegree(T v) Untuk mendapat jumlah edge yang keluar dari Vertex tertentu
Politeknik Elektronika Negeri Surabaya
226
Selanjutnya ujilah method-method yang sudah diimplementasikan dengan program berikut:
public class TestGraph1 {
public static void main(String[] args)
throws FileNotFoundException, IOException {
// construct graph with vertices of type
// String by reading from the file "graphIO.dat"
DiGraph<String> g = DiGraph.readGraph("graphIO.txt");
System.out.println(g.toString());
Set<String> vtxSet;
// output number of vertices and edges
System.out.println("Number of vertices: " + g.numberOfVertices());
System.out.println("Number of edges: "+ g.numberOfEdges());
// properties relative to vertex A
System.out.println("ninDegree for A: " + g.inDegree("A"));
System.out.println("outDegree for A: "+ g.outDegree("A"));
System.out.println("ninDegree for B: "+ g.inDegree("B"));
System.out.println("outDegree for B: "+ g.outDegree("B"));
System.out.println("ninDegree for C: "+ g.inDegree("C"));
System.out.println("outDegree for C: "+ g.outDegree("C"));
System.out.println("ninDegree for D: "+ g.inDegree("D"));
System.out.println("outDegree for D: "+ g.outDegree("D"));
System.out.println("ninDegree for E: "+ g.inDegree("E"));
System.out.println("outDegree for E: "+ g.outDegree("E"));
// add vertex F
g.addVertex("F");
// add edge (F,D) with weight 3
g.addEdge("F", "D", 3);
System.out.println("Weight e(F,D): "+ g.getWeight("F", "D"));
System.out.println(g.toString());
// after all updates, output the graph
// and its properties
System.out.println("After all the graph updates");
System.out.println(g);
}
}
Latihan 3 : Studi kasus graph 1.
- Tentukan output pembacaan graph
- Tambahkan node E, dari node D ke node E dengan bobot 2, selanjutnya tampilkan
output graph.
Politeknik Elektronika Negeri Surabaya
227
Latihan 4 : Studi kasus graph 2
- Tentukan output pembacaan graph
- Tambahkan sebuah vertex H dengan link DH dengan bobot 3, tampilkan output graph
F. LAPORAN RESMI
Kerjakan hasil percobaan(D) dan latihan(E) di atas dan tambahkan analisa.

More Related Content

What's hot

BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....
BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....
BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....
dwiapriyani04
 
Pbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan intePbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan inte
Smkn-2 Pekanbaru
 
210105161 statika-bagian-dari-mekanika-teknik-pdf
210105161 statika-bagian-dari-mekanika-teknik-pdf210105161 statika-bagian-dari-mekanika-teknik-pdf
210105161 statika-bagian-dari-mekanika-teknik-pdf
Georgio Calvin Salomo
 
UML (Unified Modeling Language) - Rekayasa Perangkat Lunak
UML (Unified Modeling Language) - Rekayasa Perangkat LunakUML (Unified Modeling Language) - Rekayasa Perangkat Lunak
UML (Unified Modeling Language) - Rekayasa Perangkat Lunak
raissazivana
 
Aplikasi Pengelolaan Sablon T-shirt Berbasis Dekstop
Aplikasi Pengelolaan Sablon T-shirt Berbasis DekstopAplikasi Pengelolaan Sablon T-shirt Berbasis Dekstop
Aplikasi Pengelolaan Sablon T-shirt Berbasis Dekstop
Sham Octafian
 
8 metode activity on node
8  metode activity on node8  metode activity on node
8 metode activity on node
Simon Patabang
 
GELOMBANG TALI
GELOMBANG TALIGELOMBANG TALI
GELOMBANG TALI
Sudirman Bajo
 
Laporan praktikum 5 tetapan pegas
Laporan praktikum 5 tetapan pegasLaporan praktikum 5 tetapan pegas
Laporan praktikum 5 tetapan pegas
RadenRamadhanSyaidin
 
Materi imk aspek manusia
Materi imk aspek manusiaMateri imk aspek manusia
Materi imk aspek manusia
Kukuh Aji
 
Siklus krebs ppt
Siklus krebs pptSiklus krebs ppt
Siklus krebs ppt
Nova Ci Necis
 
materi-prototype-3.4-1.pptx
materi-prototype-3.4-1.pptxmateri-prototype-3.4-1.pptx
materi-prototype-3.4-1.pptx
AzaAkbar
 
Jenis tulisan dan kerangka karangan
Jenis tulisan dan kerangka karanganJenis tulisan dan kerangka karangan
Jenis tulisan dan kerangka karangan
Andina Aulia Rachma
 
Contoh Soal Manajemen Proyek
Contoh Soal Manajemen ProyekContoh Soal Manajemen Proyek
Contoh Soal Manajemen Proyek
kaern
 
Process improvement proposal PPT
Process improvement proposal PPTProcess improvement proposal PPT
Process improvement proposal PPT
Ogie Oktama
 
Ppt plagiat
Ppt plagiatPpt plagiat
Ppt plagiat
Annas Qolbi
 
Konsep dasar thread programming
Konsep dasar thread programmingKonsep dasar thread programming
Konsep dasar thread programming
cyberbebek
 
Pertemuan 9 mana. pers.perm independen
Pertemuan 9 mana. pers.perm independenPertemuan 9 mana. pers.perm independen
Pertemuan 9 mana. pers.perm independen
Center For Economic Policy Institute (CEPAT)
 
Makalah protein plasma
Makalah protein plasmaMakalah protein plasma
Makalah protein plasma
Sentra Komputer dan Foto Copy
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
rizki adam kurniawan
 
Pengembangan Paragraf
Pengembangan ParagrafPengembangan Paragraf
Pengembangan Paragraf
Nini Ibrahim01
 

What's hot (20)

BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....
BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....
BIOLOGI SMA_MA KLS.11_KM-MA (Modul Ajar)-Modul Ajar Biologi SMA Kelas 11 (8)....
 
Pbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan intePbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan inte
 
210105161 statika-bagian-dari-mekanika-teknik-pdf
210105161 statika-bagian-dari-mekanika-teknik-pdf210105161 statika-bagian-dari-mekanika-teknik-pdf
210105161 statika-bagian-dari-mekanika-teknik-pdf
 
UML (Unified Modeling Language) - Rekayasa Perangkat Lunak
UML (Unified Modeling Language) - Rekayasa Perangkat LunakUML (Unified Modeling Language) - Rekayasa Perangkat Lunak
UML (Unified Modeling Language) - Rekayasa Perangkat Lunak
 
Aplikasi Pengelolaan Sablon T-shirt Berbasis Dekstop
Aplikasi Pengelolaan Sablon T-shirt Berbasis DekstopAplikasi Pengelolaan Sablon T-shirt Berbasis Dekstop
Aplikasi Pengelolaan Sablon T-shirt Berbasis Dekstop
 
8 metode activity on node
8  metode activity on node8  metode activity on node
8 metode activity on node
 
GELOMBANG TALI
GELOMBANG TALIGELOMBANG TALI
GELOMBANG TALI
 
Laporan praktikum 5 tetapan pegas
Laporan praktikum 5 tetapan pegasLaporan praktikum 5 tetapan pegas
Laporan praktikum 5 tetapan pegas
 
Materi imk aspek manusia
Materi imk aspek manusiaMateri imk aspek manusia
Materi imk aspek manusia
 
Siklus krebs ppt
Siklus krebs pptSiklus krebs ppt
Siklus krebs ppt
 
materi-prototype-3.4-1.pptx
materi-prototype-3.4-1.pptxmateri-prototype-3.4-1.pptx
materi-prototype-3.4-1.pptx
 
Jenis tulisan dan kerangka karangan
Jenis tulisan dan kerangka karanganJenis tulisan dan kerangka karangan
Jenis tulisan dan kerangka karangan
 
Contoh Soal Manajemen Proyek
Contoh Soal Manajemen ProyekContoh Soal Manajemen Proyek
Contoh Soal Manajemen Proyek
 
Process improvement proposal PPT
Process improvement proposal PPTProcess improvement proposal PPT
Process improvement proposal PPT
 
Ppt plagiat
Ppt plagiatPpt plagiat
Ppt plagiat
 
Konsep dasar thread programming
Konsep dasar thread programmingKonsep dasar thread programming
Konsep dasar thread programming
 
Pertemuan 9 mana. pers.perm independen
Pertemuan 9 mana. pers.perm independenPertemuan 9 mana. pers.perm independen
Pertemuan 9 mana. pers.perm independen
 
Makalah protein plasma
Makalah protein plasmaMakalah protein plasma
Makalah protein plasma
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
 
Pengembangan Paragraf
Pengembangan ParagrafPengembangan Paragraf
Pengembangan Paragraf
 

Similar to Latihan Graph

Pengertian dan Representasi Graph
Pengertian dan Representasi GraphPengertian dan Representasi Graph
Pengertian dan Representasi Graph
Zaldy Eka Putra
 
Graph, Bidirect Graph, Terminologi Graph, Implementasi
Graph, Bidirect Graph, Terminologi Graph, ImplementasiGraph, Bidirect Graph, Terminologi Graph, Implementasi
Graph, Bidirect Graph, Terminologi Graph, Implementasi
budiman
 
T Istrukdat11
T Istrukdat11T Istrukdat11
T Istrukdat11
Anindita Martadipura
 
Graf 2
Graf 2Graf 2
13 graph2
13 graph213 graph2
13 graph2
Wandi Parlente
 
Graph
GraphGraph
Babiv Graf
Babiv GrafBabiv Graf
Babiv Graf
FadhlilHamdi
 
Matematika Diskrit graf
Matematika Diskrit grafMatematika Diskrit graf
Matematika Diskrit graf
Siti Khotijah
 
Makalah graph
Makalah graphMakalah graph
Makalah graph
roji muhidin
 
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
Marwan Musa
 
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
endah kurnia
 
Graph dalam Struktur Data
Graph dalam Struktur DataGraph dalam Struktur Data
Graph dalam Struktur Data
Made Aditya
 
Teori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptxTeori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptx
HafidzahPatel1
 
Teori graf
Teori grafTeori graf
Teori graf
syahrunfacrezy
 
Cara cepat menyelesaikan graf
Cara cepat menyelesaikan grafCara cepat menyelesaikan graf
Cara cepat menyelesaikan graf
Oka Ambalie
 
Cara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskritCara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskritOka Ambalie
 
Definisi Graph.ppt
Definisi Graph.pptDefinisi Graph.ppt
Definisi Graph.ppt
FahriHadami
 
Teori Graf - Mtk Diskrit
Teori Graf - Mtk DiskritTeori Graf - Mtk Diskrit
Teori Graf - Mtk DiskritIndah Wijayanti
 

Similar to Latihan Graph (20)

Pengertian dan Representasi Graph
Pengertian dan Representasi GraphPengertian dan Representasi Graph
Pengertian dan Representasi Graph
 
Graph, Bidirect Graph, Terminologi Graph, Implementasi
Graph, Bidirect Graph, Terminologi Graph, ImplementasiGraph, Bidirect Graph, Terminologi Graph, Implementasi
Graph, Bidirect Graph, Terminologi Graph, Implementasi
 
T Istrukdat11
T Istrukdat11T Istrukdat11
T Istrukdat11
 
Graf 2
Graf 2Graf 2
Graf 2
 
13 graph2
13 graph213 graph2
13 graph2
 
Graph
GraphGraph
Graph
 
Babiv Graf
Babiv GrafBabiv Graf
Babiv Graf
 
Pertemuan 14 ok
Pertemuan 14 okPertemuan 14 ok
Pertemuan 14 ok
 
Pertemuan 11 revisijan2013-mhs
Pertemuan 11 revisijan2013-mhsPertemuan 11 revisijan2013-mhs
Pertemuan 11 revisijan2013-mhs
 
Matematika Diskrit graf
Matematika Diskrit grafMatematika Diskrit graf
Matematika Diskrit graf
 
Makalah graph
Makalah graphMakalah graph
Makalah graph
 
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
 
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
 
Graph dalam Struktur Data
Graph dalam Struktur DataGraph dalam Struktur Data
Graph dalam Struktur Data
 
Teori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptxTeori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptx
 
Teori graf
Teori grafTeori graf
Teori graf
 
Cara cepat menyelesaikan graf
Cara cepat menyelesaikan grafCara cepat menyelesaikan graf
Cara cepat menyelesaikan graf
 
Cara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskritCara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskrit
 
Definisi Graph.ppt
Definisi Graph.pptDefinisi Graph.ppt
Definisi Graph.ppt
 
Teori Graf - Mtk Diskrit
Teori Graf - Mtk DiskritTeori Graf - Mtk Diskrit
Teori Graf - Mtk Diskrit
 

More from Fajar Baskoro

Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Fajar Baskoro
 
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdfPemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Fajar Baskoro
 
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptxSkills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Fajar Baskoro
 
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptxSlides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Fajar Baskoro
 
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptxPPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
Fajar Baskoro
 
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptxPPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
Fajar Baskoro
 
RIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptxRIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptx
Fajar Baskoro
 
Pengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSKPengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSK
Fajar Baskoro
 
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
Fajar Baskoro
 
Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptx
Fajar Baskoro
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarter
Fajar Baskoro
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
Fajar Baskoro
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUS
Fajar Baskoro
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Fajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Fajar Baskoro
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
Fajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptx
Fajar Baskoro
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptx
Fajar Baskoro
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi Kaltim
Fajar Baskoro
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolah
Fajar Baskoro
 

More from Fajar Baskoro (20)

Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
 
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdfPemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
 
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptxSkills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
 
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptxSlides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
 
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptxPPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
 
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptxPPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
 
RIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptxRIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptx
 
Pengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSKPengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSK
 
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
 
Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptx
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarter
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUS
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptx
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptx
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptx
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi Kaltim
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolah
 

Recently uploaded

Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdfAksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
DenysErlanders
 
Materi Feedback (umpan balik) kelas Psikologi Komunikasi
Materi Feedback (umpan balik) kelas Psikologi KomunikasiMateri Feedback (umpan balik) kelas Psikologi Komunikasi
Materi Feedback (umpan balik) kelas Psikologi Komunikasi
AdePutraTunggali
 
Modul Ajar PJOK Kelas 1 Fase A Kurikulum Merdeka
Modul Ajar PJOK Kelas 1 Fase A Kurikulum MerdekaModul Ajar PJOK Kelas 1 Fase A Kurikulum Merdeka
Modul Ajar PJOK Kelas 1 Fase A Kurikulum Merdeka
Fathan Emran
 
Panduan E_KSP SMK 2024 Program Kemendikbud SMK
Panduan E_KSP SMK 2024 Program Kemendikbud SMKPanduan E_KSP SMK 2024 Program Kemendikbud SMK
Panduan E_KSP SMK 2024 Program Kemendikbud SMK
PujiMaryati
 
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdfRANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
OswaldusDiwaDoka
 
Modul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum Merdeka
Fathan Emran
 
Bab 7Korupsi sebagai persoalan moral .pptx
Bab 7Korupsi sebagai persoalan moral  .pptxBab 7Korupsi sebagai persoalan moral  .pptx
Bab 7Korupsi sebagai persoalan moral .pptx
Habibatut Tijani
 
Projek Penguatan Profil Pelajar Pancasila SD.pdf.pdf
Projek Penguatan Profil Pelajar Pancasila SD.pdf.pdfProjek Penguatan Profil Pelajar Pancasila SD.pdf.pdf
Projek Penguatan Profil Pelajar Pancasila SD.pdf.pdf
anikdwihariyanti
 
Modul Ajar Biologi Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Biologi Kelas 10 Fase E Kurikulum MerdekaModul Ajar Biologi Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Biologi Kelas 10 Fase E Kurikulum Merdeka
Fathan Emran
 
Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024
Herry Prasetyo
 
5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx
5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx
5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx
StevanusOkiRudySusan
 
RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...
RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...
RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...
Kanaidi ken
 
Koneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan marthaKoneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan martha
johan199969
 
Tugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdf
Tugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdfTugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdf
Tugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdf
SafaAgrita1
 
Kalender Pendidikan tahun pelajaran 2023/2024 Kabupaten Temanggung .pdf
Kalender Pendidikan tahun pelajaran 2023/2024  Kabupaten Temanggung .pdfKalender Pendidikan tahun pelajaran 2023/2024  Kabupaten Temanggung .pdf
Kalender Pendidikan tahun pelajaran 2023/2024 Kabupaten Temanggung .pdf
SDNBotoputih
 
Modul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum MerdekaModul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum Merdeka
Fathan Emran
 
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.pptKIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
WAYANDARSANA1
 
Raport sekolah dasar Kelulusan 2024.docx
Raport sekolah dasar Kelulusan 2024.docxRaport sekolah dasar Kelulusan 2024.docx
Raport sekolah dasar Kelulusan 2024.docx
MuhammadAminullah32
 
PPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptx
PPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptxPPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptx
PPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptx
SriKuntjoro1
 
Biografi Presiden Republik Indonesia.pdf
Biografi Presiden Republik Indonesia.pdfBiografi Presiden Republik Indonesia.pdf
Biografi Presiden Republik Indonesia.pdf
pristayulianabila
 

Recently uploaded (20)

Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdfAksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
Aksi Nyata Buku Non Teks Bermutu Dan Manfaatnya .pdf
 
Materi Feedback (umpan balik) kelas Psikologi Komunikasi
Materi Feedback (umpan balik) kelas Psikologi KomunikasiMateri Feedback (umpan balik) kelas Psikologi Komunikasi
Materi Feedback (umpan balik) kelas Psikologi Komunikasi
 
Modul Ajar PJOK Kelas 1 Fase A Kurikulum Merdeka
Modul Ajar PJOK Kelas 1 Fase A Kurikulum MerdekaModul Ajar PJOK Kelas 1 Fase A Kurikulum Merdeka
Modul Ajar PJOK Kelas 1 Fase A Kurikulum Merdeka
 
Panduan E_KSP SMK 2024 Program Kemendikbud SMK
Panduan E_KSP SMK 2024 Program Kemendikbud SMKPanduan E_KSP SMK 2024 Program Kemendikbud SMK
Panduan E_KSP SMK 2024 Program Kemendikbud SMK
 
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdfRANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
 
Modul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 11 Fase F Kurikulum Merdeka
 
Bab 7Korupsi sebagai persoalan moral .pptx
Bab 7Korupsi sebagai persoalan moral  .pptxBab 7Korupsi sebagai persoalan moral  .pptx
Bab 7Korupsi sebagai persoalan moral .pptx
 
Projek Penguatan Profil Pelajar Pancasila SD.pdf.pdf
Projek Penguatan Profil Pelajar Pancasila SD.pdf.pdfProjek Penguatan Profil Pelajar Pancasila SD.pdf.pdf
Projek Penguatan Profil Pelajar Pancasila SD.pdf.pdf
 
Modul Ajar Biologi Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Biologi Kelas 10 Fase E Kurikulum MerdekaModul Ajar Biologi Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Biologi Kelas 10 Fase E Kurikulum Merdeka
 
Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024Modul AJar Rekayasa Perangkat Lunak 2024
Modul AJar Rekayasa Perangkat Lunak 2024
 
5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx
5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx
5. Rangkuman Kehadiran Guru di Kelas_SDN 8n Kranji.docx
 
RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...
RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...
RENCANA + Link2 Materi BimTek _"Ketentuan TERBARU_PTK 007 Rev-5 Tahun 2023 & ...
 
Koneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan marthaKoneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan martha
 
Tugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdf
Tugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdfTugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdf
Tugas 3.1_BAB II_Kelompok 2 Tahap Inquiry .pdf
 
Kalender Pendidikan tahun pelajaran 2023/2024 Kabupaten Temanggung .pdf
Kalender Pendidikan tahun pelajaran 2023/2024  Kabupaten Temanggung .pdfKalender Pendidikan tahun pelajaran 2023/2024  Kabupaten Temanggung .pdf
Kalender Pendidikan tahun pelajaran 2023/2024 Kabupaten Temanggung .pdf
 
Modul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum MerdekaModul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Indonesia Kelas 10 Fase E Kurikulum Merdeka
 
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.pptKIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
KIAN karya ilmiah akhir ners keperawatan medikal bedah.ppt
 
Raport sekolah dasar Kelulusan 2024.docx
Raport sekolah dasar Kelulusan 2024.docxRaport sekolah dasar Kelulusan 2024.docx
Raport sekolah dasar Kelulusan 2024.docx
 
PPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptx
PPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptxPPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptx
PPT KRITERIA KENAIKAN KELAS & KELULUSAN.pptx
 
Biografi Presiden Republik Indonesia.pdf
Biografi Presiden Republik Indonesia.pdfBiografi Presiden Republik Indonesia.pdf
Biografi Presiden Republik Indonesia.pdf
 

Latihan Graph

  • 1. Politeknik Elektronika Negeri Surabaya 210 P PR RA AK KT TI IK KU UM M 2 29 9 G GR RA AP PH H 1 1 A. TUJUAN PEMBELAJARAN 1. Memahami mengenai Konsep Graph dan istilah-istilah yang terdapat pada Graph 2. Memahami implementasi Graph ke dalam bahasa pemrograman java B. DASAR TEORI B.1 KONSEP GRAPH Sebuah graph G=<V,E> terdiri dari sekumpulan titik (vertices) V dan sekumpulan garis (edges) E. Sebuah garis e = (u,v) menghubungkan dua titik u dan v. Self – loop adalah garis yang menghubungkan ke titik itu sendiri. Vertices = {v1, v2, v3, …, vm} Edges = {e1, e2, e3, …, en} Dua titik u, v dikatakan adjacent to u, jika u dan v dihubungkan dengan garis. Path antara dua titik v dan w adalah sekumpulan garis yang menghubungkan titik v ke titik w. Panjang path adalah jumlah garis dalam path. Graph dikatakan connected/terhubung jika ada sebuah path yang menghubungkan sembarang dua titik berbeda. Complete graph adalah graph yang terhubung (connected graph) dan setiap pasang titik dihubungkan dengan garis. Digraph disebut strongly connected jika ada sebuah path dari sembarang titik ke semua titik. Digraph disebut weakly conneted jika titik u dan v jika terdapat path (u,v) atau path(v,u). Gambar 29.1 (a) Graph Connected (b) Disconnected (c) Complete
  • 2. Politeknik Elektronika Negeri Surabaya 211 Gambar 29.2 (a) Graph Weakly Connected (b) Strongly Connected (c) Weakly Connected Pada graph berarah (directed graph/digraph), setiap garis mempunyai arah dari u ke v dan dituliskan sebagai pasangan <u,v> atau u->v. Pada graph tak berarah (undirected graph), garis tidak mempunyai arah dan dituliskan sebagai pasangan {u,v} atau u<->v. Graph tak berarah merupakan graph berarah jika setiap garis tak berarah {u,v} merupakan dua garis berarah <u,v> dan <v,u>. Gambar 29.3 Contoh Graph Digraph Jumlah edge yang keluar dari titik/vertex v tersebut adalah out-degree dari vertex v. Jumlah edge yan masuk di vertex v adalah in-degree vertex v. 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 garis.
  • 3. Politeknik Elektronika Negeri Surabaya 212 Gambar 29.4 Contoh penggunaan Graph Graph banyak digunakan untuk menggambarkan jaringan dan peta jalan, jalan kereta api, lintasan pesawat, system perpipaan, saluran telepon, koneksi elektrik, ketergantungan diantara task pada sistem manufaktur dan lain-lain. Terdapat banyak hasil dan struktur penting yang didapatkan dari perhitungan dengan graph. GRAPH DENGAN MATRIK ADJACENCY Sebuah graph G= dapat direpresentasikan dengan matrik adjacency A sebagai |V|*|V|. Jika G berarah, Aij = 1 jika dan hanya jika <vi, vj> berada pada E. Terdapat paling banyak |V|2 garis pada E. Gambar 29.5 Graph berarah Matriks adjacency dari Graph berarah adalah sebagai berikut : 1 2 3 4 5 6 1 1 2 1 3 1 4 1 1 1 5 1 1 1 6 1 Jika G adalah graph tak berarah, Aij=Aji=1 jika {vi,vj} berada pada E dan Aij=Aji=false apabila G adalah graph berarah.
  • 4. Politeknik Elektronika Negeri Surabaya 213 Gambar 29.6 Graph tak berarah Matriks adjacency dari Graph berarah adalah sebagai berikut : 1 2 3 4 5 6 1 1 1 1 2 1 1 1 1 3 1 1 4 1 1 1 1 5 1 1 1 6 1 1 Pada graph tak berarah, matriks adjacency dapat berupa matriks segitiga atas sebagai berikut : 1 2 3 4 5 6 1 1 1 1 2 1 1 1 3 1 4 1 5 1 6 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 garis. Pembobot biasanya disebut panjang garis, khususnya jika graph menggambarkan peta. Pembobot atau panjang dari suatu jalur atau siklus merupakan penjumlahan pembobot atau panjang dari komponen garis.
  • 5. Politeknik Elektronika Negeri Surabaya 214 Gambar 29.7 Graph berarah dengan pembobot Matriks adjacency dari graph dengan pembobot dapat digunakan untuk menyimpan pembobot dari setiap garis. Jika garis kehilangan nilai, kemungkinan nilai negative, nol atau bilangan besar menunjukkan nilai yang tak terbatas (infinity). Matriks adjacency pada graph berarah dengan pembobot adalah sebagai berikut : 1 2 3 4 5 6 1 4 2 4 3 3 4 3 2 3 5 4 5 1 6 5 Gambar 29.8 Graph tak berarah dengan pembobot Matriks adjacency pada graph tak berarah dengan pembobot adalah sebagai berikut : 1 2 3 4 5 6 1 4 3 5 2 4 3 4 4 3 3 2 4 3 4 2 3 5 4 3 1 6 5 1
  • 6. Politeknik Elektronika Negeri Surabaya 215 Atau berupa matriks segitiga atas sebagai berikut : 1 2 3 4 5 6 1 4 3 5 2 3 4 4 3 2 4 3 5 1 6 B.2 IMPLEMENTASI GRAPH INTERFACE GRAPH Interface Graph berisi method-method dasar dari graph. Tabel 29.1 Interface Graph Interface Graph boolean addEdge(T v1, T v2, int w) Jika edge (v1,v2) belum terdapat pada graph, tambahkan edge dengan bobot w dan mengembalikan nilai true. Jika edge(v1,v2) sudah ada maka mengembalikan nilai false. Jika v1 dan v2 bukan merupakan vertex di graph maka throws IIlegalArgumentException. boolean addVertex(T v) Jika vertex v tidak terdapat pada graph maka tambahkan pada graph dan mengembalikan nilai true. Jika vertex v sudah ada maka mengembalikan nilai false. void clear() Menghapus semua vertex dan edge pada graph boolean containsEdge(T v1, T v2) Mengembalikan nilai true jika terdapat sebuah edge dari v1 dan v2 di graph dan mengembalikan nilai false jika sebaliknya. Jika v1 atau v2 bukan merupakan vertex pada graph maka throws IIlegalArgumentException. boolean containsVertex(Object v) Mengembalikan nilai true jika v adalah vertex pada Graph dan mengembalikan nilai false jika v bukan merupakan vertex pada Graph Set<T> getNeighbors(T v) Mengembalikan vertex-vertex yang terhubung dengan vertex v, dan vertex-vertex tersebut disimpan dalam object S. Jika v bukan merupakan vertex pada graph maka throws IIlegalArgumentException. int getWeight(T v1, T v2) Mengembalikan bobot dari edge yang menghubungkan
  • 7. Politeknik Elektronika Negeri Surabaya 216 vertex v1 dan v2, jika edge (v1,v2) tidak ada maka mengembalikan nilai -1. Jika v1 atau v2 bukan merupakan vertex pada graph maka throws IIlegalArgumentException. boolean isEmpty() Mengembalikan nilai true jika graph sama sekali tidak mempunyai vertex dan mengembalikan nilai false jika memiliki minimal 1 buah vertex. int numberOfEdges() Mengembalikan jumlah edge pada graph. int numberOfVertices() Mengembalikan jumlah vertex pada graph. boolean removeEdge() Jika (v1,v2) merupakan edge, menghapus edge tersebut dan mengembalikan nilai true dan mengembalikan nilai false jika sebaliknya. Jika v1 atau v2 bukan merupakan vertex pada graph maka throws IIlegalArgumentException. boolean removeVertex(Object v) Jika v adalah vertex pada graph, menghapus vertex v dari graph dan mengembalikan nilai true, dan mengembalikan nilai false jika sebaliknya. int setWeight(T v1, T v2, int w) Jika edge (v1, v2) terdapat pada graph, ubah bobot edge dan mengembalikan bobot sebelumnya jika tidak mengembalikan nilai false. Jika v1 atau v2 bukan vertex di graph, maka throws IIlegalArgumentException. Set<T> vertexSet() Mengembalikan vertex-vertex yang terdapat pada Graph disimpan dalam object Set. CLASS DIGRAPH Class DiGraph merupakan implementasi dari interface Graph dan ada beberapa method tambahan yang berguna dalam aplikasi ini : Constructor : membuat graph kosong inDegree() : untuk menghitung jumlah inDegree dari vertex v. outDegree() : untuk menghitung jumlah outDegree dari vertex v. static readGraph() : untuk membangun graph dari inputan file.
  • 8. Politeknik Elektronika Negeri Surabaya 217 Gambar 29.9 Contoh Graph DiGraph File samplegraph.dat 5 // data for the vertices A B C D E 6 // data for the edges A B 3 A C 2 B C 6 C B 4 C D 1 E B 5 // input vertices, edges, and weights from samplegraph.dat DiGraph g = DiGraph.readGraph("samplegraph.dat"); // display the graph System.out.println(g) Output: A: in-degree 0 out-degree 2 Edges: B(3) C(2) B: in-degree 3 out-degree 1 Edges: C(6) C: in-degree 2 out-degree 2 Edges: B(4) D(1) D: in-degree 1 out-degree 0 Edges: E: in-degree 0 out-degree 1 Edges: B(5) REPRESENTASI ADJACENCY Sebuah graph G= dapat direpresentasikan dengan matrik adjacency. Berikut adalah graph beserta matrik adjancency. Gambar 29.10 Graph dan Matrik Adjacency
  • 9. Politeknik Elektronika Negeri Surabaya 218 Bentuk lain dari matrik adjacency adalah sebagai berikut : Sebagai contoh vertex A memiliki keterhubungan dengan vertex B dengan bobot 1 dan vertex C dengan bobot 1. Gambar 29.11 Graph 1 dan List Adjacency Sebagai contoh vertex A memiliki keterhubungan dengan vertex B dengan bobot 4, vertex C dengan bobot 7 dan vertex D dengan bobot 6. Gambar 29.12 Graph 2 dan List Adjacency REPRESENTASI EDGE Class Edge merupakan representasi edge yang menghubungkan vertex u dan vertex v pada Graph. class Edge { // index of the destination vertex in the ArrayList // vInfo of vertex properties public int dest; // weight of this edge public int weight; public Edge(int dest, int weight) { this.dest = dest; this.weight = weight; } public boolean equals(Object obj) {
  • 10. Politeknik Elektronika Negeri Surabaya 219 return ((Edge)obj).dest == this.dest; } } REPRESENTASI INFORMASI VERTEX Class VertexInfo merepresentasikan sebuah vertex v beserta informasinya yaitu • vertex : Nama vertex • edgeList : Vertex-vertex yang terhubung dengan vertex v • inDegree : Jumlah inDegree • outDegree : Jumlah outDegree Gambar 29.13 Cara penyimpanan vertex dalam object VertexInfo import java.util.LinkedList; public class VertexInfo<T> { public T vertex ; public LinkedList<Edge> edgeList ; public int inDegree ; public int outDegree; public VertexInfo(T v) { vertex = v ; edgeList = new LinkedList<Edge>() ; inDegree = 0 ; outDegree = 0; } public boolean equals(Object obj) { VertexInfo<T> vertex2 = (VertexInfo<T>) obj ; return this.vertex.equals(vertex2.vertex); } } VERTEX MAP vtxMap DAN ARRAYLIST VertexInfo VERTEX vtxMap terdiri dari data yang berpasangan(key-value) sebagai key adalah Vertex dan sebagai value adalah index pada ArrayList VertexInfo
  • 11. Politeknik Elektronika Negeri Surabaya 220 Gambar 29.14 Keterkaitan HashMap vtxMap dan ArrayList vInfo Di bawah ini terdapat Graph, beserta data yang tersimpan di vtxMap dan ArrayList VertexInfo. Gambar 29.15 Graph, beserta data yang tersimpan di vtxMap dan ArrayList vInfo. C. TUGAS PENDAHULUAN Jelaskan mengenai Graph di bawah ini : • Kegunaan Graph • Vertex • Edge • Path • Connected dan Disconnected • Complete Graph • Undirected Graph dan DiGraph • StronglyConnected dan Weakly Connected
  • 12. Politeknik Elektronika Negeri Surabaya 221 D. PERCOBAAN Untuk mengimplementasikan Graph, maka perlu dibuat : • Interface GRAPH • Class VertexInfo : merepresentasikan sebuah vertex pada Graph • Class Edge : merepresentasikan sebuah edge/link pada Graph • Class DiGraph : merepresentasikan Directed Graph/ DiGraph • Class TestGraph : menguji method-method yang terdapat pada class DiGraph Gambar 29.15 Diagram UML Implementasi Graph Percobaan 1 : Interface Graph. Sebelum membuat Graph, terlebih dahulu membuat Interface Graph, karena class DiGraph mengimplementasikan interface Graph. public interface GRAPH<T> { boolean addEdge(T vi, T v2, int w); boolean addVertex(T v); void clear(); boolean containsEdge(T vi, T v2); boolean containsVertex(Object v); Set<T> getNeighbors(T v); int getWeight(T vi, T v2); boolean isEmtpty(); int numberOfEdges(); int numberOfVertices(); boolean removeEdge(T vi, T v2); void setWeight(T vi, T v2, int w); Set<T> vertexSet(); }
  • 13. Politeknik Elektronika Negeri Surabaya 222 Percobaan 2 : Class VertexInfo merepresentasikan object vertex beserta informasinya. import java.util.LinkedList; public class VertexInfo<T> { public T vertex ; public LinkedList<Edge> edgeList ; public int inDegree ; public int outDegree; public VertexInfo(T v) { vertex = v ; edgeList = new LinkedList<Edge>() ; inDegree = 0 ; outDegree = 0; } public boolean equals(Object obj) { VertexInfo<T> vertex2 = (VertexInfo<T>) obj ; return this.vertex.equals(vertex2.vertex); } } Percobaan 3 : Class Edge representasi dari sebuah edge pada Graph class Edge { // index of the destination vertex in the ArrayList // vInfo of vertex properties public int dest; // weight of this edge public int weight; public Edge(int dest, int weight) { this.dest = dest; this.weight = weight; } public boolean equals(Object obj) { return ((Edge)obj).dest == this.dest; } } Buatlah Class DiGraph, seperti gambar UML diatas. Praktikum 4 – 10 merupakan method-method yang terdapat pada Class DiGraph Percobaan 4 : Konstruktor class DiGraph. public DiGraph() { vtxMap = new HashMap<T, Integer>(); vInfo = new ArrayList<VertexInfo<T>>(); }
  • 14. Politeknik Elektronika Negeri Surabaya 223 Percobaan 5 : Method numberOfEdges() untuk mengetahui jumlah edge. public int numberOfEdges() { int n = 0; ListIterator it = vInfo.listIterator(); while (it.hasNext()) { VertexInfo<T> v = (VertexInfo<T>) it.next(); n = n + v.edgeList.size(); } return n; } Percobaan 6 : Method containsVertex() untuk mengetahui ada/tidak sebuah object vertex dalam ArrayList vInfo. public boolean containsVertex(Object v) { return vInfo.contains(v); } Percobaan 7 : Method numberOfVertices() untuk mengetahui jumlah vertex pada Graph. public int numberOfVertices() { return vInfo.size(); } Percobaan 8 : Method isEmpty() untuk mengetahui apakah sebuah Graph kosong atau tidak. public boolean isEmtpty() { return vInfo.size() == 0; } Percobaan 9 : method private getVInfoIndex() untuk mencari vertex di map dan mengembalikan indeks posisi dari vertex yang terdapat di vInfo. private int getVInfoIndex(Object v) { // get the Integer value field of the vtxMap entry Integer indexObj = vtxMap.get(v); // if value is null, there is not entry in // the map; return -1; otherwise, convert // object to an int if (indexObj == null)
  • 15. Politeknik Elektronika Negeri Surabaya 224 return -1; else return indexObj; } Percobaan 10 : Method addEdge() untuk menambahkan edge(v1, v2) dengan bobot w. public boolean addEdge(T v1, T v2, int w) { int pos1 = getVInfoIndex(v1); int pos2 = getVInfoIndex(v2); // get VertexInfo objects for vertices v1 and v2 VertexInfo<T> vtxInfo1 = vInfo.get(pos1), vtxInfo2 = vInfo.get(pos2); Edge e = new Edge(pos2, w); boolean returnValue = true; // try to add an Edge reference v1-v2. // if it already exists, just return if (!vtxInfo1.edgeList.contains(e)) { vtxInfo1.edgeList.add(e); // increment inDegree for vertex v2 and number of edges vtxInfo2.inDegree++; vtxInfo1.outDegree++; //numEdges++; } else { returnValue = false; } return returnValue; } E. LATIHAN Latihan 1 : Buatlah method readGraph() untuk membaca Graph pada gambar 15 yang tersimpan di file *.txt dengan contoh nama file samplegraph.txt static DiGraph<String> readGraph(String namaFile) throws IOException {} Gambar 29.16 Contoh Graph Nama File samplegraph.txt 5 // data for the vertices A B C D E 6 // data for the edges
  • 16. Politeknik Elektronika Negeri Surabaya 225 A B 3 A C 2 B C 6 C B 4 C D 1 E B 5 Dengan format file inputan adalah sebagai berikut: Jumlah vertex N Vertex1 Vertex2 Vertex3 … VertexN Jumlah Edge M Source1 Destination1 Weight1 Source2 Destination2 Weight2 . . . SourceM DestinationM WeightM Cara penggunaan method readGraph() adalah sebagai berikut : DiGraph g = DiGraph.readGraph("samplegraph.dat"); // display the graph System.out.println(g) Output dari pembacaan Graph adalah sebagai berikut : Output: A: in-degree 0 out-degree 2 Edges: B(3) C(2) B: in-degree 3 out-degree 1 Edges: C(6) C: in-degree 2 out-degree 2 Edges: B(4) D(1) D: in-degree 1 out-degree 0 Edges: E: in-degree 0 out-degree 1 Edges: B(5) Latihan 2 : Lengkapi method-method pada class DiGraph seperti UML di bawah ini. Tabel 29.2 Method pada class DiGraph Method Kegunaan - public String toString() Representasi Graph dalam bentuk String - public boolean addVertex(T v) Menambahkan vertex pada Graph - public boolean containsEdge(T v1, T v2) Untuk mengecek apakah pada Graph memiliki edge dari Vertex v1 ke Vertex v2. Mengembalikan nilai true jika terdapat edge dari vertex v1 ke vertex v2 dan sebaliknya. - public int numberOfVertices() Untuk mengetahui jumlah dari Vertex - public Set<T> vertexSet() Himpunan dari Vertex - public int inDegree(T v) Untuk mendapat jumlah edge yang masuk ke Vertex tertentu - public int outDegree(T v) Untuk mendapat jumlah edge yang keluar dari Vertex tertentu
  • 17. Politeknik Elektronika Negeri Surabaya 226 Selanjutnya ujilah method-method yang sudah diimplementasikan dengan program berikut: public class TestGraph1 { public static void main(String[] args) throws FileNotFoundException, IOException { // construct graph with vertices of type // String by reading from the file "graphIO.dat" DiGraph<String> g = DiGraph.readGraph("graphIO.txt"); System.out.println(g.toString()); Set<String> vtxSet; // output number of vertices and edges System.out.println("Number of vertices: " + g.numberOfVertices()); System.out.println("Number of edges: "+ g.numberOfEdges()); // properties relative to vertex A System.out.println("ninDegree for A: " + g.inDegree("A")); System.out.println("outDegree for A: "+ g.outDegree("A")); System.out.println("ninDegree for B: "+ g.inDegree("B")); System.out.println("outDegree for B: "+ g.outDegree("B")); System.out.println("ninDegree for C: "+ g.inDegree("C")); System.out.println("outDegree for C: "+ g.outDegree("C")); System.out.println("ninDegree for D: "+ g.inDegree("D")); System.out.println("outDegree for D: "+ g.outDegree("D")); System.out.println("ninDegree for E: "+ g.inDegree("E")); System.out.println("outDegree for E: "+ g.outDegree("E")); // add vertex F g.addVertex("F"); // add edge (F,D) with weight 3 g.addEdge("F", "D", 3); System.out.println("Weight e(F,D): "+ g.getWeight("F", "D")); System.out.println(g.toString()); // after all updates, output the graph // and its properties System.out.println("After all the graph updates"); System.out.println(g); } } Latihan 3 : Studi kasus graph 1. - Tentukan output pembacaan graph - Tambahkan node E, dari node D ke node E dengan bobot 2, selanjutnya tampilkan output graph.
  • 18. Politeknik Elektronika Negeri Surabaya 227 Latihan 4 : Studi kasus graph 2 - Tentukan output pembacaan graph - Tambahkan sebuah vertex H dengan link DH dengan bobot 3, tampilkan output graph F. LAPORAN RESMI Kerjakan hasil percobaan(D) dan latihan(E) di atas dan tambahkan analisa.