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 mengacu pada data titik dimensi (vektor). Saya punya tiga set A, B dan C, sedemikian rupa sehingga , , :
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 .
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 ":
- ... (1)
- ; B = B ∪ A ′ ... (2)
- } ... (3)
- ; A = A ∪ B ′ ... (4)
- 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 )
Algoritma berakhir dalam dua kasus:
- kapan atau | B | menjadi kurang dari atau sama dengan k
- atau kasus paling standar, ketika , yang berarti bahwa tidak ada lagi elemen yang bergerak antara A dan 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. Fungsi ∑ x ∈ A d A x + ∑ x ∈ B d C x tetapi tidak menurun pada setiap iterasi. Fungsi ∑ x ∈ A tampaknya tidak menurun pada setiap iterasi. Fungsi ∑ x ∈ 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?
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.
- Saya tidak tahu apakah ini bisa membantu atau tidak, tetapi saya memiliki properti berikut untuk set awal : awalnya ∀ x i ∈ B , x j ∈ A , jika x b ∈ C adalah titik terdekat ke x i dan x suatu ∈ C adalah titik terdekat x j kemudian selalu d i s t a n c e ( x i , x b ) . Intuitif ini berarti bahwa poin di B lebih dekat ke C dari titik di A .
- 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 .
Jawaban:
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.A B A B
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 ) =x x B A x A x′ A dCx>dist(x,x′) f . Perhatikan bahwa x ′ juga harus beralih antara A danf(x)=x′ x′ A 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.B x′ A x f(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>n dCf(x),dCf2(x),...dCfn(x),... . Karena berulang, urutan ini tidak dapat menurun secara seragam. Harus ada iterasi sehingga d C f o - 1 ( x ) ≤ d C f o ( x )o dCfo−1(x)≤dCfo(x)
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 )fo−1(x) fo(x) A C (dari definisi f )dCfo(x)≥dCfo−1(x)>dist(fo−1(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.fo−1(x) fo(x) A A f k=1
sumber