Page 16 - E-Book Kecerdasan Buatan Dandung PTI 1A
P. 16

Code Python Metode DFS


                     jalur = {'M' : ['C','B','A'],
                              'A' : ['E','D'],
                              'D' : [],
                              'E' : ['K','J'],
                              'J' : ['Q','T'],
                              'T' : [],
                              'Q' : [],
                              'K' : [],
                              'B' : ['G','F'],
                              'F' : [],
                     def dfs(graf, mulai, tujuan):
                              'G' : ['N','L'],
                       star =[[mulai]]
                              'L' : ['T','R'],
                       visited = set()
                              'R' : [],
                       while star :
                              'T' : [],
                         #hitung panjang tumpukan dan masukkan ke variabel panjang_tumpukan
                              'N' : [],
                         panjang_tumpukan = len(star)-1
                              'C' : ['I','H'],
                         # Masukan tumpukan paling atas ke variabel jalur
                              'H' : ['P','O','T'],
                         jalur = star.pop(panjang_tumpukan)
                              'T' : [],
                         # Simpan node yang dipilih ke variabel state, misal jalur = C, B maka simpan B ke
                              'O' : ['S','T'],
                      Variabel state
                              'T' : [],
                         state = jalur[-1]
                              'S' : [],
                         # Cek state apakah sama dengan tujuan, jika ya maka return jalur
                              'P' : [],
                         if state == tujuan :
                              'I' : []
                           return jalur
                              }
                           # Jika state tidak sama dengan tujuan, maka cek apakah state tidak ada di visit
                     ed
                         elif state not in visited:
                           #jika statet tidak ada di visited maka cek cabang
                           for cabang in graf.get(state,[]): # cek semua cabang dari state
                             jalur_baru = list(jalur) # masukkan isi dari variabel jalur ke variabel jalur
                      baru
                             jalur_baru.append(cabang) # update isi jalur baru dengan cabang
                             star.append(jalur_baru) # update queue dengan jalur_baru
                             #tandai state yang sudah dikunjungi sebagai visited
                             visited.add(state)
                           #cek isi antrian
                           isi = len(star)
                           if isi == 0:
                               print("tidaj ditemukan")

                     #memanggil fungsi
                     print("Hasil DFS : ", dfs(jalur,"M","T"))








                                                                                                    13
   11   12   13   14   15   16   17   18   19   20   21