BFS / DFS kullanarak bir ağacın çapını bulmak için algoritma. Neden çalışıyor


28

Bu bağlantı, BFS / DFS kullanarak yönlendirilmemiş bir ağacın çapını bulmak için bir algoritma sağlar . Özetleme:

En son keşfedilen düğümü hatırlayarak, grafikteki herhangi bir düğümde BFS'yi çalıştırın. En son keşfedilen v düğümünü hatırlamak için BFS'yi çalıştırın. d (u, v) ağacın çapıdır.

Neden çalışıyor

Sayfa 2 Bu bir mantık sağlar, ancak karıştırıyor. Kanıtın ilk kısmını alıntı yapıyorum:

En son keşfedilen düğümü hatırlayarak, grafikteki herhangi bir düğümde BFS'yi çalıştırın. En son keşfedilen v düğümünü hatırlamak için BFS'yi çalıştırın. d (u, v) ağacın çapıdır.

Doğruluk: a ve b, d (a, b) ağacının çapı olacak şekilde iki düğüm olsun. A'dan b'ye kadar olan benzersiz bir yol var. BFS tarafından keşfedilen bu yoldaki ilk düğüm olalım. s'ye u ve giden yollar kenarları paylaşmazsa, giden yol s'yi içerir. Yanip1p2

d(t,u)d(s,u)

d(t,u)d(s,a)

.... (daha fazla eşitsizlik var ..)

Eşitsizlikler bana mantıklı gelmiyor.


Bağlantılı soruda alıntı bulamıyorum.
Raphael

1
Çözümde "kenarları paylaşma" yerine "köşeleri paylaşma" yla değiştirmeyi deneyin.
Yuval Filmus

DFS değil, yalnızca BFS kullanıyorsunuz.
Küçük resim

Yanıtlar:


11

Talebin kanıtlanmasının tüm kısımları, yönlendirilmemiş kenarları olan ağaçların 2 önemli özelliğine dayanır:

  • 1-bağlılık (yani, bir ağaçtaki herhangi bir 2 düğüm arasında tam olarak bir yol vardır)
  • herhangi bir düğüm ağacın kökü olarak işlev görebilir.

İsteğe bağlı bir ağaç düğümü seçin . U , v V ( G ) ' nin d ( u , v ) = d i a m ( G ) olan düğümler olduğunu varsayalım . Ayrıca, algoritma, bir düğüm bulur varsayalım x başlayan s önce biraz düğüm y başlayan x yanında yer almaktadır. d f d ( s , u ) d ( s , v ) . Bunu not etsu,vV(G)d(u,v)=diam(G)xsyxd(s,u)d(s,v) algoritmanın ilk aşamasında sona olmadığı sürece, sahip olmalıdır x . D ( x , y ) = d ( u , v ) olduğunu göreceğiz.d(s,x)d(s,y)xd(x,y)=d(u,v)

İlgili tüm düğümlerin en genel konfigürasyonu aşağıdaki sözde grafiklerde görülebilir (muhtemelen veya s = z x y veya her ikisi de):s=zuvs=zxy

(u)                                            (x)
  \                                            /
   \                                          /
    \                                        /
     ( z_uv )---------( s )----------( z_xy )
    /                                        \
   /                                          \
  /                                            \
(v)                                            (y)

Biz biliyoruz ki:

  1. . Aksi d ( u , v ) < d ı bir m ( G ) varsayımı ters.d(zuv,y)d(zuv,v)d(u,v)<diam(G)
  2. . Aksi d ( u , v ) < d ı bir m ( G ) varsayımı ters.d(zuv,x)d(zuv,u)d(u,v)<diam(G)
  3. xd(s,zxy)+d(zxy,x)d(s,zuv)+d(zuv,u) , aksi takdirde algoritmanın 1. aşaması olmaz durmuş .x
  4. yd(zxy,y)d(v,zuv)+d(zuv,zxy) , aksi takdirde algoritmanın 2 evre durduruldu olmaz .y

1) ve 2) .d(u,v)=d(zuv,v)+d(zuv,u)d(zuv,x)+d(zuv,y)=d(x,y)+2d(zuv,zxy)d(x,y)

3) ve 4) eşdeğer ila .d(zxy,y)+d(s,zxy)+d(zxy,x)d(s,zuv)+d(zuv,u)+d(v,zuv)+d(zuv,zxy)d(x,y)=d(zxy,y)+d(zxy,x)2d(s,zuv)+d(v,zuv)+d(u,zuv)d(u,v)

bu nedenle .d(u,v)=d(x,y)

alternatif konfigürasyonlar için analog provalar bekletilir

                 (u)                          (x)
                   \                          /
                    \                        /
                     \                      /
     ( s )---------( z_uv )----------( z_xy )
                     /                      \
                    /                        \
                   /                          \
                 (v)                          (y)

ve

                          (x)        (u)  
                          /            \  
                         /              \ 
                        /                \
     ( s )---------( z_xy )----------( z_uv )
                        \                /          
                         \              /           
                          \            /            
                          (y)        (v)            

Bunların hepsi olası yapılandırmalar. Özellikle, bağlı algoritma ve 1. safhasında sonucuna y p bir T h ( x , u ) , y Stage p a t h ( x , v ) 2. aşamadan dolayı.xpath(s,u),xpath(s,v)ypath(x,u),ypath(x,v)


(1) İlk grafiğe göre, s'den x'e kadar olan yol BFS tarafından üretilen ağaçta bulunduğundan her zaman bir sıra halinde u ve v köşeleri içermemeli midir? (2) Eşitsizliğin nasıl elde edildiğini açıklayabilir misiniz? (3) BFS lerden s ile başlayanlar ve x ile başlayanlar u, v'yi yolun bir yerinde bulunduğundan, grafiğin imgur.com/jQ94erY bağlantısında gösterildiği gibi olması gerektiğine inanıyorum . Sağladığınız sebep burada nasıl uygulanır?
05'te curryage

@curryage ağacın verilen ve bfs tarafından yapılmadığına dikkat edin! özel cevaplar: reklam 1) no. İsteğe bağlı olarak kenardaki birçok düğümü ve kenardaki tam olarak 1 düğümü ekleyerek ağacın ayrıntılandırılmasını (1) hayal edin . ilk aşama bfs daha sonra x ile bitecektir. reklam 2) hangi eşitsizliklerin hangileri belirsiz? daima grafiğin çapındaki uzunluğundaki bir yol olduğunu varsayıyoruz . Bu, G'nin 1 bağlı olduğu gibi iyi tanımlanmıştır. ad 3) no: 3.1 dışında herhangi bir 2 düğüm arasında 1'den fazla yol var , bu nedenle grafik bir ağaç değil. ...(s,zxy)( u , v ) d i , bir g ( G ) ( s , y )(zxy,x)(u,v)diag(G)(s,y)
collapsar

çapak ... 3.2 ; Bu, varsayımıyla kabul ve grafiğin çapı, iki düğüm arasındaki maksimum minimum mesafedir. Bir ağaç durumunda, 2 düğüm arasında tam olarak 1 yol vardır, bu nedenle tanım 'herhangi iki düğüm arasındaki maksimum mesafeye' indirgenir. d ( u , vd(x,y)>d(u,v)d(u,v)=diam(G)
collapsar

9

Arkasındaki sezgiyi anlamak çok kolaydır. Verilen ağaçtaki herhangi iki düğüm arasında var olan en uzun yolu bulmam gerektiğini varsayalım.

Bazı şemaları çizdikten sonra, en uzun yolun her zaman iki yaprak düğümü (yalnızca bir kenarı birbirine bağlı olan düğümler) arasında gerçekleşeceğini gözlemleyebiliriz. Bu, en uzun yol iki düğüm arasındaysa ve iki düğümden birinin veya her ikisinin de bir yaprak düğümü olmaması durumunda, daha uzun bir yol elde etmek için yolu uzatabileceğimizle çelişki halinde de kanıtlanabilir.

Bu nedenle, ilk önce hangi düğümlerin yaprak düğümü olduğunu kontrol etmek, ardından düğümü en uzak noktaya getirmek için BFS'yi yaprak düğümünün birinden başlatın.

İlk önce hangi düğümlerin yaprak düğümleri olduğunu bulmak yerine, BFS'yi rastgele bir düğümden başlatır ve daha sonra hangi düğümün en uzak olduğunu görürüz. En uzaktaki düğüm x olsun. X'in bir yaprak düğümü olduğu açıktır. Şimdi BFS'yi x'ten başlatır ve ondan en uzaktaki düğümü kontrol edersek, cevabımızı alırız.

Fakat x'in azami yolun bitim noktası olacağının garantisi nedir?

Bir örnek görelim: -

       1   
    / /\ \
   6 2  4 8
         \ \
          5 9
           \
            7

Diyelim ki BFS'mi 6'dan başlattım. 6'dan maksimum mesafedeki düğüm, 7. düğümdür. BFS kullanarak bu düğümü alabiliriz. Şimdi BFS'yi 7. düğümden yıldızlayarak, 9. düğümü maksimum mesafeden aldık. Düğüm 7'den düğüm 9'a giden yol açıkça en uzun yoldur.

6. düğümden başlayan BFS, maksimum uzaklıktaki düğüm olarak 2 verdi. O zaman 2'den BFS alacağız, maksimum mesafeden düğüm olarak 7 alacağız ve en uzun yol daha sonra 4 ile 2-> 1-> 4-> 5-> 7 olacaktır. Fakat en uzun yol uzunluğu 5'tir. çünkü düğüm 6'daki BFS asla düğüm 2'ye maksimum mesafeden düğüm vermez.

Umarım yardımcı olur.


1
Bu basit ve net bir açıklama! teşekkürler :)
anekix

4

Orijinal soruya bağlı MIT çözümünü daha yakından takip eden bir kanıt. Netlik için, kullandıkları aynı gösterimi kullanacağım, böylece karşılaştırma daha kolay yapılabilir.

ababp(a,b)d(a,b)sa,bs=abud(s,u)=maxxd(s,x)

Lemma 0: Hem hem de , yaprak düğümleridir.ab

Korumalı: bunlar yaprak düğümlerin olmasaydı, biz artırabilir , yaprak düğümleri uç noktaları olarak uzanan ters göre bir çapının.d(a,b)d(a,b)

Lemma 1: .max[d(s,a),d(s,b)]=d(s,u)

Kanıt: Hem hem de nin kesinlikle değerinden daha az olduğu yönündeki çelişkiler açısından varsayalım . İki olaya bakalım:d(s,a)d(s,b)d(s,u)

Örnek 1: yol etmez değil tepe ihtiva . Bu durumda, çap olamaz. Nedenini öğrenmek için, let benzersiz köşe olmak en küçük mesafe ile . Sonra, bu yana, . Benzer şekilde, de sahip olurduk . Bu nin çap olmasına aykırıdır .p(a,b)sd(a,b)tp(a,b)sd(a,u)=d(a,t)+d(t,s)+d(s,u)>d(a,b)=d(a,t)+d(t,b)d(s,u)>d(s,b)=d(s,t)+d(t,b)>d(t,b)d(b,u)>d(a,b)d(a,b)

Durum 2: yolu köşe içeriyor . Bu durumda, tekrar bir köşe için, çünkü çapı olamaz şekilde , hem ve den daha büyük olacaktır .p(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u)d(a,b)

Lemma 1 biz de ikinci Önce Enine aramayı başlatmak nedeni verildiği son keşfedilen köşe ilk BFS. Eğer mümkün olan en büyük mesafe ile tek bir tepe noktası olan , sonra lemma 1 ile, bu gereken çapa eşit bir mesafe ile bir yolun son noktalardan birini ve dolayısıyla ikinci bir BFS olmak kök açıkça bulur çap. En az bir başka noktada bir tepe bulunmayacağım ise diğer taraftan, , öyle ki , o zaman çapı olduğunu biliyoruz ve biz de ikinci BFS'ye başlamak ister önemli değil veya .u s u v d ( s , v ) = D ( s , u ) D ( a , b ) = 2 d ( s , u ) u vuusuvd(s,v)=d(s,u)d(a,b)=2d(s,u)uv


Muhteşem. Bu cevabı gönderdiğiniz için teşekkür ederiz. Bu cevabın herhangi bir olumlu oy almamasına şaşırdım.
Zephyr,

0

İlk önce rastgele bir düğümden bir DFS çalıştırın, daha sonra bir ağacın çapı, DFS alt ağacında bir düğümün en derin yaprakları arasındaki yoldur: görüntü tanımını buraya girin


4
Bu neden işe yarıyor?
Yuval Filmus,

0

BFS'nin tanımına göre, araştırılan her bir düğümün mesafesi (başlangıç ​​düğümünden), önceki düğümün mesafesi 1 ile araştırılmış veya 1 ile daha büyüktür. Böylece, BFS tarafından araştırılan son düğüm başlangıçtan en uzak olanlar arasında olacaktır. düğümü.

Bu nedenle, BFS iki miktarlarını kullanarak algoritma ", gelişigüzel bir düğüm al . Bul düğüm uzak mesafede (son düğüm başlayarak BFS tarafından bulunan ). Düğümü Bul en uzak BFS başlayarak bulunan (son düğüme ). ", böylece birbirinden maksimum mesafeye iki düğüm bulur., bir x x b bir birxaxxbaa


1
Sezgi ile cevap için teşekkürler. Ancak, son cümlenizdeki "böylece" açık değildir. Bu neden takip ediyor? Neden en uzağa olan düğüm, birbirinden en uzak mesafedeki iki düğümden biri olmak zorunda? Bazı kanıtlara ihtiyacı var gibi görünüyor. x
DW

Böyle bir kanıtı nasıl yapacağımı bilmiyorum. Konuşmanın sezgisel olarak doğru olduğunu hissediyorum: eğer iki düğüm birbirinden en fazla uzaktaysa, o zaman herhangi bir düğüm için, ikisinden biri ondan mümkün olan en uzak mesafede olur.
Extrarius

“Sezgisel olarak doğru” iddiası genel olarak genel grafikler için doğru değildir. Grafiğe cs.stackexchange.com/a/213/755 bakın ve BFS'yi düğümünden başlatmayı düşünün (yani, olsun ; o zaman bulacaktır ve düğüm bulmak en uzak , ama bu birbirinden maksimum mesafenin iki düğüm bulmaz. Dolayısıyla iddia edilen ifade doğruysa, genel grafikler için geçerli olmayan ağaçların özel özelliklerine dayanmalıdır. x = v a = u b avx=va=uba
DW

Evet, ancak bu soru yönlendirilmemiş ağaçları belirtir, bu da içinde bulunduğum bağlamdır. Engel çevrimleri ve yönlendirilmiş kenarlar birçok grafik probleminin nedenini önemli ölçüde kolaylaştırır.
Extrarius

0

Bilinmesi gereken en önemli şey bir ağacın her zaman düzlemsel olmasıdır, bu da bir düzlem üzerine yerleştirilebileceği anlamına gelir, bu yüzden sık sık sıradan 2 boyutlu düşünme çalışmaları. Bu durumda, algoritma herhangi bir yerden başlamanın mümkün olduğunca uzağa gideceğini söylüyor. Bu noktadan bu noktadan uzaklaştırabileceğiniz mesafeye kadar olan mesafe ağaçtaki en uzun mesafedir ve bu nedenle çaptır.

Bu yöntem, aynı zamanda, adanın tamamen çevreleneceği en küçük dairenin çapı olarak tanımlanırsak, gerçek, fiziksel bir adanın çapını bulmak için de çalışacaktır.


0

@op, vakaların PDF'de tanımlanma şekli biraz kapalı olabilir.

İki dava olması gerektiğini düşünüyorum:

  1. p1p2p1p2tp2s

  2. p1 ve en az bir ortak köşe var. Bu durumda, , aynı zamanda olan ilk BFS tarafından keşfedilen ilk düğüm olarak .p2tp2p1

PDF'deki ispatın geri kalanı bunu takip etmelidir.

Bu tanımda, OP ile gösterilen şekil Durum 2'ye düşer.

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.