Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #28549 > unrolled thread
| Started by | "M.M." <mmarszik@gmail.com> |
|---|---|
| First post | 2016-05-11 01:01 -0700 |
| Last post | 2016-05-15 20:24 +0200 |
| Articles | 9 — 4 participants |
Back to article view | Back to pl.comp.programming
problem z algorytmiki "M.M." <mmarszik@gmail.com> - 2016-05-11 01:01 -0700
Re: problem z algorytmiki bartekltg <bartekltg@gmail.com> - 2016-05-11 10:38 +0200
Re: problem z algorytmiki "M.M." <mmarszik@gmail.com> - 2016-05-11 01:46 -0700
Re: problem z algorytmiki slawek <fake@fakeemail.com> - 2016-05-15 08:02 +0200
Re: problem z algorytmiki Wojciech Muła <wojtek.mula@gmail.com> - 2016-05-14 23:33 -0700
Re: problem z algorytmiki "M.M." <mmarszik@gmail.com> - 2016-05-15 05:07 -0700
Re: problem z algorytmiki bartekltg <bartekltg@gmail.com> - 2016-05-15 19:35 +0200
Re: problem z algorytmiki bartekltg <bartekltg@gmail.com> - 2016-05-15 19:44 +0200
Re: problem z algorytmiki bartekltg <bartekltg@gmail.com> - 2016-05-15 20:24 +0200
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-05-11 01:01 -0700 |
| Subject | problem z algorytmiki |
| Message-ID | <85100148-6951-483f-965c-8ba566f34162@googlegroups.com> |
Mamy dwa równoliczne zbiory punktów 2D. Każdemu punktowi z jednego zbioru trzeba przyporządkować jeden punkt z drugiego zbioru. Innymi słowy, trzeba punkty połączyć w pary, w każdej parze jeden punkt musi być z pierwszego zbioru, drugi z drugiego. Suma odległości pomiędzy punktami z pary musi być najmniejsza. Można to szybko policzyć, czy nie? Pozdrawiam
[toc] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-05-11 10:38 +0200 |
| Message-ID | <ngur2j$kqd$1@node2.news.atman.pl> |
| In reply to | #28549 |
On 11.05.2016 10:01, M.M. wrote:
> Mamy dwa równoliczne zbiory punktów 2D. Każdemu punktowi z
> jednego zbioru trzeba przyporządkować jeden punkt z drugiego
> zbioru. Innymi słowy, trzeba punkty połączyć w pary, w każdej
> parze jeden punkt musi być z pierwszego zbioru, drugi z drugiego.
> Suma odległości pomiędzy punktami z pary musi być najmniejsza.
>
> Można to szybko policzyć, czy nie?
To jest maksymalny przepływ o minimalnym koscie w grafie
dwudzielnym ("Assignment problem"). Algorytm węgeirski
i masz rozwiązanie w O(n^3),
Czy to "szybko", trudno powiedzieć ;-)
Wykorzystując to, że sa one na płaszczyźnie są różne heurystyki,
googlaj pod Euclidean Bipartite Matching
np to:
http://homepage.cs.uiowa.edu/~kvaradar/paps/p079-agarwal.pdf
Problem ten można rozwiązywać algorytmem simplex... niby wykłądniczy,
ale dla rzeczywistych danych możę zadziaąłć w miarę szybko;-)
Uwaga. Rozwiązania są dla problemu ciut bardziej skomplikowanego,
więc być mozę da się prościej. Na szybko nie widzę.
pzdr
bartekltg
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-05-11 01:46 -0700 |
| Message-ID | <c6ea2d90-c0e1-491a-bbe0-f088992e6402@googlegroups.com> |
| In reply to | #28550 |
On Wednesday, May 11, 2016 at 10:38:44 AM UTC+2, bartekltg wrote:
> On 11.05.2016 10:01, M.M. wrote:
> > Mamy dwa równoliczne zbiory punktów 2D. Każdemu punktowi z
> > jednego zbioru trzeba przyporządkować jeden punkt z drugiego
> > zbioru. Innymi słowy, trzeba punkty połączyć w pary, w każdej
> > parze jeden punkt musi być z pierwszego zbioru, drugi z drugiego.
> > Suma odległości pomiędzy punktami z pary musi być najmniejsza.
> >
> > Można to szybko policzyć, czy nie?
>
> To jest maksymalny przepływ o minimalnym koscie w grafie
> dwudzielnym ("Assignment problem"). Algorytm węgeirski
> i masz rozwiązanie w O(n^3),
> Czy to "szybko", trudno powiedzieć ;-)
>
>
> Wykorzystując to, że sa one na płaszczyźnie są różne heurystyki,
> googlaj pod Euclidean Bipartite Matching
> np to:
> http://homepage.cs.uiowa.edu/~kvaradar/paps/p079-agarwal.pdf
>
> Problem ten można rozwiązywać algorytmem simplex... niby wykłądniczy,
> ale dla rzeczywistych danych możę zadziaąłć w miarę szybko;-)
>
>
> Uwaga. Rozwiązania są dla problemu ciut bardziej skomplikowanego,
> więc być mozę da się prościej. Na szybko nie widzę.
>
> pzdr
> bartekltg
Dzięki :)
[toc] | [prev] | [next] | [standalone]
| From | slawek <fake@fakeemail.com> |
|---|---|
| Date | 2016-05-15 08:02 +0200 |
| Message-ID | <almarsoft.764381174257963721@news.v.pl> |
| In reply to | #28550 |
On Wed, 11 May 2016 10:38:43 +0200, bartekltg <bartekltg@gmail.com> wrote: > więc być mozę da się prościej. Na szybko nie widzę. Na szybko: posortuj po x, posortuj po y; dla danego punktu znajdź mu najbliższy (dzięki sortowaniu masz czterech kandydatów lub mniej); usuń parę. Powtarzaj aż do skutku. Rób to kolejno od najbliższej pary. Odległości par możesz obliczyć i posortować, a potem usuwać już nieobecne. Całość celuje w O(N log N).
[toc] | [prev] | [next] | [standalone]
| From | Wojciech Muła <wojtek.mula@gmail.com> |
|---|---|
| Date | 2016-05-14 23:33 -0700 |
| Message-ID | <ce18398a-15ba-478f-9e57-331beb75342b@googlegroups.com> |
| In reply to | #28577 |
On Sunday, May 15, 2016 at 8:03:02 AM UTC+2, slawek wrote: > Na szybko: posortuj po x, posortuj po y; dla danego punktu znajdź mu > najbliższy (dzięki sortowaniu masz czterech kandydatów lub mniej); To raczej nie zadziała, jak myślisz. w.
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-05-15 05:07 -0700 |
| Message-ID | <851a4ec2-02de-4cb8-8faa-b6cea7e74b6e@googlegroups.com> |
| In reply to | #28578 |
On Sunday, May 15, 2016 at 8:33:24 AM UTC+2, Wojciech Muła wrote: > On Sunday, May 15, 2016 at 8:03:02 AM UTC+2, slawek wrote: > > Na szybko: posortuj po x, posortuj po y; dla danego punktu znajdź mu > > najbliższy (dzięki sortowaniu masz czterech kandydatów lub mniej); > > To raczej nie zadziała, jak myślisz. > > w. Propozycja Sławka mnie się skojarzyła z problemem stabilnych małżeństw. Problem 'sparowania po najmniejszej odległości' wydaje się nawet łatwiejszy, bo jeśli facet y najbardziej preferuję kobietę x, to także kobieta x najbardziej preferuje faceta y. Jednak w tym wątku chodzi o najmniejszą sumę, a nie o stabilność par - stabilność chyba nie gwarantuje najmniejszej sumy? Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-05-15 19:35 +0200 |
| Message-ID | <nhac1i$gg4$1@node1.news.atman.pl> |
| In reply to | #28580 |
On 15.05.2016 14:07, M.M. wrote: > On Sunday, May 15, 2016 at 8:33:24 AM UTC+2, Wojciech Muła wrote: >> On Sunday, May 15, 2016 at 8:03:02 AM UTC+2, slawek wrote: >>> Na szybko: posortuj po x, posortuj po y; dla danego punktu znajdź mu >>> najbliższy (dzięki sortowaniu masz czterech kandydatów lub mniej); >> >> To raczej nie zadziała, jak myślisz. >> >> w. > > Propozycja Sławka mnie się skojarzyła z problemem stabilnych małżeństw. > Problem 'sparowania po najmniejszej odległości' wydaje się nawet > łatwiejszy, bo jeśli facet y najbardziej preferuję kobietę x, to także > kobieta x najbardziej preferuje faceta y. Jednak w tym wątku chodzi o > najmniejszą sumę, a nie o stabilność par - stabilność chyba nie > gwarantuje najmniejszej sumy? https://en.wikipedia.org/wiki/Stable_marriage_problem#Similar_problems The assignment problem seeks to find a matching in a weighted bipartite graph that has maximum weight. Maximum weighted matchings do not have to be stable, but in some applications a maximum weighted matching is better than a stable one. A o assigment problem rozmawialiśmy parę dni temu;-) pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-05-15 19:44 +0200 |
| Message-ID | <nhache$h4l$1@node1.news.atman.pl> |
| In reply to | #28577 |
On 15.05.2016 08:02, slawek wrote: > On Wed, 11 May 2016 10:38:43 +0200, bartekltg <bartekltg@gmail.com> wrote: >> więc być mozę da się prościej. Na szybko nie widzę. > > Na szybko: posortuj po x, posortuj po y; dla danego punktu znajdź mu > najbliższy (dzięki sortowaniu masz czterech kandydatów lub mniej); usuń > parę. Powtarzaj aż do skutku. Rób to kolejno od najbliższej pary. > Odległości par możesz obliczyć i posortować, a potem usuwać już > nieobecne. Całość celuje w O(N log N). Kontrprzykład: A1 <-2m-> B1 <-1m-> A2 <-2m-> B2 Optymalne rozwiązanie wiąże A1-B1 B2-A2 na kwotę 4m. Rozwianie zachłanne daje A1-B2 B1-A2 na kwotę 6m. pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-05-15 20:24 +0200 |
| Message-ID | <nhaes6$k46$1@node1.news.atman.pl> |
| In reply to | #28577 |
On 15.05.2016 08:02, slawek wrote: > On Wed, 11 May 2016 10:38:43 +0200, bartekltg <bartekltg@gmail.com> wrote: >> więc być mozę da się prościej. Na szybko nie widzę. > > Na szybko: posortuj po x, posortuj po y; dla danego punktu znajdź mu > najbliższy (dzięki sortowaniu masz czterech kandydatów lub mniej); usuń > parę. Powtarzaj aż do skutku. Rób to kolejno od najbliższej pary. > Odległości par możesz obliczyć i posortować, a potem usuwać już > nieobecne. Całość celuje w O(N log N). Był bardzo podobny, słabszy*) problem: Też dwa zbiory A,B punktów na płaszczyźnie, chcemy je sparować tak, aby linie łączące je nie przecinały się. Kołacze mi się po głowie, że rozwiązaniem było znajdowanie przecięcia i likwidowaniem go, poprzez zamianę sparowania. Nie pamiętam jednak szczegółowy, a jest tam taki problem, więc nie potrafię odtworzyć złożoności. Problem w tym, że relaksacja może spowodować zwiększenie się liczby przecięć (to nie przeszkadza w poprawności, rozwiązanie znajdzie**). *) sparowanie o minimalnej sumie długości nie ma przecięć, ale rozwiązanie bez przecięć nie musi być minimalne: A B | | | | | | | | B A **) Zbiór możliwych wartości sumy jest skończony, każda operacja prostowania kolizji zmniejsza tę odległość. Jeśli nie mamy rozwiąznia=> jest kolizja=> mozemy poprawić. Ale nie zrobimy więcej niż ileśtam kroków. pzdr bartekltg
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.programming
csiph-web