BFS (BREADTH FIRST SEARCH) dengan contoh dan program dalam python

Februari 26, 2022

BREADTH FIRST SEARCH adalah Satu dari banyaknya algoritma pencarian path atau jalur secara melebar. 

Syaratnya :

1. Mengunjungi node keberangkatan yang sudah ditentukan, lalu mengunjungi node lain yang bertetangga atau setara dengan node sebelumnya.

2. Menggunakan Queue atau antrian (First in first out) dimana setiap node yang dikunjungi akan dimasukkan ke dalam antrian tepat hanya 1 kali.

Step by step :

1. Masukkan node akar ke dalam queue.

2. Ambil node dari queue teratas, lalu cek apakah merupakan solusi?. 

3. Jika node merupakan solusi, pencarian selesai, dan hasil dikembalikan. 

4. Jika node bukan solusi, masukkan seluruh node anak ke dalam queue. 

5. Jika queue kosong, dan setiap node sudah di cek, pencarian berakhir.

6. Jika queue tidak kosong, ulangi pencarian mulai step ke 2.

Contoh :

1. Tentukan vertexlist dan edgelist 

2. Simulasikan pencarian jalur menggunakan BFS dengan node awal K dan node akhir D (Simulasikan 1 per 1 node) 

3. Modifikasilah source code yang telah diberikan, lalu tentukan lah pencarian jalur menggunakan BFS dengan node awal K dan node akhir D.

Tree binernya seperti ini :


Jawab :
Buka link drive ini file berformat pdf.


Contoh program python bfs berikut ini link google colabsnya. 
#Tessalonica Putry Avrylya - 672020167

#vertexlist dan edgelist dibuat list
graph = {
    'A': ['B', 'C'],
    'B': ['A','D','E'],
    'C': ['A','F','G'],
    'D': ['B','H'],
    'E': ['B','I'],
    'F': ['C'],
    'G': ['C','J','K'],
    'H': ['D'],
    'I': ['E'],
    'J': ['G'],
    'K': ['G','L'],
    'L': ['K'],
}

def bfs(graph_penelusuranmulaiakhir):
    antre = [[mulai]]
    visited = set()

    while antre:
        #Jalur pertama dalam antre
        jalur = antre.pop(0)
        #Node terakhir di jalur
        vertex = jalur[-1]
        #Kroscek jalur apakah sampai akhir
        if vertex == akhir:
            return jalur
        #Kroscek node sudah berada di node yang dikunjungi supaya tidak mengulang
        elif vertex not in visited:
            #Mencari node yang berdekatan, membangun jalur baru dan memasukkannya ke dalam antre
            for current_neighbour in graph_penelusuran.get(vertex, []):
                new_jalur = list(jalur)
                new_jalur.append(current_neighbour)
                antre.append(new_jalur)
            #Tandai simpul yang sudah dikunjungi
            visited.add(vertex)
#Mencetak BFS
print (bfs(graph, 'K', 'D'))
Outputnya :

Link google colabs :



Link Youtube :



TERIMAKASIH

Share this :

Hai readers. Saya seorang pelajar di perbatasan provinsi Jateng dan Jatim. I hope you're can enjoy to this blog guys.

Previous
Next Post »
0 Komentar

Penulisan markup di komentar
  • Silakan tinggalkan komentar sesuai topik. Komentar yang menyertakan link aktif, iklan, atau sejenisnya akan dihapus.
  • Untuk menyisipkan kode gunakan <i rel="code"> kode yang akan disisipkan </i>
  • Untuk menyisipkan kode panjang gunakan <i rel="pre"> kode yang akan disisipkan </i>
  • Untuk menyisipkan quote gunakan <i rel="quote"> catatan anda </i>
  • Untuk menyisipkan gambar gunakan <i rel="image"> URL gambar </i>
  • Untuk menyisipkan video gunakan [iframe] URL embed video [/iframe]
  • Kemudian parse kode tersebut pada kotak di bawah ini
  • © 2015 Simple SEO ✔