eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingNie mieszczę się w tym garniturku część 2: Java i parametry in/outRe: Nie mieszczę się w tym garniturku część 2: Java i parametry in/out
  • Data: 2012-06-27 21:51:31
    Temat: Re: Nie mieszczę się w tym garniturku część 2: Java i parametry in/out
    Od: Edek Pienkowski <e...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Dnia Wed, 27 Jun 2012 18:52:09 +0000, Stachu 'Dozzie' K. napisal:

    > On 2012-06-27, Edek Pienkowski <e...@g...com> wrote:
    >>>> No to już dzisiaj mam za sobą przejrzenie jej ponownie przy świeżym
    >>>> umyśle i po prostu jej logika jest skomplikowana. Ja wiem, że obsługa
    >>>> eventu "Zosiu, wprowadź do systemu chęć Pani do zakupu pietruszki" 30
    >>>> zmiennych nie wymaga, ale czasami pisze się rzeczy bardziej złożone.
    >>>
    >>> Te rzeczy bardziej złożone rozkłada się na drobniejsze, prostsze
    >>> przypadki. Przynajmniej tak słyszałem, bo IANAP (w każdym razie
    >>> oficjalnie).
    >>
    >> No tak, dlaczego ja na to nie wpadłem, dzięki.
    >
    > Spójrz na to z naszej perspektywy. Przychodzisz na grupę i mówisz, że
    > masz metody z 30+ parametrami długie na kilkaset linii. Twierdzisz, że
    > nie da się tego uprościć, ale w żaden sposób nie uzasadniasz tej tezy.
    > Reszta grupy z doświadczenia wie, że właściwie wszystkiemu się daje
    > uprościć interfejs, więc bez dowodu, przy samym żonglowaniu ogólnikami,
    > nikt ci nie uwierzy.

    Czyli wszyscy wiedzą, że da się pisać krótkie metody. Very well, my
    friend, ja też to wiem. Nie mogę przedstawić kodu, sorry, praca, nie
    za takie rzeczy potrafią człowieka zjeść. No więc abstrakcyjnie:

    ----------------------------------------------------
    -------------
    Mam zakres 0..x, naturalne liczby, x jest gdzieś pomiędzy kilkaset
    tysięcy i sky is the limit, ale powiedzmy kilkadziesiąt milionów.

    Dzielę ten zakres na mniejsze, tak, aby w drzewie każdy rodzic
    zawierał gałązki i gałązki się nie pokrywają. Każda gałąź
    to zakres [a,b). Gałąź bez rozgałęzień możemy nazwać liściem,
    mi to nie przeszkadza, ale ogólnie wszystkie gałęzie mają
    istotne parametry, nie tylko liście.

    Drzewo ma dowolny kształt.

    Mam na tym zakresie 0..x znaczniki o określonej pozycji, lub określonych
    pozycjach, jest ich z 10 typów. Niektóre wprost decydują, gdzie
    zakresy mogą się zaczynać i kończyć, bardzo liczebne, są w
    miejscach gdzie mogą być granice. Mógłbym zredukować zakres 0..x
    do samych znaczników eliminując przestrzeń pomiędzy, ale chwilowo
    nie widzę powodu, wystarczy je posortować i opcjonalnie
    powiązać inne znczniki do zakresów pomiędzy tymi, które wyznaczają
    możliwy podział.

    Część znaczników, jak się tworzy drzewo, ma kilka powiązanych pozycji i
    przez to należy do więcej niż jednej gałęzi, szczegóły pominę.

    Niektóre typy znaczników dodają ograniczenia, ich 4 pozycje muszą się
    zmieścić w jednej gałęzi. Jest ich b. mało, ale komplikują
    metodę, bo to twarde ograniczenie.

    Inne typy mogą należeć do więcej niż jednej gałęzi (w sensie
    node), ale to jest koszt. W pierwszym przybliżeniu koszt to
    a * b, gdzie a i b to koszt dzielonych znaczników dwóch typów,
    przy czym w dość nieokreślony sposób koszt jest tym większy,
    im dalej w dół drzewa. Tych znaczników jest b.duzo,
    w zakresie 0..99 byłoby ich po kilkanaście tak średnio,
    dośc nieprzewidywalnie rozrzuconych, ale ogólnie z tendencją
    do lokalności w większości przypadków.

    Każda gałąź ma z grubsza dodatkowy stały koszt i maksymalny rozmiar,
    więc nie mogą być za duże, ale lepiej żeby nie były za małe
    ze względu na stały koszt. Gałęzi ma być docelowo sądząc
    po rozmiarze od dwóch sztuk do kilku tysięcy, co oczywiście
    zależy od x.

    Oczywiście mam wszystkie dane, takie jak
    ile znaczników jest dzielonych pomiędzy node'ami, ile
    pomiędzy node'em i rekursywnie dziećmi itd., to wszystko
    jest w metodach z jakimś podziałem na klasy, nieistotnym
    w tym momencie, ale każda taka operacja ma swoją złożoność.
    Mam też w każdym punkcie stos niektórych znaczników,
    można go używać jako podpowiedź, ile co może kosztować,
    ale można go pominąć. Te znaczniki w stosie mają zakres.
    Ogólnie jest sporo chodzenia w górę i w dół pomiędzy
    gałęziami, ale to jest detal implementacji.

    Chcę znaleźć nie tyle minimum, co rozsądnie mało kosztujący
    podział drzewa, przy czym czas analizy też kosztuje tak jak
    i rezultat, którym jest dość duży generowany na tej podstawie kod;
    oczywiście samo generowanie kodu jest nietrywialne, ale
    już sobie jest. A, dzielenie drzewa na gałązki ma ogólnie
    dwa rodzaje, dwa rodzaje znaczników określają możliwy
    dla ich typu rodzaj podziału na dwa rodzaje generowanego
    kodu.

    -------------------------------------------------

    Jeżeli to podchodzi pod jakiś znany problem ze znanym
    na wikipedii lub gdzieś ogólnym rozwiązaniem, to chętnie
    przeczytam. Oczywiście, musi mieć poniżej 30 zmiennych na
    metodę, ja na razie mam jedną tak rozbudowaną.

    Troszkę się chyba rozpędziłem, ale to powinno działać.
    Mam też wrażenie, że z jednej strony to już jest dość
    nietrywialne, a z drugiej może o czymś zapomniałem,
    co mogłoby uprościć sprawę, ale w tej chwili nie wiem
    co to może być. Może w ogóle warto całość zrobić inaczej
    zupełnie, czekam na przebłysk geniuszu, i chyba mogę sobie
    czekać.

    Edek
    PS. Dopóki tego nie spisałem wyglądało jeszcze normalnie
    i do ogarnięcia, ale opis wygląda nieciekawie.
    PS2. To teraz może się nie będę na grupie pokazywał
    przez tydzień, będę zajęty rzecz jasna ;)
    PS3. Nie zamierzam rozwiązywać tego problemu,
    coś co jest "wystarczająco dobre" mi wystarczy.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: