เห็นได้ชัดว่ามีสตริงไบนารีของความยาว2nเพื่อสำรวจไบนารีอัลกอริทึมต้องไปที่แต่ละโหนดหนึ่งครั้งนั่นคือต้องทำ
ขั้นตอน4n2n
∑i=02n2i=22n+1−1=O(4n)
ลองพิจารณาอัลกอริทึมแบบเรียกซ้ำซึ่งลัดไปตามต้นไม้ที่คุณอธิบาย แต่นับจำนวนของมันและเลขศูนย์ในทางของมันนั่นคือมันจะสำรวจเฉพาะส่วนที่ดีของต้นไม้
แต่มีกี่สตริงไบนารี่ที่มี 0 และ 1 อยู่กี่ตัว? เราเลือก 1 สำหรับสายอักขระที่มีความยาวและใช้สูตรของสเตอร์ลิงในขั้นตอนที่ 2:
nnn2n
(2nn)=(2n)!(n!)2=4nπn−−−√(1+O(1/n))
แก้ไข
ขอบคุณความคิดเห็นของ Peter Shor เรายังสามารถวิเคราะห์จำนวนขั้นตอนที่ต้องการโดยอัลกอริทึมที่สองซึ่งนับ 1 และ 0 ฉันกำลังพูดถึงความคิดเห็นของเขาจากด้านล่าง:
เราต้องการค้นหาลำดับเลขฐานสองทั้งหมดที่มี 0's และ 1 ทุกประการ เราสำรวจต้นไม้ไบนารีที่แต่ละโหนดเป็นลำดับที่มากที่สุด 0's และ 1's เราไม่จำเป็นต้องไปที่โหนดใด ๆ ที่มีมากกว่า 0 หรือมากกว่า 1 เราต้องไปกี่โหนด มีสตริงมี 0's และ 1 ผลรวมทั้งหมดนี้ให้ . ตอนนี้เราต้องไปที่แต่ละโหนดเหล่านี้ในราคาเฉลี่ยต่อโหนดคงที่ เราสามารถทำได้โดยไปที่ลูกซ้ายแต่ละคนก่อนและลูกขวาแต่ละคนเป็นอันดับสองnn2nnn(i+ji)iji,j≤n∑ni=0∑nj=0(i+ji)=(2n+2n+1)−1
การใช้สูตรของสเตอร์ลิงอีกครั้งเราได้รับ
เป็นเวลาทำงานของอัลกอริธึมใหม่
(2n+2n+1)−1=4n+11n+1−−−−−√(1+O(1/n))−1=O(4nn−−√)