Anda di halaman 1dari 5

LAPORAN AKHIR PRAKTIKUM TEORI GRAF MINGGU 3

NAMA : Isa Tarmana Mustopa

KELAS : 3KA01

NPM : 10120544

Sesi Praktikum

Pengertian DFS

Depth First Search (DFS) adalah algoritma pencarian jalur atau path pada sebuah struktur data
graf atau tree. Pada algoritma DFS, traversal dilakukan secara mendalam terlebih dahulu
sebelum melanjutkan ke simpul (node/vertex) berikutnya. DFS memulai traversal dari simpul
awal (root node) dan mengeksplorasi serendah-rendahnya ke dalam (deep) sebelum mundur
(backtrack) ke simpul sebelumnya untuk mengeksplorasi simpul lain.

Proses DFS dilakukan dengan menandai setiap simpul yang dikunjungi (visited), mengunjungi
tetangga simpul tersebut yang belum dikunjungi, dan terus melakukan langkah yang sama
hingga tidak ada simpul lagi yang dapat dikunjungi dari simpul saat ini. Kemudian, DFS akan
backtrack ke simpul sebelumnya dan mencari simpul lain yang belum dikunjungi. Proses ini
akan terus dilakukan hingga semua simpul pada graf atau tree telah dikunjungi.

Algoritma DFS berguna dalam mencari jalur atau path pada struktur data graf atau tree,
mengecek keterhubungan pada graf, menghitung jarak antara dua simpul, menentukan siklus
pada graf, dan masih banyak lagi. DFS dapat diimplementasikan dengan menggunakan rekursi
atau stack.

Studi Kasus
Pada Gambar tersebut Merupakan Visualisasi dari Teknik DFS, Pada gambar graph terdapat
Node yang berwarna ungu sebagai node awal lalu node bewarna hijau merupakan node goals
atau node yang dituju.

pada tabel terdapat expand node sebagai node yang akan di expand node yang terhubungnya.
lalu terdapat Node List merupakan node yan gterhubung dari expand node atau bisa dikatakan
sebagai anak dari expand node

jadi pada Expand Node S terdapat A,B,&C yang merupakan Node list atau anak nodenya, lalu
pada Node A terdapat node expand A yang memiliki anak D,E,B,&C.

Node list diperoleh dari Anak dari Expand node. berikut penjelasannya :

Expand node S terdapat Node List A,B,C yang berada dibawahnya, lalu DFS akan memilih
node paling kiri yaitu A
maka terbentuklah jalur S - A, lalu pada A terdapat D,E,B,C. mengapa B dan C tetap ditulis?
karena jika anak dari A sudah tidak ada node lagi dibawahnya maka node akan naik ke S
lagi dan memilih node paling kiri lagi yaitu B sehingga S-A-D-E-B-... . jika masih ada maka
jalur S-A-... masih dipilih lagi.
Pada DFS dapat berguna untuk menentukan berapa kilometer yang dapat ditampuh untuk
melalui jalur antar kota di sebuah wilayah. agar dapat melihat bentuk graphnya maka denah
dapat diubah menjadi bentuk graph. lalu jalur akan menentukan alur mana yang dapat dilalui
dan bisa di akumulasi berapa jarak yang diperlukan.

Implementasi Pada program Phyton


Deklarasi Graf
pendeklarasian variabel grap menggunakan tipe data dictionary

graph = {
  'A' : ['Z','S', 'T'],
  'Z' : ['O'],
  'O' : ['S1'],
  'S1' : ['F','R'],
  'F' : ['B'],
  'B' : [],
  'R' : [],
  'S' : ['O1', 'F1', 'R1'],
  'O1' : [],
  'F1' : ['B1'],
  'B1' : [],
  'R1' : ['C', 'P'],
  'C' : [],
  'P' : [],
  'T' : ['L'],
  'L' : ['M'],
  'M' : ['D'],
  'D' : []
}

pada deklarasi tersebut terdapat nilai Key dan value, yang dimana pada nilai pertama
merupakan key lalu terdapat value yang dipisah oleh tanda titik dua ':' dan juga di bungkus oleh
kurung siku '[ ]'.

Lalu maksud dari 'A' : ['Z','S', 'T'], merupakan key dan value yang dimana key adalah
node A dan value Z,S,&T yang merupakan node yang terhubung oleh A. Jadi value merupakan
Node yang terhubung oleh Node Key.

Mendeklarasikan Function yang diperlukan

visited = set() # Set to keep track of visited nodes of graph.

deklarasi variabel visited untuk menampung node yang dilalui oleh teknik DFS dengan diberi tipe
data Set

def dfs(visited, graph, node):  #function for dfs 
    if node not in visited:
        print (node)
        visited.add(node)
        for neighbour in graph[node]:
            dfs(visited, graph, neighbour)
Fungsi DFS memerlukan parameter visited sebagai nilai tampung Node yang dilalui, graph
sebagai nilai grap yan gakan di uji, dan node sebagai node awal.

pada fungsi ini merupakan fungsi perulangan rekrusif, jadi didalam fungsi ia memanggil dirinya
sendiri dan akan berhenti pada desision if node not in visited: yang berarti jika node sudah
ada di visited maka perulangan akan dihentikan.

lalu fungsi akan menampilkan node tersebut dan ditambahkan kedalam visited jika ia belum
ditambahkan kedalam visited.

Menjalankan Fungsi dfs

print("Following is the Depth-First Search")

Following is the Depth-First Search

dfs(visited, graph, 'A')

A
Z
O
S1
F
B
R
S
O1
F1
B1
R1
C
P
T
L
M
D

Dapat terlihat node awal yaitu A lalu dilanjutkan ke Z dst. dengan begitu dapat terlihat juga alur
bagaimana fungsi dfs berjalan dan sesuai dengan teknik DFS

Produk berbayar Colab - Batalkan kontrak di sini

Anda mungkin juga menyukai