ADT Graph


  ADT Graph Disusun untuk Memenuhi Laporan Praktikum Algoritma dan Struktur Data Oleh: Nama : Sukarjo NIM : Hari/Tanggal : Selasa/18 Desember 2012 Asisten: 1. Dwy Saputro 2. Ilham Yuliantoro LABORATORIUM KOMPUTER DASAR PROGRAM STUDI ILMU KOMPUTER PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA MALANG 2012


2 Dasar Teori Suatu graph adalah pasangan g = (V,E) V adalah himpunan tidak kosong terbatas vertex dari G, dan E = VxV. Terdapat dua jenis graph yakni graph berarah dan graph tidak berarah. ADT graph dapat dipresentasikan dengan dua cara yakni adjacency matrik atau adjacenty list Contoh gambar Graph, sumber google.com Sourcode Class Stack package Graph; class Stack private final int SIZE = 20; private int[] st; private int top; public Stack() st = new int[size]; top = -1;


3 public void push(int j) st[++top] = j; public int pop() return st[top--]; public int peek() return st[top]; public boolean isempty() return (top == -1); Class Queue package Graph; class Queue private final int SIZE = 20; private int[] quearray; private int front; private int rear; public Queue() quearray = new int[size]; front = 0; rear = -1; public void insert(int j) if(rear == SIZE-1) rear = -1; quearray[++rear] = j; public int remove() int temp = quearray[front++]; if(front == SIZE) front = 0; return temp; public boolean isempty() return ( rear+1==front (front+size-1==rear) ); class Vertex public char label; public boolean wasvisited;


4 public Vertex(char lab) label = lab; wasvisited = false; Class Graph package Graph; public class Graph private final int MAX_VERTS = 20; private Vertex vertexlist[]; private int adjmat[][]; private int nverts; private Stack thestack; private Queue thequeue; public Graph() vertexlist = new Vertex[MAX_VERTS]; adjmat = new int[max_verts][max_verts]; nverts = 0; for(int j=0; j<max_verts; j++) for(int k=0; k<max_verts; k++) adjmat[j][k] = 0; thestack = new Stack(); thequeue = new Queue(); public void addvertex(char lab) vertexlist[nverts++] = new Vertex(lab); public void addedge(int start, int end) adjmat[start][end] = 1; adjmat[end][start] = 1; public void displayvertex(int v) System.out.print(vertexList[v].label); public void dfs() vertexlist[0].wasvisited = true; displayvertex(0); thestack.push(0); while(!thestack.isempty() ) int v = getadjunvisitedvertex( thestack.peek() ); if(v == -1)


5 thestack.pop(); else vertexlist[v].wasvisited = true; displayvertex(v); thestack.push(v); for(int j=0; j<nverts; j++) vertexlist[j].wasvisited = false; public void bfs() vertexlist[0].wasvisited = true; displayvertex(0); thequeue.insert(0); int v2; while(!thequeue.isempty() ) int v1 = thequeue.remove(); while( (v2=getadjunvisitedvertex(v1))!= -1 ) vertexlist[v2].wasvisited = true; displayvertex(v2); thequeue.insert(v2); for(int j=0; j<nverts; j++) vertexlist[j].wasvisited = false; public void mst() vertexlist[0].wasvisited = true; thestack.push(0); while(!thestack.isempty() ) int currentvertex = thestack.peek(); int v = getadjunvisitedvertex(currentvertex); if(v == -1) thestack.pop(); else vertexlist[v].wasvisited = true; thestack.push(v); displayvertex(currentvertex); displayvertex(v); System.out.print(" "); for(int j=0; j<nverts; j++) vertexlist[j].wasvisited = false;


6 public int getadjunvisitedvertex(int v) for(int j=0; j<nverts; j++) if(adjmat[v][j]==1 && vertexlist[j].wasvisited==false) return j; return -1; public static void main(string[] args) Graph Ga = new Graph(); Ga.addVertex('A'); Ga.addVertex('B'); Ga.addVertex('C'); Ga.addVertex('D'); Ga.addVertex('E'); Ga.addVertex('F'); Ga.addEdge(0, 1); Ga.addEdge(1, 2); Ga.addEdge(0, 3); Ga.addEdge(3, 4); Ga.addEdge(3, 5); Graph Gb=new Graph(); Gb.addVertex('A'); Gb.addVertex('B'); Gb.addVertex('C'); Gb.addVertex('D'); Gb.addVertex('E'); Gb.addVertex('F'); Gb.addEdge(0, 1); Gb.addEdge(1, 2); Gb.addEdge(0, 3); Gb.addEdge(3, 4); Gb.addEdge(3, 5); Graph Gc=new Graph(); Gc.addVertex('A'); Gc.addVertex('B'); Gc.addVertex('C'); Gc.addVertex('D'); Gc.addVertex('E'); Gc.addVertex('F'); Gc.addEdge(0, 1); Gc.addEdge(0, 2); Gc.addEdge(0, 3); Gc.addEdge(0, 4); Gc.addEdge(0, 5); Gc.addEdge(1, 2); Gc.addEdge(1, 3); Gc.addEdge(1, 4); Gc.addEdge(1, 5); Gc.addEdge(2, 3); Gc.addEdge(2, 4); Gc.addEdge(2, 5); Gc.addEdge(3, 4);


7 Gc.addEdge(3, 5); Gc.addEdge(4, 5); System.out.print("Depth First Search\n"); System.out.print("==================\n"); Ga.dfs(); System.out.println("\n\n"); System.out.print("Breadth-First Search\n"); System.out.print("====================\n"); Gb.bfs(); System.out.println("\n\n"); System.out.print("Minimum Spanning Tree\n"); System.out.print("=====================\n"); Ga.mst(); Output


8 Analisa class Stack ini adalah nama dari class Stack public Stack() ini ialah constructor class Queue ini adalah class dari Queue yang berfungsi untuk pengantrian dari inputan sebuah karakter yang dimasukan. public class Graph ini adalah kelas utama dari kelas Graph. public Graph() sebuah konstruktor dari class Graph. public void addvertex(char lab) argument dari sebuah label dari class vertex public void addedge (int start, int end) sebuah method untuk edge start dan end public void displayvertex(int v) ini adalah method untuk tampilkan vertex public void dfs() ini adalah method dari dfs yang berfungsi untuk mencari dari nilai dfs public void mst() ini adalah method dari mst yang berfungsi untuk mencari dari nilai mst public int getadjunvisitedvertex(int v) ini adalah sebuah method dari vertex yang menghubungkan nilai-nilainya public static void main(string[] args) ini adalah sebuah method utama yang berfungsi untuk menampilkan semua jalan dari program diatas Ga.dfs(); ini untuk memanggil nilai dari dfs Gb.bfs(); ini untuk memanggil nilai dari bfs Ga.mst(); ini untuk memanggil nilai dari mst



 

9 Kesimpulan Kesimpulan dari praktikum ini ialah dapat mengerti sebuah program Graph dan disini dibahas juga method Stack yang sebelumnya sudah dibahas dalam bab 3, methoth Queue atau antrian yang sebelumnya dibahas dalam bab 7. Dan disini juga terdapat method vertex yang artinya sebuah simpul dari Graph. Daftar Pustaka Drs. Achmad Ridok, M.Kom, Modul Praktikum Algoritma dan Struktur Data 1,


sumber :https://docplayer.info/

Artikel Selanjutnya Artikel Sebelumnya
Post Terkait :
Struktur Data