2
ค้นหาคู่ของค่าทั้งหมดที่อยู่ใกล้กับระยะทาง Hamming
ฉันมีค่า 32- บิตไม่กี่ล้าน สำหรับแต่ละค่าฉันต้องการค้นหาค่าอื่น ๆ ทั้งหมดที่อยู่ในระยะห่างของการแฮ็มที่ 5 ในแนวทางไร้เดียงสาสิ่งนี้ต้องใช้การเปรียบเทียบซึ่งฉันต้องการหลีกเลี่ยงO ( N2)O(ยังไม่มีข้อความ2)O(N^2) ฉันรู้ว่าถ้าฉันเพิ่งปฏิบัติกับค่า 32- บิตเหล่านี้เป็นจำนวนเต็มและเรียงลำดับรายการหนึ่งครั้งแล้วค่าที่แตกต่างกันในบิตที่สำคัญน้อยที่สุดจบลงด้วยกัน สิ่งนี้ทำให้ฉันมี "หน้าต่าง" ที่สั้นลงหรือช่วงของตัวเลขภายในที่ฉันสามารถทำการเปรียบเทียบคู่ที่ชาญฉลาดจริงสำหรับระยะทางที่แน่นอน อย่างไรก็ตามเมื่อ 2 ค่าแตกต่างกันเฉพาะในลำดับบิตที่สูงกว่าพวกเขาจะจบลงนอก "หน้าต่าง" นี้และปรากฏในปลายตรงข้ามของรายการที่เรียงลำดับ เช่น 11010010101001110001111001010110 01010010101001110001111001010110 จะห่างกันมากถึงแม้ว่าระยะการแฮ็กของพวกเขาคือ 1 เนื่องจากระยะการแฮ็มระหว่าง 2 ค่าถูกเก็บรักษาไว้เมื่อหมุนทั้งสองฉันคิดว่าโดยหมุน 32 ซ้ายแล้วเรียงลำดับรายการทุกครั้งมีโอกาส 2 ค่า จะปิดท้ายพอในรายการที่เรียงลำดับอย่างน้อยหนึ่งรายการ แม้ว่าวิธีการนี้จะให้ผลลัพธ์ที่ดี แต่ฉันก็พยายามดิ้นรนเพื่อสร้างความถูกต้องของวิธีการนี้อย่างเป็นทางการ เนื่องจากฉันกำลังมองหาค่าที่ตรงกันซึ่งมีระยะการแฮงค์ระยะทางหรือน้อยกว่าฉันต้องหมุน 32 บิตทั้งหมดหรือไม่ เช่นถ้าและขนาดหน้าต่างของฉันคือ 1,000 ฉันต้องทำที่การหมุนสูงสุด 24 บิตเพราะแม้ว่าบิตเร่ร่อนจะปรากฏในลำดับบิตที่ต่ำกว่า 8 บิตผลลัพธ์ที่ได้จะไม่แตกต่างกันมากกว่า 1,000k = 1kkkk = …