Łatwy sposób na udowodnienie, że ten algorytm ostatecznie się kończy

10

Wprowadzenie i notacje:

Oto nowa i prosta wersja mojego algorytmu, która wydaje się kończyć (zgodnie z moimi eksperymentami), a teraz chciałbym to udowodnić.

Niech notacja odnosi się do wymiarowego punktu danych (wektora). Mam trzy zestawy A, B i C, takie że ,xiRpxiRppp|A|=n|A|=n | B | = m|B|=m , | C | = l|C|=l : A = { x i | i = 1 , . . , n }

A={xi|i=1,..,n}
B = { x j | J = n + 1 , . . , n + m}
B={xj|j=n+1,..,n+m}
C = { x u | U = n + m + 1 , . . , n + m + l }
C={xu|u=n+m+1,..,n+m+l}

Biorąc pod uwagę , niech oznacza średnią odległość euklidesową od do jej najbliższych punktów w ; i oznacza średnią odległość euklidesową z jego najbliższego punktów .kNkNdAxidAxixixikkAAdCxidCxixixikkCC

Algorytm:

Mam następujący algorytm, który iteracyjnie modyfikuje zestawy A i B, przenosząc niektóre wybrane elementy z A na B i odwrotnie, a C pozostaje zawsze takie samo (nie zmieniaj). Upraszczając: celem algorytmu jest lepsze rozdzielenie zbiorów i taki sposób, aby „punkty były bardziej podobne do punktów znanego ustalonego zestawu ” i „punkty są w końcu samopodobne i dalej od i końcowego zestawu ":AABBBBCCAACCBB

  • A={xiAdAxi>dCxi}A={xiAdAxi>dCxi} ... (1)
  • A=AAA=AA ; ... (2)B=BAB=BA
  • B={xiBdAxi<dCxiB={xiBdAxi<dCxi } ... (3)
  • B=BBB=BB ; ... (4)A=ABA=AB
  • Powtarzaj (1), (2), (3) i (4), dopóki: (żaden element nie przesunie się z na lub z na , czyli A 'i B' się opróżnią) lub ( lub )AABBBBAA|A|k|A|k|B|k|B|k

Algorytm kończy się w dwóch przypadkach:

  • kiedylubstaje się mniejsza lub równa|A||A||B||B|kk
  • lub najbardziej standardowy przypadek, gdy , co oznacza, że ​​nie ma już więcej elementów między A i B.A=B=A=B=

Pytanie:

Jak udowodnić, że ten algorytm ostatecznie się kończy? Nie znalazłem wygodnej potencjalnej funkcji, którą algorytm może ściśle zminimalizować lub zmaksymalizować. Próbowałem bezskutecznie niektórych funkcji: funkcja ale nie zwiększa się przy każdej iteracji. Funkcja ale nie zmniejsza się przy każdej iteracji. Funkcja wydaje się nie zmniejszać przy każdej iteracji. FunkcjaxAdCx+xBdAxxAdCx+xBdAxxAdAx+xBdCxxAdAx+xBdCxxAdAx+xBdBxxAdAx+xBdBxxAdBx+xBdAxxAdBx+xBdAxwydaje się nie rosnąć z każdą iteracją. Jaka jest wygodna potencjalna funkcja, którą można zwiększyć lub zmniejszyć przy każdej iteracji? Czy też powinniśmy pokazać, że funkcja maleje, ale nie przy każdej iteracji (raczej po kilku iteracjach)? W jaki sposób ?

Uwagi:

  • najbliżej punktów w zbiorze , oznacza: punktów (inne niż ) w , mające najmniejszą euklidesową odległość . Możesz po prostu wziąć aby uprościć analizę.kkxxSSkkxxSSxxk=1k=1
  • Nie wiem, czy to może pomóc, czy nie, ale mam następującą właściwość dla moich początkowych zestawów : początkowo , jeśli jest najbliższym punktem do i to najbliższy punkt do a następnie zawsze . Ten intuicyjnie oznacza, że punkty są bliżej niż punktach .A,B,CA,B,CxiB,xjAxiB,xjAxbCxbCxixixaCxaCxjxjdistance(xi,xb)<distance(xj,xa)distance(xi,xb)<distance(xj,xa)BBCCAA
  • Jeśli to ułatwi analizę: całkowicie możliwe jest rozważenie nieco innej wersji Algorytmu, w której punkt z punktu powinien zostać przeniesiony do punktu , zostaje on przeniesiony z punktu do punktu (bez omijania punktu ), a vis versa dla .AABBAABBAABB
shn
źródło
3
Dlaczego interesuje Cię ten konkretny algorytm?
1
shna: Co chcesz zrobić ze zbiorem punktów arbitralnie podzielonych na trzy zestawy?
4
@shna Znajomość celu i celu algorytmu może prowadzić do poprawy intuicji, a tym samym pomóc w rozwiązaniu problemu.
@RichardRast Aby wyjaśnienie było proste: celem jest lepsze rozdzielenie zbiorów i tak aby „punkty były bardziej podobne do punktów znanego ustalonego zestawu ” i „punkty są w końcu podobne do siebie i dalej od i końcowego zestawu ”. AABBBBCCAACCBB
shn
Migracja do cstheory została odrzucona.

Odpowiedzi:

2

Oto rozwiązanie dla przypadku k = 1 :k=1

Załóżmy, że algorytm się nie kończy. Ponieważ istnieje skończona liczba stanów algorytmu (przypisanie punktów do A i B ), stan algorytmu musi się powtarzać w cyklu. Ponieważ cykl przechodzi przez różne stany, musi istnieć punkt, który przełącza się między A i B nieskończenie często.ABAB

Niech x będzie punktem, który zmienia się nieskończenie często w tym cyklu. Odebrać pierwszej iteracji algorytmu w cyklu, podczas której x zmienia się z B do A . Dla x , aby przełączyć na A , musi być co najmniej jeden punkt x ' w A , a d C x > d Jestem s T ( x , x ' ) . Arbitralnie wybierz najmniejszy taki punkt; zdefiniuj funkcję f, tak aby f ( x ) =xxBAxAxAdCx>dist(x,x)fx . Zauważ, że x również musi przełączać się między A i B nieskończenie często (ponieważ jeśli x pozostanie w A na stałe, to też x ), więc możemy wziąć f ( f ( x ) ) , f ( f ( f ( x ) ) ) , itd.f(x)=xxABxAxf(f(x)),f(f(f(x))),

Ponieważ mamy skończoną liczbę punktów, iteraty f muszą ostatecznie powtórzyć: f n ( x ) = f m ( x ) dla niektórych m > n . Spójrzmy teraz na odpowiednich sekwencji odległości od C: d C f ( x ) , d C f 2 ( X ) , . . . d C f n ( x ) , . . .fn(x)=fm(x)m>ndCf(x),dCf2(x),...dCfn(x),.... Ponieważ się powtarza, sekwencja ta nie może być równomiernie zmniejszana. Musi istnieć iteracja o , że d C f o - 1 ( x )d C f o ( x )odCfo1(x)dCfo(x)

Teraz f o - 1 ( x ) i f o ( x ) są wystarczająco blisko siebie, aby spowodować, że będą w A , jeśli jeden z nich jest. Oznacza to, że są bliżej siebie niż którykolwiek z nich to C : d C f o ( x )d C f o - 1 ( x ) > d i s t ( f o - 1 ( x ) ,fo1(x)fo(x)ACf o ( x ) ) (z definicji f )dCfo(x)dCfo1(x)>dist(fo1(x),fo(x))f

Tak więc, gdy tylko f o - 1 ( x ) i f o ( x ) znajdą się w A , będą się utrzymywać w A na zawsze (patrz wiersze 1-2 algorytmu). Jest to sprzeczne z faktem, że wszystkie iteracje f muszą zmieniać zestawy nieskończenie często. Zatem w przypadku, gdy k = 1 , algorytm kończy się.fo1(x)fo(x)AAfk=1

przyczynowy
źródło
Jest to w jakiś sposób skomplikowane i może być pokazane tylko dla k = 1 . Raczej jest o wiele lepiej, jeśli możemy wyprowadzić potencjalną funkcję, która może być zwiększana lub zmniejszana przy każdej iteracji. Lub może wykazać, że rośnie lub maleje po „niektórych” iteracjach zamiast 1.k=1
shn
1
@shn Nie jestem pewien, dlaczego krytykujesz wybór techniki dowodu kogoś, kto odniósł większy sukces w rozwiązaniu twojego problemu niż ty. Zwłaszcza, gdy twoje własne pytanie wymienia cztery nieudane próby użycia preferowanej techniki.
David Richerby
1
@DavidRicherby Nie krytykuję;) Właściwie rozmawiałem o tym rozwiązaniu z „sprawcą” (który udzielił tej odpowiedzi) na IRC i stwierdziliśmy, że nie będzie możliwe udowodnienie tego w ten sposób dla k > 1 ; więc wywnioskowaliśmy, że o wiele lepiej jest wyprowadzić potencjalną funkcję, która może być zmniejszana przy każdej iteracji. Mój komentarz był po prostu informacyjny.
shn