The Hamming jarak antara dua string dengan panjang yang sama adalah jumlah posisi di mana yang sesuai simbol yang berbeda.
Membiarkan Pmenjadi string biner panjang ndan Tmenjadi string biner panjang 2n-1. Kita dapat menghitung njarak Hamming antara Pdan setiap nsubstring Tdengan panjang dari kiri ke kanan dan menempatkannya ke dalam array (atau daftar).
Contoh urutan jarak Hamming
Biarkan P = 101dan T = 01100. Urutan jarak Hamming yang Anda dapatkan dari pasangan ini adalah 2,2,1.
Definisi kedekatan
Sekarang mari kita perhatikan dua urutan jarak Hamming tersebut. Katakan x = (0, 2, 2, 3, 0)dan y = (2, 1, 4, 4, 2)sebagai contoh. Kami mengatakan bahwa xdan yadalah closejika y <= x <= 2*yatau jika x <= y <= 2*x. Di sini, perkalian skalar dan ketidaksetaraan diambil secara elemen. Artinya, untuk dua urutan Adan B, A <= B iff A[i] <= B[i]untuk semua indeks i.
Perhatikan bahwa urutan jarak Hamming membentuk urutan parsial dengan cara membandingkannya. Dengan kata lain, banyak pasangan urutan tidak lebih besar atau sama atau lebih kecil dari atau sama satu sama lain. Sebagai contoh (1,2)dan (2,1).
Jadi menggunakan contoh di atas, (0, 2, 2, 3, 0) <= 2*(2, 1, 4, 4, 2) = (4, 2, 8, 8, 4)tetapi (0, 2, 2, 3, 0)tidak lebih besar dari (2, 1, 4, 4, 2). Juga (2, 1, 4, 4, 2)tidak lebih kecil dari atau sama dengan 2*(0, 2, 2, 3, 0) = (0, 4, 4, 6, 0). Akibatnya xdan ytidak dekat satu sama lain.
Tugas
Untuk meningkatkan nmulai dari n=1, pertimbangkan semua pasangan yang mungkin dari string biner Ppanjang ndan Tpanjang 2n-1. Ada 2^(n+2n-1)pasangan seperti itu dan karenanya banyak urutan jarak Hamming. Namun banyak dari sekuens tersebut akan identik. Tugasnya adalah menemukan ukuran rangkaian urutan Hamming terbesar sehingga tidak ada dua urutan yang saling berdekatan.
Kode Anda harus menampilkan satu nomor per nilai n.
Skor
Skor Anda secara umum adalah tertinggi yang dicapai nkode Anda di komputer saya dalam 5 menit (tapi baca terus). Waktunya adalah total waktu berjalan, bukan hanya waktu untuk itu n.
Untuk memberikan skor untuk jawaban yang tidak optimal, karena menemukan jawaban yang optimal kemungkinan akan sulit, kita akan membutuhkan sistem penilaian yang agak halus. Skor Anda adalah nilai tertinggi di nmana tidak ada orang lain yang memposting jawaban yang benar lebih tinggi untuk ukuran apa pun yang lebih kecil dari sama dengan ini. Misalnya, jika Anda menghasilkan 2, 4, 21dan orang lain mengeluarkan 2, 5, 15maka Anda hanya akan skor 1karena orang lain memiliki jawaban yang lebih baik n = 2. Jika Anda menghasilkan 2, 5, 21maka Anda akan mencetak skor 3tidak peduli apa yang orang lain hasilkan karena semua jawaban itu optimal. Jelas jika Anda memiliki semua jawaban optimal maka Anda akan mendapatkan skor untuk tertinggi yang nAnda posting. Namun, bahkan jika jawaban Anda tidak optimal, Anda masih bisa mendapatkan skor jika tidak ada orang lain yang bisa mengalahkannya.
Contoh jawaban dan contoh yang berhasil
(Jawaban ini belum dicentang. Verifikasi independen akan diterima dengan penuh syukur.)
Terima kasih untuk produk ETH:
- n = 1 memberi 2.
- n = 2 memberi 5.
- n = 3 memberi 21.
Mari kita lihat n = 2lebih detail. Dalam hal ini daftar lengkap urutan jarak Hamming (diwakili oleh tuple di sini) adalah:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
Kita bisa melihat bahwa (0,0)itu tidak dekat dengan tuple lainnya. Bahkan jika kita mengambil (0, 0), (0, 1), (1, 0), (2, 1), (1,2)maka tidak satupun dari mereka tupel yang dekat dengan apa pun yang lain. Ini memberi skor 5untuk n = 2.
Untuk n = 3daftar lengkap urutan jarak Hamming yang berbeda adalah:
[(0, 0, 0), (0, 0, 1), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 1), (0, 2, 2), (0, 2, 3), (0, 3, 0), (0, 3, 1), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 1, 0), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 0), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 0), (1, 3, 1), (1, 3, 2), (2, 0, 1), (2, 0, 2), (2, 0, 3), (2, 1, 0), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 0), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3), (3, 0, 2), (3, 0, 3), (3, 1, 0), (3, 1, 1), (3, 1, 2), (3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 3, 2), (3, 3, 3)]
Dari 48sekuens tersebut, kita dapat memilih satu set ukuran 21sehingga tidak ada pasangan dalam set yang dekat satu sama lain.
Bahasa dan perpustakaan
Anda dapat menggunakan bahasa dan perpustakaan yang tersedia yang Anda suka. Jika memungkinkan, alangkah baiknya untuk dapat menjalankan kode Anda, jadi harap sertakan penjelasan lengkap tentang cara menjalankan / kompilasi kode Anda di Linux jika memungkinkan.
Mesin saya Pengaturan waktu akan dijalankan pada mesin 64-bit saya. Ini adalah instalasi ubuntu standar dengan RAM 8GB, Prosesor Delapan-Core AMD FX-8350 dan Radeon HD 4250. Ini juga berarti saya harus dapat menjalankan kode Anda.
Jawaban utama
- Skor 4 untuk 2, 5, 21, 83, 361 oleh Christian Sievers. C ++
- Skor 5 untuk 2, 5, 21, 83, 372 oleh fəˈnɛtɪk. Javascript