ฉันกำลังค้นหาอัลกอริทึมที่มีประสิทธิภาพสำหรับปัญหา:
การป้อนข้อมูล : จำนวนเต็มบวก (เก็บไว้เป็นบิต) สำหรับจำนวนเต็มบาง0
เอาท์พุท : จำนวนn
คำถาม : เราสามารถคำนวณจากบิตในเวลาหรือไม่?
นี่เป็นคำถามเชิงทฤษฎีที่กระตุ้นโดยคำตอบของฉันสำหรับคำถามทางคณิตศาสตร์ SE จะค้นหาสูตรสำหรับ bijection นี้ได้อย่างไร . ในคำถามนี้ผู้เขียนต้องการหา bijection จากและตัวเลขธรรมชาติ\} ฉันเสนอเป็นวิธีแก้ปัญหา มีคำตอบอีกข้อหนึ่งที่ยืนยันว่า "ไม่มีสูตรง่าย ๆ " ซึ่งทำให้ฉันสงสัยว่าวิธีแก้ปัญหาที่ฉันเสนอนั้นง่ายแค่ไหน
ด้วยวิธีแก้ปัญหาที่เสนอของฉันถ้าเรารู้ว่าและเราสามารถคำนวณได้อย่างง่ายดาย (เขียนเลขฐานสองของตามด้วยตามด้วย zeroes) นี้จะใช้เวลาเวลา
การค้นหาจากบิตจำนวนเพื่อค้นหาบิตที่มีนัยสำคัญน้อยที่สุด (ซึ่งสามารถคำนวณได้โดยการนับการเลื่อนบิตขวา, ทิ้งไว้ในหน่วยความจำ) นี้จะใช้เวลาเวลา
อย่างไรก็ตามเราต้องหาซึ่งอาจจะยากขึ้น มันจะเป็นไปได้ที่จะหาโดยหารด้วยซ้ำ ๆแต่มันดูสิ้นเปลือง ต้องใช้การดำเนินการหารซึ่งแต่ละรายการจะใช้เวลาดังนั้นนี่คือเวลาทั้งหมด[ที่จริงแล้วหลังจากแต่ละรอบซ้ำจำนวนหลักจะลดลงเป็นเส้นตรง แต่สิ่งนี้ยังคงส่งผลให้เวลา ]
ดูเหมือนว่าเราควรจะสามารถใช้ประโยชน์จากการรู้เข้าเป็นอำนาจของ3