eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingProblemik algorytmiczny › Re: Problemik algorytmiczny
  • X-Received: by 10.140.101.139 with SMTP id u11mr847498qge.16.1455097617701; Wed, 10
    Feb 2016 01:46:57 -0800 (PST)
    X-Received: by 10.140.101.139 with SMTP id u11mr847498qge.16.1455097617701; Wed, 10
    Feb 2016 01:46:57 -0800 (PST)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin3!goblin.stu.neva.ru!news.ripco.com!news.glorb.com!hb3no2934756i
    gb.0!news-out.google.com!o51ni260qge.1!nntp.google.com!w104no196598qge.1!postne
    ws.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Wed, 10 Feb 2016 01:46:57 -0800 (PST)
    In-Reply-To: <n9d69q$c5r$1@node1.news.atman.pl>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=159.205.154.241;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 159.205.154.241
    References: <a...@n...v.pl>
    <0...@g...com>
    <a...@n...v.pl>
    <8...@g...com>
    <9...@g...com>
    <d...@g...com>
    <n9d69q$c5r$1@node1.news.atman.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <f...@g...com>
    Subject: Re: Problemik algorytmiczny
    From: "M.M." <m...@g...com>
    Injection-Date: Wed, 10 Feb 2016 09:46:57 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:209114
    [ ukryj nagłówki ]

    On Tuesday, February 9, 2016 at 6:06:03 PM UTC+1, bartekltg wrote:
    > On 09.02.2016 14:59, M.M. wrote:
    > > On Tuesday, February 9, 2016 at 2:42:57 PM UTC+1, Adam M wrote:
    > >> Problem jest ciekawy i metoda rozwiazania zelzy do ilosci punktow:
    > >> - przy malej ilosci punkow metoda brut-froce lub kazda z wyzej wymienionych
    metod poradzi sobie calkiem niezle
    > >> - przy duzej ilosci punktow lepsze jest podejscie graficzno-matematyczne.
    > >> tworzymy graficzna reprezentacje rozlozenia punktow i lagorytmy analizy obrazu
    pozwalaja wybrac nam wrunki graniczne do przeszukiwania (miejsca gdzie jest
    najwieksze zageszczenie punktow - najbardziej ciemne miejsca). Metoda ta jednak ma
    jedna podstawowa wade - gdy rozmieszczenie punktow jest losowo rownomierne (bialy
    szum) graficzna metoda wyznaczenia warunkow brzegowych wyszukiwania padnie na twarz -
    ale w tym przypadku chyba kazda metoda padnie na twarz i losowe wybranie punktu
    bedzie najlepsze/najtansze obliczeniowo (bo i tak punkty sa rozlozone losowo ale
    rownomiernie ;-) )
    > >
    > >
    > > Czy moje założenie, że optymalne rozwiązanie musi mieć na obwodzie okręgu 3
    > > punkty, jest prawdziwe?
    >
    > Tak.
    > Na płaszczyźnie;-)
    >
    > I to daje rozwiązanie n^4, przy jakimś sprytnym sposobie zliczania
    > punktów w okręgu nieco mniej.
    >
    > Jeśli zaczepisz się o dwa punkty i zwiększasz promień,
    > wygląda na to, ze da się w n^3 log(n)
    >
    > W metryce miejskiej to ładniej widać. Zaczepiasz się górnym
    > i lewym bokiem o dowolną parę, dodajesz tyle punktów,
    > ile potrzeba, dostajesz w wyniku rozmiar kwadratu.
    >
    >
    > Przy okręgach pewnym ułatwieniem będzie zauważanie, że
    > dwa sposród obowiązkowych 3 punktów na promieniu są
    > oddalone o co najmniej 120deg.
    >
    > Ostatecznie:
    > wybieram dwa punkty. A i B. Są one na okręgu.
    >
    > Dla każdego innego punktu C wyznaczam promień okręgu,
    > w którym się on jeszcze mieści. Tu trzeba się skupić.
    >
    > Najmniejszy promień jest jak odległość |AB|
    > i może rosnać w obie strony. Okręgi można to sobie
    > parametryzować kątem, odległosćią od |AB|, co tak kto lubi,
    > byleby łatwo zyanczać środek takiego okręgu i jego promień.
    >
    > niech będzie to d, odelgłość ś(c)odka okręgu od AB.
    > R = sqrt(d^2 + (|AB|/2)^2), środek też łatwo wyznaczyć.
    >
    > Co istotne, d ma znak, dla dodatnich niech okrąg puchnie w prawo,
    > dla ujemnych - w lewo.
    >
    > Każdy punkt C ma wartość _jedną_ (*) krytyczną d. Po jednej jej stronie
    > jest w okręgu, po drugiej jest poza.
    >
    > W czasie O(n) wyzanczamy d dla każdego c.
    > W czasie O(n log (n)) sortujemy je.
    >
    > W czasie O(n) przechodzimy powstałą tabelkę dwoma wskaźnikami,
    > zmieniając d. Aktualizujemy wartość promienia, jeśli jest mniejszy
    > i mamy >=50% miast.
    >
    > Wszystko powtorzyliśmy O(n^2), łącznie mamy więc
    > O(n^3 log n)
    >
    > Nie jest źle. A można wprowadzić sporo obcięć,
    > jak te z warunku o 120deg czy nie przeszukiwać d dla których
    > R jest większe niż już znalezione, i, co ważniejsze, nie brać
    > punktów A,B, które są oddalone o więcej niż aktualnie najlepsze R.
    > To ostatnie sporo poprawi, jeśli szybko znajdziemy przyzwoite
    > rozwiązanie.
    >
    >
    > *) uwagal na punkty leżące wewnętrz odcinka AB:)

    Zapomniałem w pośpiechu wymnożyć złożoność przez log(N).
    Ma ktoś ochotę zaimplementować ten algorytm?

    Pozdrawiam


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: