ระยะ Hammingระหว่างสองสายความยาวเท่ากันคือจำนวนของตำแหน่งที่สัญลักษณ์ที่สอดคล้องกันจะแตกต่างกัน
ให้Pเป็นสตริงไบนารีของความยาวnและเป็นสตริงไบนารีของความยาวT 2n-1เราสามารถคำนวณnระยะทาง Hamming ระหว่างPและnสตริงย่อยความยาวของทั้งหมดTตามลำดับจากซ้ายไปขวาและใส่ลงในอาร์เรย์ (หรือรายการ)
ตัวอย่างลำดับระยะทาง Hamming
ขอและP = 101 T = 01100ลำดับของ Hamming 2,2,1ระยะทางที่คุณได้รับจากคู่นี้คือ
คำจำกัดความของความใกล้ชิด
ทีนี้ลองพิจารณาลำดับของระยะทาง Hamming สองอย่าง พูดx = (0, 2, 2, 3, 0)และy = (2, 1, 4, 4, 2)เป็นตัวอย่าง เรากล่าวว่าxและyมีcloseถ้าหรือถ้าy <= x <= 2*y x <= y <= 2*xนี่คือการคูณสเกลาร์และความไม่เท่าเทียมกันถูกนำมาเป็นองค์ประกอบ กล่าวคือสำหรับลำดับสองAและB, ดัชนีทั้งหมดA <= B iff A[i] <= B[i]i
โปรดทราบว่าลำดับของระยะทาง Hamming สร้างลำดับบางส่วนภายใต้วิธีการเปรียบเทียบเหล่านี้ ในคำอื่น ๆ หลายคู่ลำดับไม่มากกว่าหรือเท่ากับหรือน้อยกว่าหรือเท่ากับซึ่งกันและกัน ตัวอย่างและ(1,2)(2,1)
ดังนั้นการใช้ตัวอย่างข้างต้น(0, 2, 2, 3, 0) <= 2*(2, 1, 4, 4, 2) = (4, 2, 8, 8, 4)แต่ไม่ได้มีขนาดใหญ่กว่า(0, 2, 2, 3, 0) (2, 1, 4, 4, 2)นอกจากนี้ยังไม่ได้มีขนาดเล็กกว่าหรือเท่ากับ(2, 1, 4, 4, 2) 2*(0, 2, 2, 3, 0) = (0, 4, 4, 6, 0)เป็นผลให้xและyไม่ใกล้กัน
งาน
สำหรับการเพิ่มการnเริ่มต้นที่n=1พิจารณาคู่เป็นไปได้ทั้งหมดของสตริงไบนารีPของความยาวnและความยาวT 2n-1มี2^(n+2n-1)คู่ดังกล่าวและด้วยเหตุนี้จึงมีหลายลำดับของระยะทาง Hamming อย่างไรก็ตามลำดับเหล่านั้นจำนวนมากจะเหมือนกัน ภารกิจคือการหาขนาดของลำดับระยะทางของ Hamming ที่ใหญ่ที่สุดเพื่อให้ไม่มีสองลำดับที่อยู่ใกล้กัน
nรหัสของคุณควรส่งออกจำนวนหนึ่งต่อมูลค่าของ
คะแนน
คะแนนของคุณกำลังพูดnถึงรหัสสูงสุดของคุณในเครื่องของฉันใน 5 นาที (แต่อ่านต่อ) nระยะเวลาเป็นเวลาการทำงานรวมเวลาไม่เพียงแค่นั้น
เพื่อให้คะแนนสำหรับคำตอบที่ไม่เหมาะสมเพราะการหาคำตอบที่ดีที่สุดน่าจะยากเราจะต้องมีระบบการให้คะแนนเล็กน้อย คะแนนของคุณคือมูลค่าสูงสุดnที่ไม่มีใครโพสต์คำตอบที่ถูกต้องสูงขึ้นสำหรับทุกขนาดที่เล็กกว่านี้ ตัวอย่างเช่นถ้าคุณเอาท์พุท2, 4, 21และเอาท์พุทของคนอื่น2, 5, 15แล้วคุณจะให้คะแนนเป็นคนอื่นมีคำตอบที่ดีสำหรับ1 n = 2หากคุณส่งออก2, 5, 21คุณจะได้คะแนน3ไม่ว่าใครจะได้ผลลัพธ์ใดเพราะคำตอบเหล่านั้นดีที่สุด เห็นได้ชัดว่าถ้าคุณมีคำตอบที่ดีที่สุดแล้วคุณจะได้รับคะแนนสูงสุดสำหรับการnโพสต์ อย่างไรก็ตามแม้ว่าคำตอบของคุณจะไม่เหมาะสมคุณก็ยังสามารถได้คะแนนถ้าไม่มีใครสามารถเอาชนะได้
ตัวอย่างคำตอบและตัวอย่างการทำงาน
(คำตอบนี้ยังไม่ถูกตรวจสอบการตรวจสอบอิสระจะได้รับสุดซึ้ง)
ขอบคุณ ETHproductions:
- n = 1 ให้ 2
- n = 2 ให้ 5
- n = 3 ให้ 21
ลองดูn = 2รายละเอียดเพิ่มเติม ในกรณีนี้รายการลำดับระยะทางของ Hamming ทั้งหมด (แสดงโดย tuples ที่นี่) คือ:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
เราจะเห็น(0,0)ได้ว่าไม่ได้อยู่ใกล้กับ tuple อื่น ๆ ในความเป็นจริงถ้าเราใช้เวลา(0, 0), (0, 1), (1, 0), (2, 1), (1,2)แล้วไม่มี tuples ผู้ที่อยู่ใกล้กับคนอื่น ๆ นี้จะช่วยให้คะแนนของสำหรับ5n = 2
สำหรับn = 3รายการทั้งหมดของลำดับระยะทาง Hamming ที่แตกต่างกันคือ:
[(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)]
ใน48ลำดับเหล่านั้นเราสามารถเลือกชุดของขนาด21เพื่อให้ไม่มีคู่ในชุดนั้นใกล้กัน
ภาษาและห้องสมุด
คุณสามารถใช้ภาษาและไลบรารีใด ๆ ที่คุณต้องการ หากเป็นไปได้จะเป็นการดีที่จะสามารถเรียกใช้รหัสของคุณได้ดังนั้นโปรดระบุคำอธิบายโดยละเอียดเกี่ยวกับวิธีเรียกใช้ / รวบรวมรหัสของคุณใน Linux หากเป็นไปได้
My Machineการจับเวลาจะทำงานบนเครื่อง 64 บิตของฉัน นี่คือการติดตั้ง Ubuntu แบบมาตรฐานที่มี 8GB RAM, AMD FX-8350 Eight-Core Processor และ Radeon HD 4250 นี่หมายความว่าฉันต้องสามารถเรียกใช้รหัสของคุณได้
คำตอบชั้นนำ
- คะแนน4สำหรับ 2, 5, 21, 83, 361 โดย Christian Sievers C ++
- คะแนน5สำหรับ 2, 5, 21, 83, 372 โดย fəˈnɛtɪk จาวาสคริ