มันเป็นเรื่องง่ายที่จะเห็นว่าสำหรับการใด ๆมีอยู่ 1-1 ทำแผนที่จาก {0,1}เป็น {0,1}ดังกล่าวว่าสำหรับการใด ๆเวกเตอร์คือ "สมดุล" คือมีจำนวนเท่ากับ 1 และ 0 เป็นไปได้ไหมที่จะกำหนดเช่นนี้เพื่อให้เราสามารถคำนวณ อย่างมีประสิทธิภาพ?n
ขอบคุณ
มันเป็นเรื่องง่ายที่จะเห็นว่าสำหรับการใด ๆมีอยู่ 1-1 ทำแผนที่จาก {0,1}เป็น {0,1}ดังกล่าวว่าสำหรับการใด ๆเวกเตอร์คือ "สมดุล" คือมีจำนวนเท่ากับ 1 และ 0 เป็นไปได้ไหมที่จะกำหนดเช่นนี้เพื่อให้เราสามารถคำนวณ อย่างมีประสิทธิภาพ?n
ขอบคุณ
คำตอบ:
ลองพิจารณาบิตสตริงx คำนิยาม:
ตอนนี้แก้ไขสตริงxพิจารณาฟังก์ชันกรัม( ฉัน) = B ( F ( x , ฉัน) ) ข้อสังเกต:
ตอนนี้มันตามที่มีอยู่เช่นนั้น- 1 ≤ กรัม( ฉัน) ≤ + 1
ดังนั้นเราสามารถสร้างสตริงบิตYดังนี้ concatenate F ( x , ฉัน)และการเข้ารหัสไบนารีของดัชนีฉัน ค่าสัมบูรณ์ของความไม่สมดุลของYคือO ( บันทึกn ) ยิ่งกว่านั้นเราสามารถกู้คืนx ที่ให้ได้y ; การทำแผนที่คือ bijection
สุดท้ายคุณก็สามารถเพิ่มหุ่นบิตที่ช่วยลดความไม่สมดุลของปีจากO ( บันทึกn )เพื่อ0
ใช้การแมปที่เก็บรักษาคำสั่งพจนานุกรม เพื่อหาสิ่งที่ -th length- nเวกเตอร์สมดุลกับn / 2 1 ทำมันซ้ำถ้าk ≤ ( n - 1จากนั้นตั้งค่าบิตแรก 0 จากนั้นค้นหาเวกเตอร์k-th-(n-1) ที่มีn/21 เพื่อให้บิตที่เหลือn-1สมบูรณ์ มิฉะนั้นให้ตั้งค่าบิตแรก 1 และค้นหาk-(n-1- ความยาว -(n-1)เวกเตอร์ที่มีn/2-11