ความซับซ้อนของการหาค่าสัมประสิทธิ์ทวินามซึ่งเท่ากับจำนวน


19

สมมติว่าคุณได้รับตัวเลข (โดยใช้บิตในการเข้ารหัสไบนารี่)O ( บันทึกm )mO(logm)

คุณจะค้นหาได้เร็วแค่ไหน (หรือหาว่าไม่มีอยู่จริง)

n,kN,1<kn2:(nk)=m
?

ยกตัวอย่างเช่นการป้อนข้อมูลให้m=8436285หนึ่งการส่งออกเดือนพฤษภาคมn=27,k=10k


อัลกอริทึมไร้เดียงสาสำหรับปัญหาจะข้ามค่าที่เป็นไปได้ทั้งหมดสำหรับnและค้นหาค่าkที่ตรงกับคุณสมบัติ

สังเกตง่ายๆก็คือว่ามีไม่จำเป็นต้องตรวจสอบค่าของnมีขนาดเล็กกว่าlogmหรือขนาดใหญ่กว่าO(m)เมตร) อย่างไรก็ตาม (แม้ว่าเราจะสามารถตรวจสอบเฉพาะค่าO (1) k ที่O(1)เป็นไปได้ต่อค่าn ) ซึ่งจะสิ้นสุดลงในอัลกอริทึมที่ไม่มีประสิทธิภาพซึ่งเป็นเลขชี้กำลังในขนาดอินพุตkn

อีกวิธีหนึ่งที่จะใช้ประเมินค่าk ที่เป็นไปได้k(เพียงพอที่จะตรวจสอบ{2,3,,2logm} ) และสำหรับการตรวจสอบค่าn ที่เป็นไปได้แต่ละnรายการ จากนั้นเราสามารถใช้:

(nk)k<(nk)<nkk!

ดังนั้นสำหรับk ที่กำหนดkเราจะต้องตรวจสอบค่าnในช่วง[mk!k,mkk] , ทำเช่นนั้นโดยใช้การค้นหาแบบไบนารี่ (เมื่อkคงที่, (nk)จะเพิ่มขึ้นแบบ monotonically ในn ), ทำให้อัลกอริทึมพหุนามทำงานในO(log2m)2m)

นี่ยังดูเหมือนไม่มีประสิทธิภาพสำหรับฉันและฉันเดาว่าจะสามารถแก้ไขได้ในเวลาเชิงเส้น (ในขนาดอินพุต)


4
คุณลองทำอะไรไปแล้ว? คำแนะนำ: สมมติว่าได้รับnเช่นกัน คุณสามารถแก้ปัญหานี้ได้ไหม? ช่วงของค่าที่เป็นไปได้สำหรับnคือเท่าใด หรือสมมติว่าได้รับkคุณสามารถแก้มันในกรณีนั้นได้ไหม? ช่วงของค่าที่เป็นไปได้สำหรับkคือเท่าใด
DW

คำตอบ:


1

มันไม่ได้เป็นความจริงที่ว่า(nk)k<(nk)k} ยกตัวอย่างเช่น(92)=36<49=(92)2 2

ฉันยังไม่พบวิธีแก้ปัญหาอย่างละเอียดโดยใช้คุณสมบัติเลขคณิตของสัมประสิทธิ์ทวินามอย่างไรก็ตามฉันสามารถแนะนำวิธีแก้ปัญหาที่มีประโยชน์หาก :-)

คุณสามารถสำหรับแต่ละ , แก้ปัญหาสำหรับโดยการคาดเดาครั้งแรก (พูด ) และใช้วิธีการวิเคราะห์เช่น Newton-Raphson คุณต้องการที่จะแก้0 อนุพันธ์ของทางด้านซ้ายมือที่เกี่ยวกับคือโดยที่เป็นฟังก์ชัน digamma ซึ่งง่ายต่อการคำนวณ .knk!mk(nk)m=0n(ψ(n+1)ψ(nk+1))(nk)ψ

ความซับซ้อนของการค้นหานิวตัน - ราฟสันนั้นขึ้นอยู่กับความซับซ้อนของการคำนวณฟังก์ชั่นและอนุพันธ์ของมันและจำนวนหลักที่จำเป็นสำหรับการแก้ปัญหา (ในกรณีของเราเราต้องการจำนวนเต็มที่ใกล้เคียงที่สุด)

ดังนั้นโดยรวมสำหรับแต่ละการค้นหาควรเป็น (สมมติว่าคุณทำเสร็จแล้วการคำนวณสัมประสิทธิ์ทวินามใช้เวลาคงที่) ดังนั้นความซับซ้อนโดยรวมของอัลกอริธึมที่ใช้ขอบเขตสำหรับจะเท่ากับ(M))kO(1)kO(log(m))


2
ในขณะที่ฉันยอมรับขอบเขตถูกปิด (ดูการแก้ไขขอขอบคุณสำหรับสิ่งนั้น) คุณช่วยอธิบายได้ไหมว่าทำไมการค้นหาด้วยใช้ ? kO(1)
RB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.