สำหรับฟังก์ชั่นคำนวณทุกไม่มีอยู่ปัญหาที่สามารถแก้ไขได้ที่ดีที่สุดในเวลาหรือมีฟังก์ชันคำนวณดังกล่าวว่าปัญหาที่สามารถแก้ไขได้ในทุกสามารถ ยังสามารถแก้ไขได้ในเวลา ?Θ ( f ( n ) ) f O ( f ( n ) ) o ( f ( n ) )
คำถามนี้โผล่เข้ามาในหัวของฉันเมื่อวานนี้ ฉันกำลังคิดเกี่ยวกับเรื่องนี้มาสักพักแล้ว แต่ไม่สามารถเข้าใจได้ ฉันไม่รู้จริงๆว่าฉันจะเป็น google อย่างไรฉันจึงถามที่นี่ นี่คือสิ่งที่ฉันเกิดขึ้น:
ความคิดแรกของฉันคือคำตอบคือใช่: สำหรับทุกฟังก์ชันที่คำนวณได้ปัญหา "เอาต์พุตจุด" (หรือสร้างสตริงที่มีจุดหรืออะไรก็ตาม) ไม่สามารถแก้ไขได้อย่างชัดเจนในเวลา ดังนั้นเราจะต้องแสดงให้เห็นว่าจะสามารถแก้ไขได้ในเวลา ไม่มีปัญหาใช้รหัสเทียมต่อไปนี้:f ( n ) f ( n ) o ( f ( n ) ) O ( f ( n ) )
x = f(n)
for i from 1 to x:
output(".")
เห็นได้ชัดว่าอัลกอริทึมแก้ปัญหาที่ระบุ เห็นได้ชัดว่าเป็นไทเทอร์ดังนั้นจึงแก้ปัญหาได้ นั่นเป็นเรื่องง่ายใช่มั้ย ยกเว้นว่าไม่ใช่เพราะคุณต้องพิจารณาค่าใช้จ่ายของบรรทัดแรก รันไทม์ขั้นตอนวิธีการดังกล่าวข้างต้นเป็นเพียงในถ้ามีเวลาที่จำเป็นในการคำนวณอยู่ใน(n)) เห็นได้ชัดว่าไม่เป็นความจริงสำหรับการทำงานทั้งหมด1Θ ( f ( n ) ) f (O ( f ( n ) )
ดังนั้นวิธีนี้ไม่ได้รับฉันทุกที่ ฉันจะขอบคุณสำหรับทุกคนที่ชี้ให้ฉันในทิศทางที่ถูกต้องเพื่อคิดออกอย่างถูกต้อง
1พิจารณาเช่นฟังก์ชั่น{มิฉะนั้น}} เห็นได้ชัดว่าแต่มีขั้นตอนวิธีการไม่มีที่คำนวณในเวลา O ( p ( n ) ) = O ( 1 ) p O ( 1 )