Cara mudah untuk membuktikan bahwa algoritma ini akhirnya berakhir

10

Pengantar dan notasi:

Berikut ini adalah versi baru dan sederhana dari algoritma saya yang tampaknya berakhir (menurut eksperimen saya), dan sekarang saya ingin membuktikannya.

Biarkan notasi xiRp mengacu pada p data titik dimensi (vektor). Saya punya tiga set A, B dan C, sedemikian rupa sehingga |A|=n , |B|=m , |C|=l :

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

Dengan , misalkan d A x i menunjukkan jarak Euclidean rata-rata dari x i ke k titik terdekatnya di A ; dan d C x i menyatakan rata-rata jarak Euclidean dari x i ke nya k terdekat poin di C .kNdxiAxikAdxiCxikC

Algoritma:

Saya memiliki algoritma berikut yang secara iteratif memodifikasi set A dan B dengan memindahkan beberapa elemen yang dipilih dari A ke B dan sebaliknya, dan C tetap selalu sama (tidak berubah). Untuk membuatnya sederhana: tujuan algoritma adalah untuk lebih baik memisahkan set dan B sedemikian rupa sehingga "titik-titik B lebih mirip dengan yang dari set tetap diketahui C " dan "titik-titik A akhirnya mirip sendiri dan lebih jauh dari C dan set terakhir B ":ABBCACB

  • ... (1)A={xiAdxiA>dxiC}
  • ; B = B A ... (2)A=AAB=BA
  • } ... (3)B={xiBdxiA<dxiC
  • ; A = A B ... (4)B=BBA=AB
  • Ulangi (1), (2), (3), dan (4) sampai: (tidak ada elemen yang bergerak dari ke B atau dari B ke A , yaitu A 'dan B' menjadi kosong) atau ( | A |k atau | B |k )ABBA|A|k|B|k

Algoritma berakhir dalam dua kasus:

  • kapan atau | B | menjadi kurang dari atau sama dengan k|A||B|k
  • atau kasus paling standar, ketika , yang berarti bahwa tidak ada lagi elemen yang bergerak antara A dan B.A=B=

Pertanyaan:

Bagaimana membuktikan bahwa algoritma ini akhirnya berakhir? Saya tidak menemukan fungsi potensial yang mudah yang dapat diminimalisasi atau dimaksimalkan oleh algoritma. Saya telah gagal mencoba beberapa fungsi: fungsi tetapi tidak meningkat pada setiap iterasi. Fungsix A d A x + x B d C x tetapi tidak menurun pada setiap iterasi. Fungsix AxAdxC+xBdxAxAdxA+xBdxC tampaknya tidak menurun pada setiap iterasi. Fungsix A d B x + x B d A x tampaknya tidak akan meningkat pada setiap iterasi. Jadi apa fungsi potensial yang nyaman yang dapat ditunjukkan untuk menambah atau mengurangi pada setiap iterasi? Atau haruskah kita menunjukkan bahwa fungsi berkurang tetapi tidak pada setiap iterasi (setelah beberapa iterasi lebih tepatnya)? Bagaimana?xAdxA+xBdxBxAdxB+xBdxA

Catatan:

  • Titik terdekat ke x dalam himpunan S , berarti: titik k (selain x ) di S , memiliki jarak Euclidean terkecil ke x . Anda bisa mengambil k = 1 untuk menyederhanakan analisis.kxSkxSxk=1
  • Saya tidak tahu apakah ini bisa membantu atau tidak, tetapi saya memiliki properti berikut untuk set awal : awalnyax iB , x jA , jika x bC adalah titik terdekat ke x i dan x suatuC adalah titik terdekat x j kemudian selalu d i s t a n c e ( x i , x b )A,B,CxiB,xjAxbCxixaCxj . Intuitif ini berarti bahwa poin di B lebih dekat ke C dari titik di A .distance(xi,xb)<distance(xj,xa)BCA
  • Jika itu membuat analisis lebih mudah: sangat mungkin untuk mempertimbangkan versi Algoritma yang sedikit berbeda di mana segera setelah titik dari harus dipindahkan ke B , itu dipindahkan dari A ke B (tanpa melewati A ), dan vis versa untuk B .ABABAB
shn
sumber
3
Mengapa Anda tertarik dengan algoritma khusus ini?
1
shna: Apa yang ingin Anda lakukan dengan kumpulan poin yang dibagi secara acak menjadi tiga set?
4
@shna Mengetahui maksud dan tujuan algoritme dapat menyebabkan peningkatan intuisi, dan karenanya membantu masalah.
@RichardRast Untuk membuat penjelasannya sederhana: tujuannya adalah untuk lebih memisahkan set dan B sedemikian rupa sehingga "titik-titik B lebih mirip dengan set tetap yang dikenal C " dan "titik-titik A akhirnya mirip dan lebih jauh dari C dan set terakhir B ". ABBCACB
shn
Migrasi ke arsip ditolak.

Jawaban:

2

Inilah solusi untuk kasus :k=1

Asumsikan algoritma tidak berakhir. Karena ada jumlah terbatas dari algoritma (penugasan poin ke dan B ), status algoritma harus diulang dalam satu siklus. Sejak siklus melewati negara yang berbeda, harus ada titik yang beralih antara A dan B jauh sering.ABAB

Biarkan menjadi titik yang sering berganti-ganti dalam siklus ini. Pilih iterasi pertama dari algoritma dalam siklus di mana x beralih dari B ke A . Agar x beralih ke A , harus ada setidaknya satu titik x di A , dengan d C x > d i s t ( x , x ) . Secara sewenang-wenang memilih titik yang berlabel terkecil; mendefinisikan fungsi f sehingga f ( x ) =xxBAxAxAdxC>dist(x,x)f . Perhatikan bahwa x juga harus beralih antara A danf(x)=xxA tanpa batas sering (karena jika x tetap di A secara permanen, maka akan x ), sehingga kita dapat mengambil f ( f ( x ) ) , f ( f ( f ( f ( x ) ) )) , dll.BxAxf(f(x)),f(f(f(x))),

Karena kita memiliki jumlah titik yang terbatas, iterasi dari f akhirnya harus diulang: untuk beberapa m > n . Sekarang lihat pada urutan yang sesuai jarak dari C: d C f ( x ) , d C f 2 ( x ) , . . . d C f n ( x ) , . . .fn(x)=fm(x)m>ndf(x)C,df2(x)C,...dfn(x)C,.... Karena berulang, urutan ini tidak dapat menurun secara seragam. Harus ada iterasi sehingga d C f o - 1 ( x )d C f o ( x )odfo1(x)Cdfo(x)C

Sekarang, dan f o ( x ) cukup dekat satu sama lain sehingga menyebabkan satu sama lain berada di A , jika salah satunya. Artinya, mereka lebih dekat satu sama lain daripada keduanya adalah C : d C f o ( x )fo1(x)fo(x)AC (dari definisi f )dfo(x)Cdfo1(x)C>dist(fo1(x),fo(x))f

Jadi, segera setelah dan f o (x)keduanya berada dalamA, mereka akan saling menjaga dalamAselamanya (lihat baris 1-2 dari algoritma). Ini bertentangan dengan fakta bahwa semua iterasi darifharus berganti set secara tak terhingga. Jadi, untuk kasus ketikak=1, algoritme berakhir.fo1(x)fo(x)AAfk=1

kausatif
sumber
Ini entah bagaimana rumit dan dapat ditampilkan hanya untuk . Sebaliknya, jauh lebih baik jika kita dapat memperoleh fungsi potensial yang dapat ditunjukkan meningkat atau menurun pada setiap iterasi. Atau yang dapat ditunjukkan meningkat atau menurun setelah "beberapa" iterasi daripada 1.k=1
shn
1
@ shn, saya tidak yakin mengapa Anda mengkritik pilihan teknik pembuktian seseorang yang lebih berhasil memecahkan masalah Anda daripada yang Anda miliki. Terutama ketika pertanyaan Anda mencantumkan empat upaya gagal dalam menggunakan teknik pilihan Anda.
David Richerby
1
@ DavidRicherby Saya tidak mengkritik;) Saya benar-benar membahas tentang solusi itu dengan "penyebab" (yang memberikan jawaban ini) di IRC dan kami menemukan bahwa tidak mungkin untuk membuktikannya dengan cara ini untuk ; jadi kami menyimpulkan bahwa jauh lebih baik jika kita dapat menurunkan fungsi potensial yang dapat ditunjukkan berkurang pada setiap iterasi. Komentar saya hanya informatif. k>1
shn