Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28549 > unrolled thread

problem z algorytmiki

Started by"M.M." <mmarszik@gmail.com>
First post2016-05-11 01:01 -0700
Last post2016-05-15 20:24 +0200
Articles 9 — 4 participants

Back to article view | Back to pl.comp.programming


Contents

  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

#28549 — problem z algorytmiki

From"M.M." <mmarszik@gmail.com>
Date2016-05-11 01:01 -0700
Subjectproblem 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]


#28550

Frombartekltg <bartekltg@gmail.com>
Date2016-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]


#28551

From"M.M." <mmarszik@gmail.com>
Date2016-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]


#28577

Fromslawek <fake@fakeemail.com>
Date2016-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]


#28578

FromWojciech Muła <wojtek.mula@gmail.com>
Date2016-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]


#28580

From"M.M." <mmarszik@gmail.com>
Date2016-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]


#28583

Frombartekltg <bartekltg@gmail.com>
Date2016-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]


#28584

Frombartekltg <bartekltg@gmail.com>
Date2016-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]


#28585

Frombartekltg <bartekltg@gmail.com>
Date2016-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