ถ้าฉันเข้าใจคำจำกัดความของคุณสิ่งนี้สามารถทำได้ในเวลาเชิงเส้นด้วยพื้นที่คงที่ เห็นได้ชัดว่านี่คือขอบเขตที่ต่ำที่สุดเนื่องจากเราต้องอ่านอินพุตทั้งหมดอย่างน้อย
คำตอบที่ให้ในคำถามนี้ตอบสนอง
เป็นไปไม่ได้ที่จะเรียกใช้งานโดยใช้เวลาหรือพื้นที่น้อยลงและการเพิ่มเวลาหรือพื้นที่เพิ่มเติมนั้นไร้ประโยชน์ดังนั้นจึงไม่มีการแลกเปลี่ยนเวลาว่างที่นี่ (สังเกตว่าดังนั้นการแลกเปลี่ยนที่คุณสังเกตเห็นจะไม่ถือ asymptotically ไม่ว่าในกรณีใด ๆ )n=O(n/k)
ในแง่ของคำถามทั่วไปของคุณฉันไม่รู้ทฤษฎีบทที่ดีใด ๆ ซึ่งจะช่วยคุณพิสูจน์การแลกเปลี่ยนเวลาว่าง ดูเหมือนคำถามนี้จะระบุว่าไม่มีคำตอบง่ายๆ (รู้) โดยทั่วไป:
สมมติว่าภาษาบางภาษาสามารถถอดรหัสได้ในเวลา (ใช้พื้นที่จำนวนหนึ่ง) และพื้นที่s (ใช้เวลาสักครู่) เราสามารถหาf , gซึ่งLสามารถถอดรหัสได้โดยMซึ่งทำงานในเวลาf ( t , s )และพื้นที่g ( t , s ) ?tsf,gLMf(t,s)g(t,s)
ไม่เป็นที่รู้จักและคำตอบที่ดีจะแก้ปัญหาเปิดมากมาย (โดยเฉพาะอย่างยิ่งเกี่ยวกับเซาท์แคโรไลนา) ซึ่งหมายความว่าไม่มีวิธีแก้ปัญหาที่ง่าย
แก้ไข: ตกลงด้วยการทำซ้ำ (แต่ฉันยังคงสมมติว่าด้วยการป้อนขนาดจำนวนที่เป็นไปได้สูงสุดคือn + 1 )nn+1
สังเกตว่าอัลกอริทึมของเราจะต้องสามารถแยกความแตกต่างระหว่างคำตอบที่เป็นไปได้อย่างน้อยสมมติว่าในแต่ละผ่านข้อมูลที่เราจะได้รับมากที่สุดkชิ้นส่วนของข้อมูล จากนั้นเราจะต้องผ่านn / kเพื่อแยกคำตอบทั้งหมด สมมติว่าk = n / sจากนั้นเราก็วิ่งในnnkn/kk=n/sเวลา ดังนั้นฉันคิดว่านี่พิสูจน์สิ่งที่คุณต้องการnn/sn=sn
ความยากลำบากในการแสดงให้เห็นว่าในแต่ละครั้งที่เราได้รับเพียงบิต หากคุณคิดว่าการดำเนินการทางกฎหมายเพียงอย่างเดียวของเราคือ = แสดงว่าเราดี อย่างไรก็ตามหากคุณอนุญาตการดำเนินการที่ซับซ้อนมากขึ้นคุณจะสามารถรับข้อมูลเพิ่มเติมได้k