To łącze zapewnia algorytm znajdowania średnicy drzewa bezkierunkowego za pomocą BFS / DFS . Zreasumowanie:
Uruchom BFS na dowolnym węźle na wykresie, pamiętając węzeł wykryty jako ostatni. Uruchom BFS, pamiętając ostatnio wykryty węzeł v. d (u, v) to średnica drzewa.
Dlaczego to działa?
Strona 2 tego zawiera uzasadnienie, ale jest mylące. Cytuję początkową część dowodu:
Uruchom BFS na dowolnym węźle na wykresie, pamiętając węzeł wykryty jako ostatni. Uruchom BFS, pamiętając ostatnio wykryty węzeł v. d (u, v) to średnica drzewa.
Prawidłowość: Niech a i b będą dowolnymi dwoma węzłami, tak aby d (a, b) była średnicą drzewa. Istnieje unikalna ścieżka od a do b. Niech będzie pierwszym węzłem na ścieżce odkrytej przez BFS. Jeśli ścieżki od s do u oraz od a do b nie dzielą krawędzi, wówczas ścieżka od t do u zawiera s. Więc
.... (kolejne nierówności następują ..)
Nierówności nie mają dla mnie sensu.
Odpowiedzi:
Wszystkie części dowodu roszczenia zależą od 2 kluczowych właściwości drzew o nieukierunkowanych krawędziach:
Wybierz dowolne węzła drzewa . Załóżmy , że u , v ∈ V ( G ) są węzłami z d ( u , v ) = d i a m ( G ) . Załóżmy ponadto, że algorytm znajduje najpierw węzeł x zaczynający się od s , a następnie jakiś węzeł y zaczynający się od x . wlog d ( s , u ) ≥ d ( s , v ) . zauważ tos u , v ∈ V.( G ) re( u , v ) = di a m ( G ) x s y x re( s , u ) ≥ d( s , v ) muszą zostać zachowane, chyba że pierwszy stopień algorytmu nie skończy się na x . Zobaczymy, że d ( x , y ) = d ( u , v ) .re( s , x ) ≥ d( s , y) x re( x , y) = d( u , v )
Najbardziej ogólną konfigurację wszystkich zaangażowanych węzłów można zobaczyć w następującej pseudo-grafice (prawdopodobnie lub s = z x y lub obu):s = zu v s = zx y
wiemy to:
1) i 2) implikować .re( u , v ) = d( zu v, v ) + d( zu v, u )≥ d( zu v, x ) + d( zu v, y) = d( x , y) + 2re( zu v, zx y)≥ d( x , y)
3) i 4) sugerująre( zx y, y) + d( s , zx y) + d( zx y, x )≥ d( s , zu v) + d( zu v, u ) + d( v , zu v) + d( zu v, zx y) równoważny .re( x , y) = d( zx y, y) + d( zx y, x )≥ 2 ∗re( s , zu v) + d( v , zu v) + d( u , zu v)≥ d( u , v )
dlatego .re( u , v ) = d( x , y)
proofy analogowe obowiązują dla alternatywnych konfiguracji
i
są to wszystkie możliwe konfiguracje. w szczególności ze względu na wynik etapu 1 algorytmu oraz y ∉ p a t h ( x , u ) , y ∉ p a t h ( x , v ) ze względu na etap 2.x ∉ p a t h ( s , u ) , x ∉ p a t h ( s , v ) y∉ p a t h ( x , u ) , y∉ p a t h ( x , v )
źródło
Intuicja jest bardzo łatwa do zrozumienia. Załóżmy, że muszę znaleźć najdłuższą ścieżkę, która istnieje między dowolnymi dwoma węzłami w danym drzewie.
Po narysowaniu niektórych diagramów możemy zaobserwować, że najdłuższa ścieżka zawsze będzie występować między dwoma węzłami liścia (węzły połączone tylko jedną krawędzią). Można to również udowodnić przez sprzeczność, że jeśli najdłuższa ścieżka znajduje się między dwoma węzłami i jeden lub oba z dwóch węzłów nie jest węzłem liścia, wówczas możemy przedłużyć ścieżkę, aby uzyskać dłuższą ścieżkę.
Jednym ze sposobów jest sprawdzenie, które węzły są węzłami liścia, a następnie uruchomienie BFS z jednego z węzłów liścia, aby uzyskać węzeł najdalej od niego.
Zamiast najpierw dowiedzieć się, które węzły są węzłami liścia, uruchamiamy BFS z losowego węzła, a następnie sprawdzamy, który węzeł jest najdalej od niego. Niech węzłem najdalej będzie x. Oczywiste jest, że x jest węzłem liścia. Teraz, jeśli uruchomimy BFS od x i sprawdzimy od niego najdalszy węzeł, otrzymamy naszą odpowiedź.
Ale jaka jest gwarancja, że x będzie końcowym punktem maksymalnej ścieżki?
Zobaczmy na przykładzie: -
Załóżmy, że uruchomiłem mój BFS od 6. Węzłem w maksymalnej odległości od 6 jest węzeł 7. Za pomocą BFS możemy uzyskać ten węzeł. Teraz zaczynamy BFS od węzła 7, aby uzyskać węzeł 9 w maksymalnej odległości. Ścieżka od węzła 7 do węzła 9 jest wyraźnie najdłuższą ścieżką.
Co jeśli BFS, który rozpoczął się od węzła 6, dał 2 jako węzeł w maksymalnej odległości. Następnie, gdy będziemy BFS od 2, otrzymamy 7 jako węzeł w maksymalnej odległości, a najdłuższa ścieżka będzie wtedy 2-> 1-> 4-> 5-> 7 o długości 4. Ale rzeczywista najdłuższa długość ścieżki wynosi 5. Nie można dzieje się tak, ponieważ BFS z węzła 6 nigdy nie da węzła 2 jako węzła w maksymalnej odległości.
Mam nadzieję, że to pomaga.
źródło
Oto dowód, który jest zgodny z zestawem rozwiązań MIT powiązanym z pierwotnym pytaniem. Dla jasności użyję tego samego zapisu, którego używają, aby łatwiej było dokonać porównania.
Załóżmy, że mamy dwa wierzchołki oraz b tak, że odległość pomiędzy i B na ścieżce P ( , b ) ma średnicę, na przykład na odległość d ( , b ) jest maksymalna odległość między dwoma punktami w drzewie. Załóżmy, że mamy również węzeł s ≠ a , b (jeśli s = a , to byłoby oczywiste, że schemat działa, ponieważ pierwszy BFS otrzyma b , a drugi wróci do a). Załóżmy również, że mamy węzełza b za b p ( a , b ) re( a , b ) s ≠ a , b s = a b taki, że d ( s , u ) = max x d ( s , x ) .u re( s , u ) = maksxre( s , x )
Lemat 0: Zarówno i b są węzłami liści.za b
Dowód: gdyby nie były węzłami liścia, moglibyśmy zwiększyć poprzez rozszerzenie punktów końcowych na węzły liścia, przeciwstawiając się d ( a , b ) jako średnicy.re( a , b ) re( a , b )
źródło
Najpierw uruchom DFS z losowego węzła, a następnie średnica drzewa jest ścieżką między najgłębszymi liśćmi węzła w jego poddrzewie:
źródło
Zgodnie z definicją BFS odległość (od węzła początkowego) każdego eksplorowanego węzła jest albo równa odległości poprzedniego badanego węzła, albo większa o 1. Zatem ostatni węzeł badany przez BFS będzie jednym z najdalszych od początku węzeł.
źródło
Jedną z kluczowych rzeczy, o których należy wiedzieć, jest to, że drzewo jest zawsze płaskie, co oznacza, że można je ułożyć na płaszczyźnie, dlatego często działa zwykłe myślenie dwuwymiarowe. W takim przypadku algorytm mówi, że należy rozpocząć od dowolnego miejsca, a następnie odejść jak najdalej. Odległość od tego punktu do możliwie największej odległości od tego punktu to największa odległość w drzewie, a zatem średnica.
Ta metoda działałaby również w celu znalezienia średnicy prawdziwej, fizycznej wyspy, gdybyśmy zdefiniowali ją jako średnicę najmniejszego okręgu, który całkowicie otaczałby wyspę.
źródło
@op, sposób definiowania przypadków w pliku PDF może być nieco wyłączony.
Myślę, że te dwa przypadki powinny być:
Reszta dowodu w pliku PDF powinna nastąpić.
Przy tej definicji liczba pokazana przez OP mieści się w przypadku 2.
źródło