Apa arti pi dalam pseudocode algoritma BFS ini?

9

Saya memiliki pseudocode berikut untuk algoritma pencarian luas-pertama

BFS(G,s)
 1 for each vertex uV(G) \ {s}
 2     color[u] = white
 3     d[u] = ∞
 4     π[u] = nil
 5 color[s] = gray
 6 d[s] = 0
 7 π[s] = nil
 8 Q = ∅
 9 Enqueue(Q,s)
10 while q ≠ ∅
11     u = Dequeue(Q)
12     for each vAdj[u]
13         if color[v] == white
14             color[v] = gray
15             d[v] = d[u] + 1
16             π[v] = u
17             Enqueue(Q,v)
18     color[u] = black

Gambar asli

Saya tidak mengerti apa yang ditunjukkan huruf π dalam konteks ini. Saya tidak terbiasa dengan algoritma ini dan sulit ditebak.

Saya pikir dmenunjukkan jarak, colortentu saja warnanya, tapi itu π... tampaknya menjadi semacam variabel tapi saya tidak mengerti fungsinya dalam kodesemu ini.

nbro
sumber
2
@Snowman saya akan menggunakan gaya yang digunakan dalam ilmu komputer dan publikasi akademik daripada matematika khusus, tapi saya setuju dengan ide umum. Pertanyaan ini menanyakan tentang penggunaan ini yang mungkin telah dijawab dengan membaca halaman wikipedia , dan π bukan sesuatu yang umum digunakan, tetapi lebih spesifik tentang bagaimana penulis menulis algoritma. Saya khawatir bahwa ada terlalu banyak variasi pada pseudocode dan bertanya tentang apa yang masing-masing karakter dalam setiap gaya artinya bisa lepas kendali.
1
Apakah sering huruf π digunakan dalam pseudocode? Terkadang, tetapi maknanya akan bervariasi tergantung pada konteksnya.
Rufflewind
1
@Snowman: π di sini bukan fungsi. Ini adalah array yang bisa berubah dari simpul yang diindeks oleh simpul.
Rufflewind
1
Dalam konteks ini π hanyalah simbol yang digunakan dalam algoritma, mirip dengan d dan warna. Terkadang penulis algoritme lebih suka menggunakan simbol huruf tunggal daripada nama imut seperti "parentVertices" atau sesuatu yang mungkin cenderung digunakan dalam bahasa pemrograman.
Brandin
@Snowman Apakah Anda bercanda? Ini bukan pertanyaan matematika. Ini adalah tentang menafsirkan pseudocode untuk menulis sebuah program, mengapa ini tidak tentang pengembangan perangkat lunak, saya benar-benar tidak bisa mengerti.
nbro

Jawaban:

17

Saya percaya penggunaan π di sini adalah "orang tua" yang sebenarnya. Jadi dalam hal ini, "induk" dari v   adalah kamu karena kita sedang melihat semua simpul yang berdekatan dengan kamu .

J Trana
sumber
0

Vektor π pasti membuat simpul u yang Anda gunakan untuk simpul v. Ini membantu ketika Anda harus membangun pohon BFS dari grafik. Meskipun tidak perlu, teknik ini mengurangi banyak kerumitan ketika Anda harus melakukan lebih banyak waktu BFS (mis. Algoritma Edmonds-Karp untuk menghitung aliran maksimum antara dua node dalam grafik). Dalam hal ini Anda tidak perlu menjalankan BFS lebih banyak karena Anda sudah memiliki pohon BFS yang dibangun dan lintasi dari daun ke root.

Columb
sumber