Witam,
nie wiem jak znaleźć średnicę drzewa, pomożecie mi w tym?
chodzi mi o informatyczne drzewo (od tego jest chyba ta strona)
Witam,
nie wiem jak znaleźć średnicę drzewa, pomożecie mi w tym?
chodzi mi o informatyczne drzewo (od tego jest chyba ta strona)
Może ta odpowiedź ci pomoże:
http://forum.warsztat.gd/index.php?topic=23555.0
Ad usuniętych postów/komentarzy: jeśli ktoś nie rozumie pojęcia "średnicy drzewa" to może po prostu nie odpisywać, zamiast pisać o piłach i miarkach.
Ad pytania: prosty dynamiczny algorytm na drzewie.
Średnica drzewa T mającego dzieci L i R to
f(NULL) = 0
f(T) = max(h(L) + h(R) + 1, f(L), f(R))
Gdzie h(x) to wysokość poddrzewa
h(NULL) = 0
h(T) = 1 + max(h(L), h(R))
Wysokośc poddrzewa możesz liczyć jednocześnie ze średnicą, uważaj żeby z tego algorytmu nie zrobić O(n^2).
Wytłumaczenie algorytmu "po polsku" - są trzy opcje na średnicę drzewa:
hmmm wiem o co chodzi z algorytmem tylko nie bardzo wiem jak zakodzić to, wiem że puszcza się dfs'a w dowolnym wierzchołku np. x, potem puszczamy dfs'a w najodleglejszym wierzchołku np. y (nwm jak wyznaczyć najodleglejszy wierzchołek), potem w y znowu puszczamy dfs'a i najodleglejszym wierzchołkiem jest np. z, i wynik jest różnicą z-y
hmmm wiem o co chodzi z algorytmem tylko nie bardzo wiem jak zakodzić to, wiem że puszcza się dfs'a w dowolnym wierzchołku np. x, potem puszczamy dfs'a w najodleglejszym wierzchołku np. y (nwm jak wyznaczyć najodleglejszy wierzchołek), potem w y znowu puszczamy dfs'a i najodleglejszym wierzchołkiem jest np. z, i wynik jest różnicą z-y
To co podałeś to cieżko nazwać algorytmem na średnicę (pewnie chodziło Ci o to co wkleił Sarrus, ale to trochę inaczej działa). Ale popatrz na algorytm który podałem, nie ma żadnego DFSa ani wyznaczania najodleglejszego wierzchołka - prosta funkcja rekurencyjna do zapisania w trzech linijkach.
spk postaram się to zrobić :)