Saya memiliki beberapa juta nilai 32-bit. Untuk setiap nilai, saya ingin menemukan semua nilai lain dalam jarak hamming 5. Dalam pendekatan naif, ini membutuhkan perbandingan , yang ingin saya hindari.
Saya menyadari bahwa jika saya hanya memperlakukan nilai-nilai 32-bit ini sebagai bilangan bulat dan mengurutkan daftar sekali, maka nilai-nilai yang berbeda hanya dalam bit paling signifikan berakhir sangat berdekatan. Ini memungkinkan saya untuk memiliki "jendela" yang lebih pendek atau kisaran angka di mana saya dapat melakukan perbandingan pasangan-bijaksana yang sebenarnya untuk jarak hamming yang tepat. Namun, ketika 2 nilai hanya bervariasi dalam bit urutan yang lebih tinggi, maka mereka berakhir di luar "jendela" ini dan muncul di ujung yang berlawanan dari daftar yang diurutkan. Misalnya
11010010101001110001111001010110
01010010101001110001111001010110
akan sangat berjauhan, meskipun jarak hamming mereka adalah 1. Karena, jarak hamming antara 2 nilai dipertahankan ketika keduanya diputar, saya pikir dengan melakukan 32 rotasi kiri dan kemudian menyortir daftar setiap waktu, kemungkinan ada 2 nilai akan berakhir cukup dekat dalam daftar yang disortir di setidaknya satu dari mereka.
Meskipun pendekatan ini memberi saya hasil yang baik, saya berjuang untuk secara formal menetapkan kebenaran dari pendekatan ini.
Mengingat bahwa saya mencari nilai yang cocok dengan jarak hamming atau kurang, apakah saya benar-benar perlu melakukan semua rotasi 32 bit? Untuk misalnya jika dan ukuran jendela saya adalah 1000, saya perlu melakukan rotasi maksimum 24 bit karena walaupun bit nyasar muncul di salah satu dari 8 bit urutan yang lebih rendah, angka yang dihasilkan tidak akan berbeda lebih dari 1000.
A[i].close