DFS ve BFS'nin düğümleri aynı sırayla işlemesine neden olan grafikler


11

Bazı grafikler için, DFS ve BFS arama algoritmaları, ikisi de aynı düğümde başlaması şartıyla, düğümleri aynı sırada işler. İki örnek, yıldız şeklindeki yollar ve grafiklerdir ( keyfi sayıda çocuklu derinlik ağaçları ). Bu özelliği karşılayan grafikleri kategorilere ayırmanın bir yolu var mı?1


6
Her iki durumda da bunun yalnızca belirli bir düğümden başlatırsanız işe yaradığını unutmayın. Örneğin, merkezi bir düğümü uzun bir yoldan seçerseniz, DFS ve BFS'den farklı siparişleri geri alırsınız.
templatetypedef

1
Bir yıldız ya da yoldan başka ilginç olasılıklar var mı? İlk bakışta, hem kardeş hem de çocukla bir tepe noktanız varsa, hemen farklı çapraz geçişler elde edersiniz, bu nedenle ya tepe noktasının çocukları (kök dışında) yoktur ve bir yıldız alırsınız ya da tepe noktasının bir kardeşi yoktur. ve bir yol elde edersiniz. Sanırım bir klik de işe yarıyor, ama hem yıldız hem de yol gömülü.
Luke Mathieson

2
@LukeMathieson En sağdaki çocuğun başka bir yıldızın kökü olduğu bir yıldız düşünüyorum. Sanırım bu da işe yarayacaktır. Genel bir ifade bile yapabiliriz: eğer arama v∈V düğümünde başladığında özelliği tatmin ederse, en sağdaki alt öğe olan bir yıldız da bunu yapar . Eğer Daha da iyisi, ve tatmin özelliği ve düğüm işleme sonuncusu ve olan arama başlar burada sonra köprü kenarı ekleyerek bir grafik olduğu tatmin özelliği oluşturur. Değiştirme tarafından da sanırım çalışır.= v G 1 G 2 v 1 G 1 v 2 G 2 ( v 1 , v 2 ) v 1 v 2G=(V,E)=vG1G2v1G1v2G2(v1,v2)v1v2
saadtaame

2
İyi bir nokta, bu yüzden ilk grafiğin sağ yaprağını ikincinin kökü ile tanımlayabileceğiniz bir tür sağ-özyinelemeli kompozisyon var.
Luke Mathieson

@LukeMathieson Bir düğümün bir kardeşi ve bir çocuğu olduğu durumu, o çocuk ile üstü arasına bir kenar ekleyerek düzeltebilirsiniz . İşte benim önerim: grafiği verildi . , eğer olacağı şekilde o, , mülkün için . Bir sonraki adım, bu öneriyi kanıtlamak veya reddetmektir. v G = ( V , E ) x V y , z , w V ( y , x ) , ( z , y ) , ( x , w ) E ( x , z ) EvvG=(V,E)xVy,z,wV(y,x),(z,y),(x,w)E(x,z)EG
saadtaame

Yanıtlar:


6

BFS ve dfs'imizin belirli bir düğümden başlamak için bir kuralı olduğunu ve her iki yönlü ilk önce düğümü en düşük derecede ziyaret ettiklerini varsayalım:

DFS-BFS

en soldaki siyah düğümden başlayın, sonra (BFS ve DFS) en soldaki kırmızı düğümü ziyaret eder, bir sonraki siyah düğümü ziyaret ederler ve böylece daha genel hale getirmek için üçgenler arasında bazı yollar ekleyebilir veya yıldız ekleyebilirsiniz üçgenleri bitirdikten sonra ...


Bu sizin varsayımınız altında doğrudur. Aslında iyi bir noktaya değindiniz; bir seçenekle karşı karşıya kaldığında gündeme (yığın veya kuyruk) eklenen düğümlerin hangi sırada olduğunu belirtmeliyiz.
saadtaame

Programlama için LIFO ve FIFO'nun sırasıyla DFS ve BFS verimi göz önünde bulundurularak, bunun gibi (zamanlamanın yığın veya kuyruk benzeri olmayabileceği) zamanlamanın ne derinlik ne de ilk önce arama olmadığı iddia edilebilir. bazı durumlarda birine ya da diğerine benzeme konusundaki kararsızlığını açıklayabilirsiniz.
Niel de Beaudrap

1
Ben bir yığın veya kuyruk açısından uygulanabilir düşünüyorum. İşlerin nasıl kaldırıldığını (LIFO veya FIFO) değiştirmez, çocukların eklenme sırasını değiştirir (bu durumda, önce en düşük derece).
SamM

@NieldeBeaudrap aslında bu sadece her iki yolun da aynı yerde olduğunu gösteren bir yapı.
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.