eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Szukanie drzewka w tył
Ilość wypowiedzi w tym wątku: 10

  • 1. Data: 2016-04-21 13:22:56
    Temat: Szukanie drzewka w tył
    Od: Borneq <b...@a...hidden.pl>

    Na początek, jaka rekurencyjna procedura?
    W przód jest prosto:

    private void RecursiveSearch(TreeNode root, string text)
    {
    if (root.Text.Contains(text))
    textBox1.AppendText(textBox1.Lines.Count()+1 + ": " +
    root.Text + "\n");
    for (int i = 0; i < root.Nodes.Count; i++)
    RecursiveSearch(root.Nodes[i], text);
    }

    Tu trzeba by się ustawić na najniższym, ostatnim elemencie i iść w górę.


  • 2. Data: 2016-04-21 13:47:31
    Temat: Re: Szukanie drzewka w tył
    Od: Borneq <b...@a...hidden.pl>

    W dniu 21.04.2016 o 13:22, Borneq pisze:
    > Na początek, jaka rekurencyjna procedura?

    Po analizie wychodzi od razu procedura iteracyjna, i co ciekawe, bez
    stosu (!)
    Szukanie w tył:
    ustawienie się na root->last->last->..->last
    bierzemy jego indeks,
    gdy ten indeks>0, przechodzmy do parent[index-1] i index--
    gdy index=0, wtedy szukamy najbliższego parenta, dla którego linia
    zawierająca
    ten węzeł > 0 (= numer), i ustawiamy się na jego
    node[numer-1]->last->last->..->last

    Czyżby z powodu stosu szukanie iteracyjne w tył było łatwiejsze niż w
    przód? A może coś przeoczyłem?


  • 3. Data: 2016-04-21 13:52:50
    Temat: Re: Szukanie drzewka w tył
    Od: Borneq <b...@a...hidden.pl>

    W dniu 21.04.2016 o 13:47, Borneq pisze:
    > Czyżby z powodu stosu szukanie iteracyjne w tył było łatwiejsze niż w
    > przód? A może coś przeoczyłem?

    Może ten stos dawał to że przyśpieszał zamiast chodzenia najpierw w
    kierunku korzenia a potem w kierunku liści?



  • 4. Data: 2016-04-21 13:52:53
    Temat: Re: Szukanie drzewka w tył
    Od: bartekltg <b...@g...com>

    On 21.04.2016 13:22, Borneq wrote:
    > Na początek, jaka rekurencyjna procedura?
    > W przód jest prosto:
    >
    > private void RecursiveSearch(TreeNode root, string text)
    > {
    > if (root.Text.Contains(text))
    > textBox1.AppendText(textBox1.Lines.Count()+1 + ": " +
    > root.Text + "\n");
    > for (int i = 0; i < root.Nodes.Count; i++)
    > RecursiveSearch(root.Nodes[i], text);
    > }
    >
    > Tu trzeba by się ustawić na najniższym, ostatnim elemencie i iść w górę.


    Po paru ostatnich wątkach mam wrażenie, jakbyś tracił zdolność
    komunikacji:( Rozumiem, że opisanie problemu jest uciążliwe
    i zajmie z 10-15 minut, ale nie pomijaj tego.

    Nie wiem, co jest w drzewie, nie wiem, co jest wyszukiwanym obiektem,
    nie wiem też, co rozumiesz przez w tył.

    Pewnie bym się dowiedział, jakbym próbował rozszyfrować ten
    kod i wczytał się w poprzedni wątek, ale... no bez jaj;]

    pzdr
    bartekltg




  • 5. Data: 2016-04-21 14:04:48
    Temat: Re: Szukanie drzewka w tył
    Od: Borneq <b...@a...hidden.pl>

    W dniu 21.04.2016 o 13:52, bartekltg pisze:
    > Nie wiem, co jest w drzewie, nie wiem, co jest wyszukiwanym obiektem,
    > nie wiem też, co rozumiesz przez w tył.

    Drzewo to wizualne TreeView, w drzewie są napisy, wyszukać mam napisy.
    W tył: normalnie szukając przechodzimy do następnych elementów, do
    kolejnych gałęzi i podgałęzi, to zrobione, ale teraz mam szukać od
    najniższej, ostatniej gałęzi w kierunku góry.
    Wyobraźmy sobie drzewko rejestrów. Standardowy regedit gdy wciskamy F3
    znajduje następne wystąpienie ciągu. Jednak nie działa tam Shift-F3
    które mogło by szukać w tył, czyli znaleźć to wystąpienie, które
    minęliśmy przy wyszukiwaniu.


  • 6. Data: 2016-04-21 14:36:34
    Temat: Re: Szukanie drzewka w tył
    Od: bartekltg <b...@g...com>

    On 21.04.2016 14:04, Borneq wrote:
    > W dniu 21.04.2016 o 13:52, bartekltg pisze:
    >> Nie wiem, co jest w drzewie, nie wiem, co jest wyszukiwanym obiektem,
    >> nie wiem też, co rozumiesz przez w tył.
    >
    > Drzewo to wizualne TreeView, w drzewie są napisy, wyszukać mam napisy.
    > W tył: normalnie szukając przechodzimy do następnych elementów, do
    > kolejnych gałęzi i podgałęzi, to zrobione, ale teraz mam szukać od
    > najniższej, ostatniej gałęzi w kierunku góry.
    > Wyobraźmy sobie drzewko rejestrów. Standardowy regedit gdy wciskamy F3
    > znajduje następne wystąpienie ciągu. Jednak nie działa tam Shift-F3
    > które mogło by szukać w tył, czyli znaleźć to wystąpienie, które
    > minęliśmy przy wyszukiwaniu.
    >


    Jak definiujesz kolejność w drzewie? Pre-order?

    To odwrotnie wyjdzie, jeśli zrobisz przechodzenie
    post-order, ale w ramach każdego wierzchołka listę
    jego dzieci bedziesz przetwarzał od tyłu.



    pzdr
    bartekltg




  • 7. Data: 2016-04-21 14:58:27
    Temat: Re: Szukanie drzewka w tył
    Od: Borneq <b...@a...hidden.pl>

    W dniu 21.04.2016 o 14:36, bartekltg pisze:
    > To odwrotnie wyjdzie, jeśli zrobisz przechodzenie
    > post-order, ale w ramach każdego wierzchołka listę
    > jego dzieci bedziesz przetwarzał od tyłu.

    Aha, to wyjdzie rekurencja i teraz będę musiał to jakoś przerobić na
    iterację ze stosem. Potrzebna iteracja, aby móc za pomocą jednego return
    wyjść z szukania a tym bardziej wskoczyć w środek szukania.


  • 8. Data: 2016-04-22 02:38:58
    Temat: Re: Szukanie drzewka w tył
    Od: bartekltg <b...@g...com>

    On 21.04.2016 14:58, Borneq wrote:
    > W dniu 21.04.2016 o 14:36, bartekltg pisze:
    >> To odwrotnie wyjdzie, jeśli zrobisz przechodzenie
    >> post-order, ale w ramach każdego wierzchołka listę
    >> jego dzieci bedziesz przetwarzał od tyłu.
    >
    > Aha, to wyjdzie rekurencja i teraz będę musiał to jakoś przerobić na
    > iterację ze stosem. Potrzebna iteracja, aby móc za pomocą jednego return
    > wyjść z szukania a tym bardziej wskoczyć w środek szukania.

    Jakie opisanie problemu taka odpowiedź.
    Wręcz przeciwnie, podawałeś rekurencyjną wersję
    innego problemu jako wzorcową

    Nie opisałeś tego w na początku, to skad mam wiedzieć.

    Bez stosu też się to prosto implementuje, tylko zamiast
    wyjścia z funkcji rekurencyjnej masz przejscie poziom wyzej.
    Jedyny problem, to odpowiednie ustawienie indeksu na dziecko,
    z którego właśnie wróciłeś.

    Wyszukiwanie tego dziecka zmieni algorytm w kwadratowy,
    więc odpada.

    Pozostaje stos (co też pozbywa nas problemy czy
    TreeNode ma wskażnik do ojca. Nie napisałeś.)
    gdzie trzymamy też liczby "i" z kazdego poziomu.


    Rozpoczęcie od zadanego TreeNode (bo chyba o to chodzi,
    nie wyjaśniesz, nie opisujesz). To już wymaga znajomości
    ojca. Przechodzisz w górę i wypełniasz stos.

    Pesymistycznie jest to liniowe (na danym poziomie musisz
    przeszukać listę dzieci, by znaleźć dziecko, które właśnie
    opuściłeś) ale wykonywane tylko raz... ale jednak lepiej
    byłoby trzymać ten stos zapamiętany.

    BTW, to drzewo nie ma iteratora? Takiego ++ i --? :-)

    pzdr
    bartekltg





  • 9. Data: 2016-04-22 16:26:02
    Temat: Re: Szukanie drzewka w tył
    Od: Borneq <b...@a...hidden.pl>

    W dniu 22.04.2016 o 02:38, bartekltg pisze:
    > Jakie opisanie problemu taka odpowiedź.
    > Wręcz przeciwnie, podawałeś rekurencyjną wersję
    > innego problemu jako wzorcową

    Chciałem zacząć od standardowej rekurencyjnej procedury, potem przerobić
    to na iteracyjną ze stosem a na koniec dodać wyskakiwanie i wskakiwanie.


  • 10. Data: 2016-04-22 18:45:38
    Temat: Re: Szukanie drzewka w tył
    Od: "M.M." <m...@g...com>

    On Friday, April 22, 2016 at 4:26:04 PM UTC+2, Borneq wrote:
    > W dniu 22.04.2016 o 02:38, bartekltg pisze:
    > > Jakie opisanie problemu taka odpowiedź.
    > > Wręcz przeciwnie, podawałeś rekurencyjną wersję
    > > innego problemu jako wzorcową
    >
    > Chciałem zacząć od standardowej rekurencyjnej procedury, potem przerobić
    > to na iteracyjną ze stosem a na koniec dodać wyskakiwanie i wskakiwanie.

    W QT nie stosowałem wyskakiwania i wskakiwania, używałem za to lowerBound i
    upperBound.

    Pozdrawiam

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: