Bu BFS algoritması sözde kodunda pi ne anlama geliyor?


9

Ben ilk genişliği arama algoritması için aşağıdaki sözde kodu var

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

Orijinal görüntü

Bu bağlamda π harfinin ne anlama geldiğini anlamıyorum. Bu algoritmaya aşina değilim ve tahmin etmek zor.

Sanırım dmesafeyi gösteriyor, colorelbette renk, ama π... bir çeşit değişken gibi görünüyor ama işlevini bu sahte kodda anlamıyorum.


2
@Snowman Özellikle matematik yerine bilgisayar bilimi ve akademik yayınlarda kullanılan stille devam ederdim , ama genel fikre katılıyorum. Bu soru, wikipedia sayfasını okuyarak bu kullanımın cevaplanmış olabileceğini soruyor ve common yaygın kullanımda değil, yazarın algoritmayı nasıl yazdığına özgü bir şey. Sahte kodda çok fazla varyasyon olduğundan ve her stildeki her karakterin ne anlama gelebileceğini sormaktan endişe ediyorum.

1
Genellikle sahte kodda π harfi kullanılıyor mu? Bazen, ama anlamı bağlama bağlı olarak değişir.
Fırfırlı Rüzgar

1
@Snowman: π işte bir işlev değil. Köşeler ile endekslenen değiştirilebilir bir köşe dizisidir.
Fırfırlı Rüzgar

1
Bu bağlamda π sadece algoritmada kullanılan, d ve renge benzer bir semboldür. Bazen algoritma yazarları, "parentVertices" gibi sevimli adlar veya bir programlama dilinde kullanılmaya meyilli bir şey yerine tek harfli semboller kullanmaktan hoşlanırlar.
Brandin

@ Şaka yapıyorsun Şaka mı yapıyorsun? Bu bir matematik sorusu değil. Bir program yazmak için bir sahte kodu yorumlamakla ilgilidir, bu neden yazılım geliştirme ile ilgili olmasa, gerçekten anlayamıyorum.
nbro

Yanıtlar:


17

Π Burada kullanımının gerçek “ebeveyni” olduğuna inanıyorum. Yani bu durumda, bir “üst” v   olan u biz bitişik bütün düğümler bakıyoruz çünkü u .


0

Π vektörü kesinlikle v düğümünde geldiğiniz u düğümünü tutar. Bu, grafiğin BFS ağacını oluşturmanız gerektiğinde yardımcı olur. Her ne kadar gerekli olmasa da, bu teknik BFS'yi daha fazla zaman harcamanız gerektiğinde karmaşıklığı çok azaltır (örneğin , bir grafikteki iki düğüm arasındaki maksimum akışı hesaplamak için Edmonds-Karp algoritması ). Bu durumda, BFS ağacını zaten oluşturduğunuzdan ve yaprakları yapraklardan köke geçirdiğiniz için BFS'yi daha fazla çalıştırmanız gerekmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.