3
ทำไมไม่ลองแสดงตัวเลขในอัลกอริธึมเชิงตัวเลข?
อัลกอริธึมเวลาแบบหลอกเทียมคืออัลกอริธึมที่มีเวลาทำงานพหุนามกับค่าอินพุต (ขนาด) แต่เวลาทำงานแบบเอ็กซ์โพเนนเชียลตามขนาดอินพุต (จำนวนบิต) ตัวอย่างเช่นการทดสอบว่าตัวเลขnnnเป็นจำนวนเฉพาะหรือไม่ต้องการวนซ้ำผ่านตัวเลขตั้งแต่ 2 ถึงn−1n−1n-1และตรวจสอบว่าnnn mod iiiเป็นศูนย์หรือไม่ หากตัวดัดแปลงใช้เวลา O (1) ความซับซ้อนของเวลาโดยรวมจะเป็น O (n) แต่ถ้าเราปล่อยให้xxxเป็นจำนวนบิตที่ต้องการในการเขียนอินพุตดังนั้นx=lognx=lognx = \log n (ไบนารี) ดังนั้นn=2xn=2xn = 2^xและเวลาการทำงานของปัญหาจะเป็น O ( 2x2x2^x ) ซึ่งเป็นเลขชี้กำลัง คำถามของฉันคือถ้าเราพิจารณาการเป็นตัวแทนของอินพุตnnn , ดังนั้นเสมอแล้วเวลาx=nx=nx=nหลอก - พหุนามจะเท่ากับความซับซ้อนของเวลาพหุนาม เหตุใดเราจึงไม่ทำเช่นนี้ ยิ่งไปกว่านั้นเนื่องจากมีอัลกอริธึมเวลาหลอกเทียมสำหรับเป้โดยใช้x=nx=nx=n , เป้จะเป็นพหุนามเป็นผลลัพธ์ P = NP