Emre Sevinç wrote:

> Graf üzerinde calismamasi gibi bir durum söz konusu degil bildigim
> kadari ile. Bu baglamda, bir graf üzerinden ilerlerken bir agac
> olusturmus olursunuz.

Mrb,

http://en.wikipedia.org/wiki/Breadth-first_search adresini oneriniz
uzerine ziyaret ettim. Bu algoritmayi daha once dosya sistemini gezmek
icin kullanmi$tim, bu yuzden ornekler verip deneyimimi aktarabilirim.

*function* breadthFirstSearch (Start, Goal) { 
    enqueue(Queue,Start)
    *while* notEmpty(Queue) {
        Node := dequeue(Queue)
        *if* Node = Goal {
            return Node /*the code below does not get executed*/
        }
        *for each* Child *in* Expand(Node) {
            *if* notVisited(Child) {
                setVisited(Child)
                enqueue(Queue, Child)
            }
        }
    }
}

Yukarida formal yapisini listeledigim BFS algoritmasinin graphleri
gezebilmesini (trees not graphs) saglayan bolumu a$agida listeledim:

*for each* Child *in* Expand(Node) {
            *if* notVisited(Child) {
                setVisited(Child)
                enqueue(Queue, Child)
            }
        }

Buna karsin paul'un kodunda bu mevcut degil. Bu yuzden kod, ba$ladigi
yere donebilmekte ve sonsuz donguye girebilmektedir.

Anlamakta zorluk cekenler icin gercek bir ornek vereyim istedim. Ornegin
bir dizindeyiz ve tum dosyalari sirayla gezmek istiyoruz. "Regular file"
olan dosyalari ilk dongude dolasiyoruz, buldugumuz alt dizinleri
kuyruk'a ekliyoruz. Burada yapi sadece agac olursa sorun yok. Buna
karsin, dosya sistemi, symlink'ler ile graph yapisina da sahip
olabilmekte. Bu durumda, herhangi bir symlink bizi basladigimiz yere
goturebilir, bu yuzden ziyaret ettigimiz yerleri hatirlamamiz $art.

Sonuc olarak, BFS evet, tree ve graph yapilarini gezebilir, buna kar$in,
yukarida bahsettigim sebeptendir ki, paul'in BFS uygulamasi yanlizca
tree'ler uzerinde calisabilir.

Saglicakla,
Evrim.


_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap