Anda di halaman 1dari 5

Connectivity Algorithm with Depth First Search (DFS) on

Simple Graphs

Abstrak

Makalah ini membahas algoritma untuk mendeteksi konektivitas suatu graf


sederhana dengan menggunakan Depth First Search (DFS). Implementasi DFS dalam
makalah ini berbeda dari penelitian lain, yakni menghitung jumlah simpul yang dikunjungi.
Algoritma memperoleh s dari jumlah simpul dan mengunjungi simpul sumber, diikuti simpul
yang berdekatan sampai simpul terakhir yang berdekatan ke simpul sumber sebelumnya.
Setiap grafik sederhana terhubung jika s sama dengan 0 dan terputus jika s lebih besar dari 0.
Kompleksitas algoritma adalah O (n2).

1. Pengenalan

Sebuah grafik dihubungkan jika ada dua buah simpul yang dihubungkan oleh
sebuah barisan sisi. Grafik yang terhubung (Connected Graph) bisa juga didefinisikan sebagai
grafik ketika ada jalan di antara setiap pasang simpul. Grafik dikatakan terhubung jika ada
jalur antara sepasang simpul. Sebuah karya sastra juga mendefinisikan graf yang terhubung
sebagai graf yang dibentuk oleh satu komponen. Konektivitas grafik sering digunakan dalam
berbagai implementasi pada masalah kehidupan nyata dan penyelesaian atau problem-solving
(algoritma) dari suatu graf yakni seperti Bipartite Graph, Hamiltonian Graph, Eulerian Graph,
Tree, Minimum Spanning Tree (MST), beberapa “Shortest Path Problems” (algoritma
Dijkstra), Graph Coloring, dan Planar Graph.
Penerapan dan implementasi dari grafik yang terhubung ini dapat menyelesaikan
masalah-masalah yang ada di kehidupan nyata, antara lain pada telekomunikasi, aliran darah,
jaringan komputer, dan transportasi. Menentukan konektivitas suatu graf sangat penting
karena memiliki banyak manfaat. Konektivitas grafik dapat ditentukan menggunakan metode
atau algoritma konektivitas. Satu dari algoritma konektivitas adalah entri non-diagonal positif
dari matriks (Positive Non-Diagonal Entry of Matrix). Adapun metode lainnya adalah
Modifikasi Pohon Pelabelan Algoritma Prüfer (Modified Prüfer’s Algorithm Labelling
Trees), kesamaan himpunan simpul virtual dan himpunan simpul. Dalam penelitian ini,
algoritma-nya menggunakan konsep Depth First Search (DFS) yang sudah banyak dikenal
konsep dalam ilmu komputer. Perbedaan algoritma ini dari algoritma lain adalah caranya
menghitung simpul yang telah dikunjungi.

2. Metodologi

Algoritma konektivitas yang disajikan dalam artikel ini mengambil masukan graf
sederhana G = (V, E). Setelah itu, status setiap simpul disetel ke false dan terdapat dalam
variabel Pi, di mana 1 ≤ i ≤ | V |, yang berarti setiap simpul adalah simpul yang belum
dikunjungi. Variabel kemudian diinisialisasi ke | V |, yang berarti belum ada simpul yang
dikunjungi.
Proses pemeriksaan konektivitas disajikan dalam fungsi rekursif yang disebut
Kunjungan (simpul sumber). Misalkan simpul r menjadi simpul sumber, maka status simpul
r disetel ke true, yang berarti simpul r dikunjungi. Algoritme kemudian mengurangi 1 dari s.
Selanjutnya algoritma akan mencari simpul dengan label terkecil yang berdekatan dengan r,
jika simpul tersebut ada, fungsi rekursif akan berjalan pada simpul tersebut dan kemudian
mengurangi 1 dari s. Mekanisme ini mengikuti metode DFS. Proses ini akan diulangi
dengan cara yang sama seperti memanggil fungsi rekursif, tetapi pada simpul sumber yang
berbeda, yaitu simpul yang berdekatan ke r dengan label berikutnya. Proses rekursif akan
berhenti jika tidak ada simpul yang berdekatan dengan status salah. Tahap terakhir adalah
pengecekan variabel s, jika s = 0 maka graf terhubung dan jika s > 0 maka graf akan
terputus.

3. Hasil dan Diskusi

Hasil penelitian ini menunjukkan bahwa setiap graf yang sederhana dapat diperiksa
konektivitasnya menggunakan algoritma konektivitas dengan DFS. Algoritma tersebut
menunjukkan bahwa jika s=0, maka grafik tersebut terhubung, dan bila S>0, maka grafik
tersebut diputus. Secara umum, algoritma untuk menentukan konektivitas dari setiap grafik
sederhana ditampilkan sebagai berikut.

Algoritma terdiri dari tiga bagian utama. Bagian pertama adalah memasukkan graf
sederhana, menginisialisasikan status setiap simpul dan menginisialisasikan variable s, dan
memilih simpul sumber. Bagian kedua adalah proses DFS, yang diwakili oleh fungsi rekursif.
Secara umum, bagian kedua bekerja sebagai berikut.

Setelah memilih simpul sumber, algoritma akan mencari sumpul yang berdekatan dari
simpul sumber. Algoritma ini sesuai dengan Depth Dirst Search(DFS). Setelah menjalankan
fungsi rekursif, nilai variabel s akan berubah. Bagian ketiga dari algoritma ini adalah
memeriksa nilai variabel s. Jika s = 0, maka graf tersebut terhubung dan jika s > 0 maka graf
tersebut akan diputus. Algoritma berjalan pada grafik sederhana G = (V,E) di mana V = {1, 2,
3, 4, 5, 6, 7} dan E={12, 15, 17, 23, 34, 35, 67} ditunjukkan pada gambar 1 hingga 4.

Gambar 1. (a) Memasukkan graf sederhana (b) Menemukan simpul sumber dan (c)
Kedekatan simpul yang dikunjungi.

Langkah pertama adalah memasukkan grafik sederhana. Grafik deng |V| = 7


ditunjukkan pada gambar 1(a). Algoritma kemudian menginisialisasi s = |V| dimana s adalah
variabel untuk menentukan konektivitas dan untuk setiap simpul yang dikunjungi, algoritma
mengurangi 1 dari s. Algoritma ini kemudian menginisialisasi Pi = 0 untuk setiap simpul
yang belum dikunjungi dimana 0 ≤ I < n dan Pi= 1 untuk setiap mengunjungi vertex dimana 0
≤ i < n. Jadi, | v | = 𝑝1, 𝑝2, 𝑝3, 𝑝4, 𝑝5, 𝑝6, 𝑝7 dan memberikan status untuk setiap simpul.
Seperti yang ditunjukkan pada Gambar 1 (b), simpul 1 dipilih menjadi simpul
sumber. Setelah itu, s = s - 1 untuk setiap simpul yang dikunjungi jadi s = 6. Karena simpul 1
adalah simpul yang dikunjungi, algoritma menetapkan P1 = 1. Kandidat untuk simpul yang
berdekatan dari simpul sumber adalah simpul 2, simpul 5, dan simpul 7 Algoritme memilih
simpul yang berdekatan dengan label terkecil. Oleh karena itu, Vertex 2 dipilih untuk
dikunjungi. Jadi, s = 5 dan P2 = 1.

Gambar 2. (d) Mengunjungi simpul yang berdekatan (e) Mengunjungi sumpul yang
berdekatan dan (f) Memilih simpul sumber sebelumnya.
Gambar 2 (d) menunjukkan bahwa simpul 3 adalah satu-satunya simpul yang
berdekatan dengan simpul 2, yang merupakan simpul sumber saat ini. Oleh karena itu, simpul
yang dikunjungi selanjutnya adalah simpul 3. Jadi, s = 4 dan P3 = 1. Gambar 2 (e)
menunjukkan bahwa simpul 4 dan simpul 5 bersebelahan dengan simpul 3. Algoritma
memilih simpul dengan label terkecil. Oleh karena itu, simpul 4 dipilih sebagai simpul
sumber. Algoritma ini kemudian menetapkan s = 3 dan P4 = 1. Pada Gambar 2 (f), tidak ada
simpul yang berdekatan dengan simpul 4. Algoritma ini kembali ke simpul sumber
sebelumnya, yaitu simpul 3

Gambar 3. (g) Mengunjungi simpul yang berdekatan (h) Memilih simpul sumber
sebelumnya.
Gambar 3 (g) menunjukkan bahwa simpul 5 bersebelahan dengan simpul 3, jadi s = 2 dan P5
= 1. Pada Gambar 3 (h), tidak ada simpul yang bersebelahan dengan simpul 5. Algoritma ini
Kembali ke simpul sumber sebelumnya, yaitu simpul 3. Proses ini diulangi sampai simpul 1
dikunjungi seperti ditunjukkan pada gambar 2 (h).

Gambar 4. (i) Mengunjungi simpul yang berdekatan (j) Mengunjungi simpul yang
berdekatan dan (k) Memilih simpul sumber sebelumnya.

Gambar 4 (i) menunjukkan bahwa simpul 1 adalah simpul sumber. Satu-satunya


simpul yang berdekatan dengan simpul sumber adalah simpul 7. Dengan demikian simpul 7
dikunjungi sehingga s = 1 dan P7 = 1. Gambar 4 (j) menunjukkan bahwa satu-satunya simpul
yang berdekatan dengan simpul 7 adalah simpul 6. Dengan demikian simpul 6 dikunjungi.
jadi s = 0 dan P6 = 1. Gambar 4 (k) menunjukkan tidak ada simpul yang berdekatan dengan
simpul 6, jadi algoritma memilih simpul sebelumnya dan kembali ke simpul sumber pertama,
yaitu simpul 1. Simpul 1 tidak memiliki sisa yang berdekatan puncak. Oleh karena itu,
algoritme memeriksa nilai variabel s. Jika s = 0, maka grafik tersebut terhubung. Namun, jika
s> 0, maka grafik tersebut diputus. Grafik yang ditunjukkan di atas menunjukkan bahwa s =
0, jadi grafik G adalah grafik yang terhubung.
Total waktu untuk algoritma ini adalah O (n2). Artinya, untuk setiap n simpul yang
dikunjungi, algoritma memeriksa kedekatannya sebanyak n kali, baik simpul yang berdekatan
maupun yang tidak bersebelahan.

4. Rangkuman
Algoritma tersebut dapat digunakan untuk memvalidasi suatu graf masukan dalam
menyelesaikan masalah graf yang memerlukan grafik yang terhubung, seperti memverifikasi
grafik Hamiltonian. Sayangnya, algoritma yang diusulkan hanya berjalan pada sebuah grafik
sederhana. Berdasarkan penelitian ini, terlihat bahwa setiap graf sederhana dihubungkan jika
s = 0 dan terputus jika s > 0 dimana s adalah variabel untuk menentukan konektivitas suatu
grafik.

Anda mungkin juga menyukai