Anda diberi larik panjang . Setiap elemen array milik salah satu kelas K. Anda seharusnya mengatur ulang array menggunakan jumlah minimum operasi swap sehingga semua elemen dari kelas yang sama selalu dikelompokkan bersama, yaitu mereka membentuk subarray yang berdekatan.
Sebagai contoh:
Tiga pengaturan valid lainnya masih ada.
Apa masalah ini disebut dalam literatur? Apakah ada algoritma yang efisien untuk itu?
terminology
reference-request
sorting
arrays
Marko Bukal
sumber
sumber
Jawaban:
Catatan: Ini adalah bukti kekerasan, dan saya pikir ada algoritma praktis seperti pemrograman integer, dll.
Mengingat contoh BIN_PACKING di mana Anda ingin pak nomor n 1 , ... , n K ke L sampah ukuran m 1 , ... , m L , dan dipastikan bahwa Σ n i = Σ m j = N , maka kita bisa merancang contoh masalah Anda sebagai berikut:K n1, ... , nK L. m1, ... , mL. ∑ nsaya= Σ mj= N
sumber
Saya juga menduga ini NP-hard, tetapi tanpa adanya ide untuk bukti, berikut adalah beberapa batas bawah yang dapat dihitung dengan cepat yang mungkin berguna untuk memeriksa optimalitas solusi heuristik, atau memangkas pencarian cabang-dan-terikat .
Dalam contoh Anda, batas-batas ini memberikan 1 (0,5 dapat ditangkap dalam kasus terakhir), yang tentu saja longgar.
sumber