Saya pasti akan menyarankan Anda mengajukan pertanyaan ini dalam matematika atau forum pemrograman, karena Anda mungkin akan mendapatkan jawaban yang paling tepat dari mereka.
chubbycantorset
-1 Setelah diedit pada tanggal 25 Agustus pertanyaan ini tidak dapat dimengerti sama sekali. "Apa teknik yang bisa digunakan untuk papan catur?" Apakah maksudnya itu?
Halvard
Jawaban:
5
Untuk mengatasi pengeditan terhadap pertanyaan
Jika Anda menerima bagian-bagian dalam urutan acak dan Anda tidak memiliki informasi tentang bagian yang akan datang, cara untuk mengatur bagian-bagian itu adalah dengan memberikan potongan ruang lingkup paling sedikit. Misalnya, jika saya menerima seorang ratu pada belokan pertama, saya akan menempatkannya di salah satu dari empat sudut. Beberapa aturan lagi adalah menjaga ksatria tetap dekat satu sama lain dan menggadaikan satu di atas yang lain. Semua strategi ini agak jelas, tetapi sulit untuk memiliki strategi yang konsisten untuk digunakan karena ada begitu banyak kombinasi potensi potongan.
Bagi saya ini tampaknya lebih sebagai pertanyaan pemrograman daripada catur, tetapi ini menarik tanpa masalah! Setelah berpikir sebentar, saya akan berhipotesis bahwa cara terbaik untuk mendekati masalah ini adalah dengan menggunakan ksatria sebagai garis dasar. Sudah diketahui bahwa jumlah maksimum ksatria yang dapat ditampung seseorang di papan adalah 32 (cukup dengan menempatkan mereka di semua kotak dengan warna yang sama), oleh karena itu memiliki posisi awal seperti ini logis karena ini adalah hunian maksimum yang dapat Anda miliki dengan bagian individual. Strategi ini meluas sampai ke papan N x N.
Setelah itu, saya akan menggunakan pion karena kecakapan menyerang mereka terbatas pada forward diagonal satu persegi dalam cakupan. Mereka dapat menempati setiap kolom lainnya (bukan baris karena ini akan dibatasi pada 2, 4, dan 6 jika mengikuti aturan konvensional), dan ini akan menambah N / 4 lebih banyak kotak yang ditempati untuk papan NxN. Ini digeneralisasi ke jumlah total kotak yang ditempati ke N / 2 + N / 4, atau hanya 3N / 4 kotak yang ditempati total.
Ini adalah hasil dari pertimbangan sekitar 5 menit, jadi algoritme saya mungkin cacat. Saya harap ini membantu menjawab pertanyaan Anda!
Saya akan berpikir bahwa dengan pemilihan potongan acak, strategi dasar akan menempatkan mereka di papan untuk bahwa mereka menyerang beberapa kotak mungkin dan tidak menghalangi pangkat atau file yang belum terhalang sedapat mungkin. yaitu ksatria di sudut-sudut, potongan bergerak jarak pendek seperti raja dan ksatria pada peringkat atau file yang sama, dan uskup pada peringkat atau file yang sama dengan potongan lainnya. Secara umum ketika memilih kotak untuk potongan baru itu akan mirip dengan berburu raja. Ketika mencoba untuk menjabarkan raja Anda ingin mengurangi jumlah kotak yang ia dapat dengan aman menempati sebanyak mungkin (tanpa mengurangi satu pun). Di sini Anda ingin setiap bagian ditempatkan untuk mengurangi jumlah kotak masih tidak diserang oleh bagian apa pun sesedikit mungkin.
Karena definisi masalah telah diperbarui baru-baru ini, saya berasumsi bahwa Anda mulai dengan papan NxN kosong, dan diberikan potongan acak dan diminta untuk meletakkannya. Setelah selesai, Anda diberikan potongan acak lain sampai tidak ada lagi yang bisa ditempatkan.
Untuk strategi manusia , saya kira aturan praktis yang baik adalah memilih posisi (valid) yang meminimalkan jumlah kotak yang masih terbuka yang ditolak oleh bagian baru. Ada dua komponen utama untuk ini, pada level tinggi:
Menempatkan beberapa jenis potongan di dekat tepi papan mungkin bermanfaat (saya katakan beberapa , karena ketika menempatkan benteng, Anda akan menolak kotak 2N-1 di mana pun Anda meletakkannya, tetapi logika berlaku untuk ksatria).
Setiap kotak yang digandakan (atau rangkap tiga, dll) mewakili potensi kotak bebas di tempat lain di papan tulis. Ingatlah ini untuk memaksimalkan kotak yang benar-benar terbuka.
Untuk strategi pemrograman , kita harus melihat masalahnya lagi. Cara yang dinyatakan di atas sebenarnya bukan masalah pemrograman, karena kesuksesan kita tergantung pada menemukan strategi terbaik (yang jelas belum kita lakukan). Pemrograman tradisional tidak akan benar-benar membantu dalam hal ini, karena aturan masalah menyangkal pengetahuan sempurna komputer tentang apa yang akan datang. Hal ini membuat pendekatan tradisional brute-forcing atau backtracking (biasanya digunakan untuk menyelesaikan masalah 8 / N-Queens ) tidak memungkinkan untuk digunakan.
Namun, orang dapat menggunakan berbagai teknik AI untuk mencari strategi yang optimal. Pada dasarnya, ini akan bermuara pada menemukan cara untuk mewakili strategi dalam beberapa jenis struktur data. Ini sebenarnya bagian yang sulit, dan bisa menjadi sangat rumit. Anda mungkin harus membuat semacam bahasa khusus domain yang memungkinkan aturan seperti "pilih kolom paling kanan yang belum memiliki ksatria di dalamnya", atau apa pun. Maka pada dasarnya Anda akan memilih beberapa jenis algoritma optimasi (pencarian acak, algoritma genetika, kawanan partikel, dll) untuk menemukan seperangkat aturan yang sangat baik, yang tampaknya mengalahkan semua yang telah Anda temukan sejauh ini. Ada peluang bagus bahwa itu akan sangat berbelit-belit sehingga kita tidak pernah bisa memahami bagaimana dan mengapa itu bekerja dengan sangat baik, tetapi mungkin bisa mengalahkan yang kita miliki.
Memiliki jumlah kuadrat serang yang lebih sedikit setiap saat , yang dapat ditulis ulang untuk " selalu mencoba menyerang kuadrat yang sama beberapa kali ", logika di baliknya adalah, jika Anda berhasil menumpuk serangan, maka jumlah total serangan akan berkurang. kotak diserang (yang kita inginkan), membuat lebih banyak ruang untuk potongan lain untuk ditempatkan.
Pindahkan kelompok potongan di dekat sudut dan tepi papan , ini akan lagi, mengurangi jumlah kotak yang diserang. Kadang-kadang kita perlu membalik dan mencerminkan kelompok potongan tertentu untuk mengetahui sudut mana yang akan menyelamatkan kita dari jumlah kotak maksimum (contoh gambar di bawah).
Sebagai contoh, saya akan memposting studi cepat yang saya lakukan pada ksatria, itu agak konyol karena kita sudah tahu kita bisa menempatkan 32 ksatria di papan 8x8 hanya dengan menempatkan mereka semua pada warna yang sama, tetapi saya masih melakukannya untuk lihat bagaimana beberapa ksatria harus diatur:
(perhatikan bagaimana titik # 2 menentukan pengaturan mana yang lebih baik ketika kita memiliki dasi)
Juga, dua tautan bermanfaat yang saya temukan adalah:
Jawaban:
Untuk mengatasi pengeditan terhadap pertanyaan Jika Anda menerima bagian-bagian dalam urutan acak dan Anda tidak memiliki informasi tentang bagian yang akan datang, cara untuk mengatur bagian-bagian itu adalah dengan memberikan potongan ruang lingkup paling sedikit. Misalnya, jika saya menerima seorang ratu pada belokan pertama, saya akan menempatkannya di salah satu dari empat sudut. Beberapa aturan lagi adalah menjaga ksatria tetap dekat satu sama lain dan menggadaikan satu di atas yang lain. Semua strategi ini agak jelas, tetapi sulit untuk memiliki strategi yang konsisten untuk digunakan karena ada begitu banyak kombinasi potensi potongan.
Bagi saya ini tampaknya lebih sebagai pertanyaan pemrograman daripada catur, tetapi ini menarik tanpa masalah! Setelah berpikir sebentar, saya akan berhipotesis bahwa cara terbaik untuk mendekati masalah ini adalah dengan menggunakan ksatria sebagai garis dasar. Sudah diketahui bahwa jumlah maksimum ksatria yang dapat ditampung seseorang di papan adalah 32 (cukup dengan menempatkan mereka di semua kotak dengan warna yang sama), oleh karena itu memiliki posisi awal seperti ini logis karena ini adalah hunian maksimum yang dapat Anda miliki dengan bagian individual. Strategi ini meluas sampai ke papan N x N.
Setelah itu, saya akan menggunakan pion karena kecakapan menyerang mereka terbatas pada forward diagonal satu persegi dalam cakupan. Mereka dapat menempati setiap kolom lainnya (bukan baris karena ini akan dibatasi pada 2, 4, dan 6 jika mengikuti aturan konvensional), dan ini akan menambah N / 4 lebih banyak kotak yang ditempati untuk papan NxN. Ini digeneralisasi ke jumlah total kotak yang ditempati ke N / 2 + N / 4, atau hanya 3N / 4 kotak yang ditempati total.
Ini adalah hasil dari pertimbangan sekitar 5 menit, jadi algoritme saya mungkin cacat. Saya harap ini membantu menjawab pertanyaan Anda!
sumber
Saya akan berpikir bahwa dengan pemilihan potongan acak, strategi dasar akan menempatkan mereka di papan untuk bahwa mereka menyerang beberapa kotak mungkin dan tidak menghalangi pangkat atau file yang belum terhalang sedapat mungkin. yaitu ksatria di sudut-sudut, potongan bergerak jarak pendek seperti raja dan ksatria pada peringkat atau file yang sama, dan uskup pada peringkat atau file yang sama dengan potongan lainnya. Secara umum ketika memilih kotak untuk potongan baru itu akan mirip dengan berburu raja. Ketika mencoba untuk menjabarkan raja Anda ingin mengurangi jumlah kotak yang ia dapat dengan aman menempati sebanyak mungkin (tanpa mengurangi satu pun). Di sini Anda ingin setiap bagian ditempatkan untuk mengurangi jumlah kotak masih tidak diserang oleh bagian apa pun sesedikit mungkin.
sumber
Karena definisi masalah telah diperbarui baru-baru ini, saya berasumsi bahwa Anda mulai dengan papan NxN kosong, dan diberikan potongan acak dan diminta untuk meletakkannya. Setelah selesai, Anda diberikan potongan acak lain sampai tidak ada lagi yang bisa ditempatkan.
Untuk strategi manusia , saya kira aturan praktis yang baik adalah memilih posisi (valid) yang meminimalkan jumlah kotak yang masih terbuka yang ditolak oleh bagian baru. Ada dua komponen utama untuk ini, pada level tinggi:
Untuk strategi pemrograman , kita harus melihat masalahnya lagi. Cara yang dinyatakan di atas sebenarnya bukan masalah pemrograman, karena kesuksesan kita tergantung pada menemukan strategi terbaik (yang jelas belum kita lakukan). Pemrograman tradisional tidak akan benar-benar membantu dalam hal ini, karena aturan masalah menyangkal pengetahuan sempurna komputer tentang apa yang akan datang. Hal ini membuat pendekatan tradisional brute-forcing atau backtracking (biasanya digunakan untuk menyelesaikan masalah 8 / N-Queens ) tidak memungkinkan untuk digunakan.
Namun, orang dapat menggunakan berbagai teknik AI untuk mencari strategi yang optimal. Pada dasarnya, ini akan bermuara pada menemukan cara untuk mewakili strategi dalam beberapa jenis struktur data. Ini sebenarnya bagian yang sulit, dan bisa menjadi sangat rumit. Anda mungkin harus membuat semacam bahasa khusus domain yang memungkinkan aturan seperti "pilih kolom paling kanan yang belum memiliki ksatria di dalamnya", atau apa pun. Maka pada dasarnya Anda akan memilih beberapa jenis algoritma optimasi (pencarian acak, algoritma genetika, kawanan partikel, dll) untuk menemukan seperangkat aturan yang sangat baik, yang tampaknya mengalahkan semua yang telah Anda temukan sejauh ini. Ada peluang bagus bahwa itu akan sangat berbelit-belit sehingga kita tidak pernah bisa memahami bagaimana dan mengapa itu bekerja dengan sangat baik, tetapi mungkin bisa mengalahkan yang kita miliki.
sumber
Dua poin utama adalah:
Sebagai contoh, saya akan memposting studi cepat yang saya lakukan pada ksatria, itu agak konyol karena kita sudah tahu kita bisa menempatkan 32 ksatria di papan 8x8 hanya dengan menempatkan mereka semua pada warna yang sama, tetapi saya masih melakukannya untuk lihat bagaimana beberapa ksatria harus diatur:
(perhatikan bagaimana titik # 2 menentukan pengaturan mana yang lebih baik ketika kita memiliki dasi)
Juga, dua tautan bermanfaat yang saya temukan adalah:
sumber
Jauhkan potongan dari tengah, di samping.
sumber