Algoritma dan Struktur Data GRAF

dokumen-dokumen yang mirip
ADT Graph. Disusun untuk Memenuhi Laporan Praktikum Algoritma dan Struktur Data. Oleh: NIM : Asisten:

Algoritma dan Struktur Data. Queue

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

Denny Setyo R. Masden18.wordpress.com

CRITICAL PATH. Menggunakan Graph berbobot dan mempunya arah dari Critical Path: simpul asal : 1 simpul tujuan : 5. Graph G. Alternatif

TUGAS KELOMPOK STRUKTUR DATA. (Yuniasyah) GRAPH

B. DASAR TEORI AlGORITMA TRAVERSAL GRAPH Terdapat beberapa perbedaan Tree dan Graph dijelaskan pada tabel Tabel 31.1 Perbedaan Tree dan Graph

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

BAB 2 LANDASAN TEORI

Algoritma dan Struktur Data STACK

Algoritma dan Struktur Data. Binary Tree & Binary Search Tree (BST)

Mata Kuliah : Struktur Data Semester : Genap Kode Mata Kuliah : 307 Waktu : 180 Menit Bobot : 4 sks. Jurusan : MI

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Pertemuan 11 GRAPH, MATRIK PENYAJIAN GRAPH

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

BAB 2 TINJAUAN PUSTAKA

Praktikum Blind Search (BFS dan DFS)

Struktur. Bab 6: 4/29/2015. Kompetensi Dasar. Mahasiswa mendapatkan pemahaman mengenai cara kerja dan penyajian graph

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

BAB II LANDASAN TEORI

Data Structure GRAPH. Chapter 8. Dahlia Widhyaestoeti, S.Kom

BAB III ANALISIS DAN PERANCANGAN SISTEM

Studi dan Implementasi Struktur Data Graf

A. TUJUAN PEMBELAJARAN

Kode MK/ Pemrograman Terstruktur 2

Pertemuan 7. REVIEW dan QUIS

Aplikasi dan Analisis Algoritma BFS dan DFS dalam Menemukan Solusi pada Kasus Water Jug

Bagaimana merepresentasikan struktur berikut? A E

Percabangan & Perulangan

Preorder Tree Traversal

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Algoritma Dan Struktur Data II

MODUL PRAKTIKUM STRUKTUR DATA

IKI 20100: Struktur Data & Algoritma

BAB 2 LANDASAN TEORI

Penggunaan BFS dan DFS untuk Pixel Traversing

ANALISIS PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI PERSOALAN LOMPATAN KUDA

Diktat Algoritma dan Struktur Data 2

Struktur Data Array. Rijal Fadilah S.Si

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

Algoritma Pemrograman & Struktur Data

BAB III ALGORITMA BRANCH AND BOUND. Algoritma Branch and Bound merupakan metode pencarian di dalam ruang

MODUL III ARRAYLIST TUGAS PENDAHULUAN

KUM 3 IMPLEMENTASI LIST

Struktur Data & Algoritma

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

KUM 5 IMPLEMENTASI QUEUE

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Algoritma Traversal di dalam Graf

1. Memahami mengenai Konsep Graph dan istilah-istilah yang terdapat pada Graph 2. Memahami implementasi Graph ke dalam bahasa pemrograman

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

Algoritma & Struktur Data. Array. Oleh : Nur Hayatin, M.Kom

Penerapan BFS dan DFS dalam Garbage Collection

BAB II TINJAUAN PUSTAKA

BAB III KONSEP DASAR TEORI GRAF. Teori graf adalah salah satu cabang matematika yang terus berkembang

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

DIG1G3 Implementasi Struktur Data

graph 3/12/2013 struktur data by andi arfian 1

FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

PENERAPANAN ALGORITMA BFS, DFS, DAN UCS UNTUK MENCARI SOLUSI PADA MASALAH ROMANIA

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

GRAF. Graph seperti dimaksud diatas, ditulis sebagai G(E,V).

= himpunan tidak-kosong dan berhingga dari simpul-simpul (vertices) = himpunan sisi (edges) yang menghubungkan sepasang simpul

Kecerdasan Buatan. Penyelesaian Masalah dengan Pencarian... Pertemuan 02. Husni

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

BAB 2 LANDASAN TEORI

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Penggunaan Algoritma BFS dan DFS dalam Pencarian Solusi pada Permainan Puzzle Unblock Me

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

GRAF. V3 e5. V = {v 1, v 2, v 3, v 4 } E = {e 1, e 2, e 3, e 4, e 5 } E = {(v 1,v 2 ), (v 1,v 2 ), (v 1,v 3 ), (v 2,v 3 ), (v 3,v 3 )}

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

BAB 2 LANDASAN TEORI

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 08

Implementasi DFS dan BFS Dalam Recognizer Pushdown Automata

Algoritma Dan Struktur Data II. Queue

Implementasi Algoritma Backtracking untuk Memecahkan Puzzle The Tile Trial pada Permainan Final Fantasy XIII-2

Struktur Data dan Algoritma

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

BAB II LANDASAN TEORI

ALGORITMA DAN STRUKTUR DATA

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Array. Adharul Muttaqin Universitas Brawijaya Malang. Array

Transkripsi:

Algoritma dan Struktur Data GRAF Teknik Informatika Universitas Muhammadiyah Malang 2016

OUtline Perbedaan tree dan graf Contoh gambar graf Istilah pada graf Penelusuran graf

Definisi Graf (Graph) adalah struktur data yang memiliki relasi many to many, yaitu tiap element dapat memiliki 0 atau lebih dari 1 cabang. Sama seperti Tree, Graph terbentuk dari 2 bagian, yaitu node dan edge (Cabang). Node : digunakan untuk menyimpan data Edge : cabang, untuk menghubungkan node satu dengan node lain.

Contoh Graph Jaringan pertemanan pada Facebook. Firda Nina Riza Toni Joko Ale Graph dengan 6 node dan 7 edge yang merepresentasikan jaringan pertemanan pada Facebook

Penjabaran Jika => G = (N,E) Dimana : G adalah Graph, N adalah Node, dan E adalah Edge. Sehingga dari contoh graph facebook tersebut dapat dijabarkan : N = {Nina, Toni, Ale, Riza, Joko, Firda} E = {{Nina,Toni},{Toni,Riza},{Nina, Riza}, {Toni,Ale}, {Ale,Joko},{Riza,Joko},{Firda,Joko}} *Node : para anggota Facebook Edge : relasi pertemanan antara anggota satu dengan yang lain.

Jenis Graph Graph dibedakan menjadi beberapa jenis, antara lain : 1. Undirected Graph 2. Directed Graph (Digraph) 3. Weigth Graph

Undirected Graph Biasa disingkat : undi-graph. Yaitu graph yang tidak memiliki arah. Setiap sisi berlaku dua arah. Misalkan : {x,y} Arah bisa dari x ke y, atau y ke x. Secara grafis sisi pada undigraph tidak memiliki mata panah dan secara notasional menggunakan kurung kurawal. U V {U,V} atau {V,U}

Gambar Undi-Graph

Notasional G = {V, E} V = {A, B, C, D, E, F, G, H, I,J, K, L, M} E = { {A,B},{A,C}, {A,D}, {A,F}, {B,C}, {B,H}, {C,E}, {C,G}, {C,H}, {C,I}, {D,E}, {D,F}, {D,G}, {D,K}, {D,L}, {E,F}, {G,I}, {G,K}, {H,I}, {I,J}, {I,M}, {J,K}, {J,M}, {L,K}, {L,M}}.

Contoh Undi-Graph 2 3 1 4 5 6 7

Directed Graph Biasa disingkat : Di-graph. Yaitu graph yang memiliki arah. Setiap edge Digraph memiliki anak panah yang mengarah ke node tertentu. Secara notasi sisi digraph ditulis sebagai vektor (u, v). u = origin (vertex asal) v = terminus (vertex tujuan) u v

Gambar Digraph

Notasional G = {V, E} V = {A, B, C, D, E, F, G, H, I,J, K, L, M} E = {(A,B),(A,C), (A,D), (A,F), (B,C), (B,H), (C,E), (C,G), (C,H), (C,I), (D,E), (D,F), (D,G), (D,K), (D,L), (E,F), (G,I), (G,K), (H,I), (I,J), (I,M), (J,K), (J,M), (L,K), (L,M)}.

Contoh Digraph 2 3 1 4 5 6 7

Weigth Graph Graph yang memiliki bobot, yaitu pada tiap edge-nya memiliki nilai.

Contoh Weigth Graph A E 2 4 5 D 2 2 B F 4 C

Loop Digraph dapat memiliki edge dari dan menuju ke node itu sendiri (Self-edge). Hal ini dikenal dengan istilah loop. 1 2 Self-edge/loop LEGAL 3 4 5 6 7

Peta Penelusuran Kota (Berdasarkan Jarak) 4 2 3 1 8 6 8 10 2 4 5 5 4 6 4 5 9 11 3 6 7 7 Node = Tempat Wisata edge = jalur Weight = jarak

Peta kota 2 3 1 8 10 4 5 9 11 6 7 Some streets are one way.

Graf Property Jumlah Edge Degree Jumlah Vertex Degree In-Degree Out-Degree

Jumlah Edge Jumlah pasangan edge yang mungkin (banyak maksimal edge) dapat dilihat dari jumlah node (n). Dibedakan menjadi 2 : untuk undi-graph dan di-graph. Undi-graph : (lebih kecil sama dengan ) <= n(n-1)/2 Di-graph : (lebih kecil sama dengan ) <= n(n-1) Dimana, n adalah jumlah node.

Contoh Undi-graph jumlah maks edge : 3 n = 3 Di-graph jumlah maks edge : 6 dengan loop : 9 n = 3

Degree Degree : jumlah cabang atau jumlah edge yang dimiliki node. Berlaku untuk undirectgraph. 1 4 2 5 3 degree(2) = 2, degree(5) = 3, degree(3) =??? degree(7) =??? 6 7

Jumlah Degree Jumlah degree adalah jumlah total cabang/degree yang ada pada graph. Rumus = 2e (dimana e adalah jumlah edge) 8 10 9 11 Jumlah Degree = 6

Degree pada Di-graph? 2 3 1 8 10 4 5 9 11 6 7 Degree (4) =??? Degree (7) =???

In-Degree Jumlah edge yang masuk atau mengarah ke Node. 2 3 1 4 5 6 7 indegree(2) = 1, indegree(7) = 2, indegree(1)=???

Out-Degree Jumlah edge yang keluar dari Node. 2 3 1 4 5 6 7 outdegree(2) = 1, outdegree(7) = 0, outdegree(1) =???

Degree pada Di-graph? 2 3 1 8 10 4 5 9 11 6 7 In-Degree (4) = 0 Out-Degree (7) = 2

Representasi Graph Representasi graph dibedakan menjadi 2 : 1. Adjacency Matrix dapat direpresentasikan dengan matriks (array 2 Dimensi). 2. Adjacency Lists dapat direpresentasikan dengan array (bukan berupa matriks) maupun linked list.

Adjacency Matrix Representasi Graph berupa Matrik ordo nxn. dimana n = node. Baris berisi Node asal, sedangkan kolom berisi Node tujuan. Jika graph tidak berbobot,maka nilai matriks diisi dengan 1 atau 0. nilai 1 jika ada edge, dan 0 jika tidak ada edge antar node. A(i,j) = 1, jika antara node i dan node j terdapat edge/terhubung. Jika graph berbobot, maka nilai matriks diisi dengan bobot dari edge. A(i,j) = nilai bobot.

Adjacency Matrix 1 2 3 4 5 1 2 3 1 2 3 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 4 5 4 5 1 0 0 0 1 0 1 1 1 0

Undi-graph 1 2 3 4 5 1 2 3 1 2 3 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 4 5 4 5 1 0 0 0 1 0 1 1 1 0 Diagonal entries are zero. Adjacency matrix of an undirected graph is symmetric. A(i,j) = A(j,i) for all i and j.

Di-graph 1 2 3 4 5 1 2 3 1 2 3 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 4 5 4 5 0 0 0 0 1 0 1 1 0 0 Dimungkinkan tidak simetris jika terdapat loop.

Adjacency List Direpresentasikan dengan linked list atau array. Array list : array dua dimensi namun tidak berordo nxn. Linked list : array of single linked list

Array Lists 1 4 2 5 3 alist[1] = (2,4) alist[2] = (1,5) alist[3] = (5) alist[4] = (1,5) alist[5] = (2,3,4)

Adjacency Lists (Linked List) 2 3 alist [1] [2] 2 4 1 5 1 4 5 [3] [4] [5] 5 5 1 2 4 3

Latihan 1. Gambarkan graph dari representasi Matrik berikut:

2. Representasikan dengan adjacency list & adjacency matrix A E 2 4 5 D 2 2 B F 4 C 1

3. Representasikan dengan adjacency list & adjacency matrix Firda Nina Riza Toni Joko Ale

Penelusuran Graph

Metode Penelusuran Graph Traversal : Mengunjungi tiap simpul/node secara sistematik. Metode : DFS (Depth First Search) : Pencarian Mendalam BFS (Breadth First Search) : Pencarian Melebar

Algoritma BFS BFS diawali dengan vertex yang diberikan, yang mana di level 0. Dalam stage pertama, kita kunjungi semua vertex di level 1. Stage kedua, kita kunjungi semua vertex di level 2. Disini vertex baru, yang mana adjacent ke vertex level 1, dan seterusnya. Penelusuran BFS berakhir ketika setiap vertex selesai ditemui.

Breadth First Search (BFS) Urutan verteks hasil penelusuran :

Breadth First Search (BFS)..

Algoritma BFS Traversal dimulai dari simpul v. Algoritma: 1. Kunjungi simpul v, 2. Kunjungi semua simpul yang bertetangga dengan simpul v terlebih dahulu. 3. Kunjungi simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya.

Depth First Search (DFS) Pada setiap pencabangan, penelusuran verteks-verteks yang belum dikunjungi dilakukan secara lengkap pada pencabangan pertama, kemudian selengkapnya pada pencabangan kedua, dan seterusnya secara rekursif.

Depth First Search (DFS) Urutan verteks hasil penelusuran :

Depth First Search (DFS)..

Algoritma DFS Traversal dimulai dari simpul v. Algoritma: 1. Kunjungi simpul v, 2. Kunjungi simpul w yang bertetangga dengan simpul v. 3. Ulangi DFS mulai dari simpul w. 4. Ketika mencapai simpul u sedemikian sehingga semua simpul yang bertetangga dengannya telah dikunjungi, pencarian dirunut-balik (backtrack) ke simpul terakhir yang dikunjungi sebelumnya dan mempunyai simpul w yang belum dikunjungi. 5. Pencarian berakhir bila tidak ada lagi simpul yang belum dikunjungi yang dapat dicapai dari simpul yang telah dikunjungi.

Latihan Telusuri graph disamping dengan mengunakan BFS dan DFS. Secara berturut-urut root dimulai dari 1,2,3 dan 4. Bandingkan hasilnya!

Latihan 2. Telusuri dengan BFS dan DFS! root : node 1 2 3 1 8 4 5 9 6 7

Latihan 3. Telusuri dengan BFS dan DFS! root : node 1 2 3 1 8 10 4 5 9 11 6 7

Implementasi Program

Operasi-operasi Menggunakan adjacency matriks, operasioperasinya sebagai berikut : 1. Deklarasi+Inisialisasi 2. Penambahan node 3. Penambahan edge 4. Visitasi Node 5. Traversal 6. Display node

Deklarasi+Inisialisasi Langkah-langkah untuk memulai deklarasi sekaligus inisilisasi sbb : 1. Membuat class utama (main class) 2. Membuat class vertex 3. Membuat class Stack 4. Membuat class Queue 5. Deklarasi variabel

Class stack Contoh Program class StackX { private final int SIZE = 20; private int[] st; private int top; public StackX() // constructor { st = new int[size]; // make array top = -1; } public void push(int j) // put item on stack { st[++top] = j; } public int pop() // take item off stack { return st[top--]; } public int peek() // peek at top of stack { return st[top]; } public boolean isempty() // true if nothing on stack- { return (top == -1); } }

Contoh Program Class Queue 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) ); } }

Contoh Program Class vertex digunakan untuk menyimpan node/vertex. Terdiri dari 2 variabel yaitu label (untuk menyimpan data pada node) dan wasvisited (untuk menandai sebuah node sudah/telah dikunjugi). class Vertex { public char label; // label (e.g. 'A') public boolean wasvisited; public Vertex(char lab) // constructor { label = lab; wasvisited = false; } }

Contoh Program Deklarasi class utama (main class). Misalkan nama class adalah AdjacencyMatriksGraph, maka program-nya dapat dilihat seperti dibawah ini : public class AdjacencyMatriksGraph { } Didalam class inilah perintah operasi yang lain ditulis.

Contoh Program Deklarasi variabel terdiri dari : 1. Deklarasi variabel stack 2. Deklarasi variabel queue 3. Deklarasi variabel vertex 4. Deklarasi variabel matriks (berupa array 2D) 5. Deklarasi variabel MAX_VERTEX (untuk menyimpan maksimum jumlah node) 6. Deklarasi variabel nverts (untuk menyimpan jumlah node yang telah di-create)

Contoh Program Variabel-variabel tersebut dideklarasikan didalam class AdjacencyMatriksGraph. public class AdjacencyMatriksGraph { private final int MAX_VERTS = 20; private Vertex vertexlist[]; private int adjmat[][]; private int nverts; private StackX thestack; private Queue thequeue;

Contoh Program Constructor pada main class digunakan untuk proses 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 Node Proses tambah node dilakukan dengan cara membuat new object dari class vertex. Ketika terjadi penambahan node baru nilai variabel nverts ditambah 1 (increment 1). Contoh program berupa method addvertex sbb: public void addvertex(char lab) { vertexlist[nverts++] = new Vertex(lab); }

Tambah Edge Proses penambahan Edge dilakukan dengan cara mengakses variabel matriks. Kemudian ditentukan titik asal dan tujuan yang berupa index. Index ini mewakili tiap node yang telah di-create. Untuk undi-graph, pengaksesan dengan index[start][end] atau [end][start] bernilai sama. Sedangkan untuk graph yang tidak berbobot diberikan nilai 1 jika ada edge. Contoh program : public void addedge(int start, int end) { adjmat[start][end] = 1; adjmat[end][start] = 1; }

Visitasi Node Visitasi Node adalah proses mengunjungi node. Pada program node yang dikunjungi ditandai dengan perubahan nilai false menjadi true untuk variabel wasvisited yang diakses melalui object vertex. Node yang telah dikunjungi tidak akan dikunjungi lagi. Contoh program : 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; }

Display Node Display Node adalah proses menampilkan data Node yang dikunjungi. Contoh program : public void displayvertex(int v) { System.out.print(vertexList[v].label); }

Traversal Traversal adalah proses penelusuran Node. Dibedakan menjadi 2 : DFS BFS

Contoh program : DFS Traversal 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;

Contoh program : BFS Traversal 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; }

Main Method : public static void main(string[] args) { AdjacencyMatriksGraph thegraph = new AdjacencyMatriksGraph(); thegraph.addvertex('4');//0 thegraph.addvertex('3');//1 thegraph.addvertex('1');//2 thegraph.addvertex('2');//3 thegraph.addedge(0,1); thegraph.addedge(1,2); thegraph.addedge(1,3); } System.out.print("Visits bfs: "); thegraph.bfs(); // breadth-first search System.out.println(); System.out.print("Visits dfs: "); thegraph.dfs(); // depth-first search System.out.println(); } // end main()

Pustaka Sartaj Sahni, Data Structures & Algorithms, Presentation L20-24. Mitchell Waite, Data Structures & Algorithms in Java, SAMS, 2001