Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #28296
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Newsgroups | pl.comp.programming |
| Subject | Re: Problemik algorytmiczny |
| Date | 2016-02-09 18:06 +0100 |
| Organization | ATMAN - ATM S.A. |
| Message-ID | <n9d69q$c5r$1@node1.news.atman.pl> (permalink) |
| References | (1 earlier) <004a4022-5e9c-437c-b663-a2aa90171430@googlegroups.com> <almarsoft.4937704859930097250@news.v.pl> <8208f986-7b71-4852-b0dd-fc382248b56e@googlegroups.com> <9bb3187d-4083-4202-a7ac-169daf4d2b1f@googlegroups.com> <d87cffb2-0c94-4aa9-907e-0dfe822ad749@googlegroups.com> |
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ść ś©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:) pzdr bartekltg pzdr bartekltg
Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Problemik algorytmiczny slawek <fake@fakeemail.com> - 2016-02-09 10:15 +0100
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-09 02:35 -0800
Re: Problemik algorytmiczny slawek <fake@fakeemail.com> - 2016-02-09 12:00 +0100
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-09 03:44 -0800
Re: Problemik algorytmiczny Adam M <amorawski@magna-power.com> - 2016-02-09 05:42 -0800
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-09 05:59 -0800
Re: Problemik algorytmiczny bartekltg <bartekltg@gmail.com> - 2016-02-09 18:06 +0100
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-10 01:46 -0800
Re: Problemik algorytmiczny slawek <fake@fakeemail.com> - 2016-02-12 14:49 +0100
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-12 07:31 -0800
Re: Problemik algorytmiczny "slawek" <slawek@host.pl> - 2016-02-12 19:47 +0100
Re: Problemik algorytmiczny bartekltg <bartekltg@gmail.com> - 2016-02-12 17:56 +0100
Re: Problemik algorytmiczny "slawek" <slawek@host.pl> - 2016-02-12 20:05 +0100
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-12 12:03 -0800
Re: Problemik algorytmiczny bartekltg <bartekltg@gmail.com> - 2016-02-13 00:04 +0100
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-12 15:40 -0800
Re: Problemik algorytmiczny "M.M." <mmarszik@gmail.com> - 2016-02-13 03:07 -0800
Re: Problemik algorytmiczny "slawek" <slawek@host.pl> - 2016-02-12 20:12 +0100
Re: Problemik algorytmiczny bartekltg <bartekltg@gmail.com> - 2016-02-12 23:12 +0100
csiph-web