şükela:  tümü | bugün
  • elinizde bir tree varsa (binary olmak zorunda değil) ve arama yapmak istiyorsanız kullanacağınız yöntemlerden biridir. kullanım alanlarından biri aidir..
    treenizde gezerken önce gidebildiiniz kadar gider, olmazsa geri dönerek aramaya devam edersiniz..

    a
    -b
    --e
    ---k
    --f
    -c
    --g
    -d
    --h
    --i
    --j

    (a nin childlari b,c,d dir)

    olsun treeniz. bu arama metodunu kullanirken nodeları şu sırayla gezer
    abekfcgdhıj

    (bkz: breadth first search)
  • hocanın sınıfta anlatıp "ispatını sorarım öğrenin" dediği ve benim sırf geyik olsun diye sozlukte aradığım, bu entry'nin gerçekten var oldugunu gördüğümde şok geçirdiğim kavram
  • her dalı ayrı ayrı temizleyerek giden arama metodu. bir nevi kağıda çizerseniz soldan sağa doğru arayarak gider.
  • recursion kullanmadan implement ederken stack kullanılır back tracking olayından dolayı. breadth first search'te ise, level by level arama yapıldığı için queue kullanılır.

    (bkz: fifo)
    (bkz: lifo)
  • "derinlik öncelikli arama" olarak türkçeye çevirilebilecek graph theory kavramıdır.

    tree ve tree'ye dönüştürülerek ifade edilebilecek olmalarından ötürü graph yapılarının çözümünde kullanılan iki temel yöntemden birisidir. pek çok farklı problem yapısı aynı zamanda birer graph problemi olarak ele alınabilecek olduğundan ötürü başta bilgisayar bilimleri olmak üzere sayısız alanda kullanım fırsatı bulmuştur.

    bu yöntemin temel mantığı farklı dallara ayrılarak ilerleyen "tree" (ağaç) yapılarında çözümü bulmak için öncelikle bir ana dal seçmek ve bu dal üzerinde çıkmaza ya da sonsuz döngüye denk gelene kadar ilerlemek üzerine kuruludur. eğer hedefe ulaşamadan bahsi geçen iki sonuçtan birine rastlanırsa birer adım geriye gidilerek ilk denk gelinen yol ayrımından diğer dala geçilir ve bu böyle devam eder. ismi de bu işlem sırasında her defasında en derin uca kadar inilmesinden gelmektedir. yine bu işlemde görülebileceği gibi arama sırasında en son gezilen dallar başarısızlık neticesinde ilk değiştirilen dallardır, bu prensip "last in first out" ("son giren ilk çıkar" / "lifo") olarak isimlendirilir ve kullanım kolaylığı açısından programlama dillerinde "stack" ("yığın") isimli veri yapıları üzerinde modellenir.

    dal uzunlukları farkı fazla olan tree'lerde ele alınan dal cok uzun ise veya aranan hedef sıralamada en son secilecek dal üzerinde yer alıyorsa sonuca ulasmak oldukca uzun sürebilir. ayrıca bu yöntem ile hedefe giden birkaç farklı dal bulunan bir tree üzerinde en kısa yol bulunmak isteniyorsa bütün ihtimallerin denenmesi ve adım sayılarının kayıt altında tutulması gerekir ki bu da oldukça verimsizdir.

    wikipedia linki

    diğer arama yöntemi için:
    (bkz: breadth first search)

    ayrıca:
    (bkz: graph theory)
    (bkz: graph)
    (bkz: tree)

    (bkz: last in first out)
    (bkz: stack)

    (bkz: shortest path problem)
  • büyük yazılım projelerinin derlenmesinde, mutlaka ihtiyaç duyulan yazılımların (hard dependencies) tespitinde de kullanılan algorıtma.
  • labirent içinde yol bulma algoritması olarak çok güzel kullanılabilir.
  • yazılım mülakatlarında karşınıza çıkma ihtimali yüksek olan bir search algoritmasıdır.
    bir graphta (veya 2d array) connected componentları bulmak için kullanılabilir.

    örneğin, verilen 2d array'de en büyük adayı (bağlı 1'lerden oluşan) depth first search ile bulabiliriz.

    [0,0,1,0,0,0,0,1,0,0,0,0,0],
    [0,0,0,0,0,0,0,1,1,1,0,0,0],
    [0,1,1,0,1,0,0,0,0,0,0,0,0],
    [0,1,0,0,1,1,0,0,1,0,1,0,0],
    [0,1,0,0,1,1,0,0,1,1,1,0,0],
    [0,0,0,0,0,0,0,0,0,0,1,0,0],
    [0,0,0,0,0,0,0,1,1,1,0,0,0],
    [0,0,0,0,0,0,0,1,1,0,0,0,0]