Anda di halaman 1dari 7

MAKALAH GRAPH

Disusun oleh

FERDLIAN WAKHID MUSTAKIM


5160411354

PROGRAM STUDI INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI DAN ELEKTRO
UNIVERSITAS TEKNOLOGI YOGYAKARTA
2019
A. DEFINISI

1. Definisi Graph adalah himpunan benda – benda yang disebut verteks (atau node)
yang terhubung oleh sisi (atau edge).
2. Definisi Graph Berarah adalah graph yang sisi-sisinyadiberikan orientasi arah.

B. KONSEP DAN JENIS GRAPH


1. Konsep Graph
Telah diketahui bersama, secara umum terdapat 3 (tiga) komponen graf, yaitu; (1) titik
(vertices) atau noktah yang merepresentasikan objek pada suatu graf, (2) sisi (edge)
yaitu garis yang menunjukan menunjukan keterhubungan antar titik titik tersebut, dan
(3) loop atau sebuah sisi yang menghubungkan titik pada dirinya sendiri.

2. Jenis Graph
Adapun beberap jenis graph yaitu sebagai berikut:
1. Graph kosong
Graph kosong yaitu graph yang himpunan sisinya merupakan himpunan kosong
atau tidak mempunyai sisi.
2. Graph berbobot
Graph yang setiap sisinya diberikan suatu bobot dinamakan dengan graph
berbobot
3. Graph sederhana (simple grafh).
Graph yang tidak mengandung loop maupun sisi ganda dinamakan graph
sederhana.
4. Graph sederhana.
Graph yang tidak mengandung atau tidak memiliki sisi ganda atauloop (gelung).
5. Graph tak-berarah (undirected graph).
Graph yang sisinya tidak mempunyai orientasi arah disebut graphtak berarah.
6. Graph berarah (directed graph).
Graph berarah (directed graph) adalah graph yang sisi-sisinyadiberikan orientasi
arah.
C. Cara Mendiskripsikan Graph ke bahasa pemrogaman
Berikut adalah beberapa contoh syntax untuk implementasi graph ;
- Deklarasi
public class AdjacencyMatriksGraph {
private final int MAX_VERTS = 20;
private Vertex vertexList[];
private int adjMat[][];
private int nVerts;
private StackX theStack;
private Queue theQueue;

- Inisialisasi
public AdjacencyMatriksGraph() // constructor
{
vertexList = new Vertex[MAX_VERTS];
// adjacency matrix
adjMat = new int[MAX_VERTS][MAX_VERTS];
nVerts = 0;
for(int j=0; j<MAX_VERTS; j++) // set adjacency
for(int k=0; k<MAX_VERTS; k++) // matrix to 0
adjMat[j][k] = 0;
theStack = new StackX();
theQueue = new Queue();
}

- Tambah Edge
public void addEdge(intstart, intend)
{
adjMat[start][end] = 1;
adjMat[end][start] = 1;
}
D. Graph Traversal,path terpendek dan spaining tree
1. GraphTraversal : Mengunjungi tiap simpul/nodesecara sistematik.
Metode :
 DFS(DepthFirst Search) : Pencarian Mendalam
Pada setiap pencabangan, penelusuran verteks-verteks yang belum dikunjungi
dilakukan secara lengkap pada pencabangan pertama, kemudian
selengkapnya pada pencabangan kedua, dan seterusnya secara rekursif.

Urutan verteks hasil penelusuran : ABFHCDGIE

- Contoh implementasi DFS bahasa pemrogaman;


public void dfs() // depth-first search
{ // begin at vertex 0
vertexList[0].wasVisited = true; // mark it
displayVertex(0); // display it
theStack.push(0); // push it
while( !theStack.isEmpty() ) // until stack empty,
{
int v = getAdjUnvisitedVertex( theStack.peek() );
if(v == -1) // if no such vertex,
theStack.pop();
else // if it exists,
{
vertexList[v].wasVisited = true;
displayVertex(v); // display it
theStack.push(v); // push it
}
} // end while
for(int j=0; j<nVerts; j++) // reset flags
vertexList[j].wasVisited = false;

 BFS(BreadthFirst Search) : Pencarian Melebar


Langkah-langkah algoritma BFS;
1. Masukkan simpul ujung (akar) kedalam antrian.
2. Ambil simpul dari awal antrian, lalu cek apakah simpul merupakan solusi
3. Jika simpul merupakan solusi, pencarian selesai dan hasil dikembalikan.
4. Jika simpul bukan solusi,masukkan seluruh simpul yang bertetangga dengan
simpul tersebut (simpulanak) kedalam antrian
5. Jika antrian kosong dan setiap simpul sudah dicek, pencarian selesai dan
mengembalikan hasil solusi tidak ditemukan
6. Ulangi pencarian dari langkah kedua
CONTOH ;

Gambar (a) BFS(1): 1, 2, 3, 4, 5, 6, 7, 1.


Gambar (b) BFS(1): 1, 2, 3, 4, 5, 6, 7, 1
Gambar (c) BFS(1): 1, 2, 3, 4, 5, 6, 7, 8, 9
- Contoh implementasi BFS bahasa pemrogaman;
public void bfs() // breadth-first search
{ // begin at vertex 0
vertexList[0].wasVisited = true; // mark it
displayVertex(0); // display it
theQueue.insert(0); // insert at tail
int v2;
while( !theQueue.isEmpty() )
{
int v1 = theQueue.remove();
// until it has no unvisited neighbors
while( (v2=getAdjUnvisitedVertex(v1)) != -1 )
{ // get one,
vertexList[v2].wasVisited = true; // mark it
displayVertex(v2); // display it
theQueue.insert(v2); // insert it
} // end while
} // end while(queue not empty)
// queue is empty, so we're done
for(int j=0; j<nVerts; j++) // reset flags
vertexList[j].wasVisited = false;
}

3. Path terpendek
merupakan lintasan minumum yang diperlukan untuk mencapai
suatu titik dari titik tertentu (Pawitri, 2007) disebutkan bahwa. Dalam permasalahan
pencarian lintasan terpendek, seorang pengarah jalan ingin menentukan lintasan
terpendek antara dua tempat berdasarkan rute alternatif yang tersedia, dimana tempat
tujuan hanya satu (Purba, 2011). Pencarian lintasan terpendek ini sendiri diperlukan
untuk mengurangi waktu dan biaya (cost) yang dikeluarkan untuk menempuh jarak
menuju suatu tempat.
Lintasan ini merupakan bagian dari graf. Pencarian lintasan terpendek termasuk
dalam salah satu persoalan dalam teori graf yang berarti meminimalisasi bobot suatu
lintasan dalam graf. Permasalahannya adalah bagaimana cara mengunjungi satu
verteks pada graf dari verteks awal hingga verteks akhir dengan bobot minimum.
Ada beberapa macam persoalan lintasan terpendek, antara lain:
1. Lintasan terpendek antara dua buah simpul tertentu (a pair shortets path)
2. Lintasan terpendek antara semua pasangan simpul (all pairs shortest path)
3. Lintasan terpendek dari simpul tertentu ke semua simpul yang lain (singlesource
shortest path)
4. Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul
tertentu (intermediate shortest path)

4. Spanning tree
teknik mencari jalan penghubung yang dapat menghubungkan semua titik
dalam jaringan secara bersamaan.
Contoh;

Berikut adalah penjabaran Spanning tree,menghubungkan semua titik untuk


mendapatkan jalan.

Anda mungkin juga menyukai