สำหรับทุกฟังก์ชั่นที่คำนวณได้มีปัญหาที่สามารถแก้ไขได้ดีที่สุดในเวลาหรือไม่?


19

สำหรับฟังก์ชั่นคำนวณทุกไม่มีอยู่ปัญหาที่สามารถแก้ไขได้ที่ดีที่สุดในเวลาหรือมีฟังก์ชันคำนวณดังกล่าวว่าปัญหาที่สามารถแก้ไขได้ในทุกสามารถ ยังสามารถแก้ไขได้ในเวลา ?Θ ( f ( n ) ) f O ( f ( n ) ) o ( f ( n ) )fΘ(f(n))fO(f(n))o(f(n))

คำถามนี้โผล่เข้ามาในหัวของฉันเมื่อวานนี้ ฉันกำลังคิดเกี่ยวกับเรื่องนี้มาสักพักแล้ว แต่ไม่สามารถเข้าใจได้ ฉันไม่รู้จริงๆว่าฉันจะเป็น google อย่างไรฉันจึงถามที่นี่ นี่คือสิ่งที่ฉันเกิดขึ้น:

ความคิดแรกของฉันคือคำตอบคือใช่: สำหรับทุกฟังก์ชันที่คำนวณได้ปัญหา "เอาต์พุตจุด" (หรือสร้างสตริงที่มีจุดหรืออะไรก็ตาม) ไม่สามารถแก้ไขได้อย่างชัดเจนในเวลา ดังนั้นเราจะต้องแสดงให้เห็นว่าจะสามารถแก้ไขได้ในเวลา ไม่มีปัญหาใช้รหัสเทียมต่อไปนี้:f ( n ) f ( n ) o ( f ( n ) ) O ( f ( n ) )ff(n)f(n)o(f(n))O(f(n))

x = f(n)
for i from 1 to x:
    output(".")

เห็นได้ชัดว่าอัลกอริทึมแก้ปัญหาที่ระบุ เห็นได้ชัดว่าเป็นไทเทอร์ดังนั้นจึงแก้ปัญหาได้ นั่นเป็นเรื่องง่ายใช่มั้ย ยกเว้นว่าไม่ใช่เพราะคุณต้องพิจารณาค่าใช้จ่ายของบรรทัดแรก รันไทม์ขั้นตอนวิธีการดังกล่าวข้างต้นเป็นเพียงในถ้ามีเวลาที่จำเป็นในการคำนวณอยู่ใน(n)) เห็นได้ชัดว่าไม่เป็นความจริงสำหรับการทำงานทั้งหมด1Θ ( f ( n ) ) f (Θ(f(n))Θ(f(n))O ( f ( n ) )f(n)O(f(n))

ดังนั้นวิธีนี้ไม่ได้รับฉันทุกที่ ฉันจะขอบคุณสำหรับทุกคนที่ชี้ให้ฉันในทิศทางที่ถูกต้องเพื่อคิดออกอย่างถูกต้อง


1พิจารณาเช่นฟังก์ชั่น{มิฉะนั้น}} เห็นได้ชัดว่าแต่มีขั้นตอนวิธีการไม่มีที่คำนวณในเวลา O ( p ( n ) ) = O ( 1 ) p O ( 1 )p(n)={1if n is prime2otherwiseO(p(n))=O(1)pO(1)


1
ฉันไม่คิดว่าข้อความทั้งสองของคุณในย่อหน้าแรกของคุณนั้นเป็นสิ่งจำเป็นของกันและกัน: จะเกิดอะไรขึ้นถ้าคุณมีเช่นว่ามีปัญหาบางอย่างที่สามารถแก้ไขได้ในไม่ใช่ในหรือในเวลาหรือไม่ O ( f ( n ) ) o ( f ( n ) ) Θ ( f ( n ) )fO(f(n))o(f(n))Θ(f(n))
Alex สิบ Brink

@Alex นั่นเป็นจุดที่ดีฉันไม่ได้พิจารณาเรื่องนั้น
sepp2k

คำตอบ:


13

โดยทฤษฎีบท Gap (ใช้สูตรจากที่นี่ค้นหา 'ช่องว่าง') สำหรับฟังก์ชันที่คำนวณไม่ได้ใด ๆมีบางส่วนเพิ่มขึ้น (ในความเป็นจริงขนาดใหญ่โดยพลการ) ฟังก์ชันf : NNเช่นนั้นD T ฉันM E ( F ( n ) ) = D T ฉันM E ( กรัม( F ( n ) )g:NNf:NNDTIME(f(n))=DTIME(g(f(n))

นี้จะตอบคำถามของคุณที่มีอยู่เช่น (หลายอย่างมากมายในความเป็นจริง): สำหรับทุกฟังก์ชันคำนวณกรัมดังกล่าวว่ากรัม= o ( n )มีอยู่ฟังก์ชั่นบางอย่างเพิ่มขึ้นดังกล่าวว่าทุกปัญหาแก้ไขได้ในO ( F ( n ) )เวลายังสามารถแก้ไขได้ในเวลาO ( g ( f ( n ) ) = o ( f ( n ) )เวลาโปรดทราบว่าffgg=o(n)fO(f(n))O(g(f(n))=o(f(n))f ไม่จำเป็นต้องใช้เวลาในการสร้าง - สำหรับกรณีที่สามารถกำหนดเวลาได้ดูคำตอบโดย @RanG

ในสูตรของ Wikipedia (ซึ่งกำหนดให้ ) จากนั้นg fกลายเป็นตัวอย่างของคุณและfต้องเป็นω ( n ) (ดังนั้นคุณจึงไปอีกทางหนึ่ง - 'แก้ปัญหาได้ในO ( g ( ( n ) )นอกจากนี้ยังมีการแก้ไขในO ( กรัม( n ) ) 'เป็นส่วนที่น่าสนใจ)g(x)xgffω(n)O(g(f(n))O(g(n))

บทความ Wikipedia ไม่ทราบว่ากำลังเพิ่มขึ้นและในความเป็นจริงอาจมีขนาดใหญ่ตามอำเภอใจ ( f ( n ) g ( n )เป็นต้น) บทความที่พิสูจน์ทฤษฎีบทช่องว่างไม่เอ่ยถึงและพิสูจน์นี้ (ดูที่นี่เช่น)ff(n)g(n)


สามารถเป็นo ( n ) ? มันไม่จำเป็นว่ากรัม( x ) x ? คำสั่งของคุณยังคงถูกต้อง แต่หลักฐานไปในทางอื่นใช่มั้ย go(n)g(x)x
Ran G.

@RanG อัปเดตเพื่อให้หลักฐานสำหรับสูตรทั้งสอง (ฉันใช้สูตรในกระดาษ) :)
อเล็กซ์สิบบริงค์

"สำหรับทุกฟังก์ชั่นที่คำนวณได้ g เช่น g = o (n) มีฟังก์ชั่น f บางอย่างที่ปัญหาทั้งหมดที่แก้ไขได้ใน O (f (n)) เวลายังสามารถแก้ไขได้ใน O (g (f (n)) = o ( เวลา f (n) เวลา "จะเกิดอะไรขึ้นถ้า fs ทั้งหมดที่มีอยู่สำหรับ g นั้นอยู่ใน O (1) แล้ว O (g (f (n)) ยังคงเป็น O (1) และไม่ใช่ o (1)
sepp2k

@ sepp2k: การจับที่ดีนี่เป็นปัญหาตามสูตร ฉันอัพเดตคำตอบแล้ว
Alex สิบ Brink

12

สำหรับฟังก์ชั่นคำนวณทุกไม่มีอยู่ปัญหาที่สามารถแก้ไขได้ที่ดีที่สุดในΘ ( F ( n ) )เวลาหรือมีฟังก์ชันคำนวณดังกล่าวว่าปัญหาที่สามารถแก้ไขได้ในทุกO ( F ( n ) )นอกจากนี้ยังสามารถ แก้ไขได้ในเวลาo ( f ( n ) ) ?fΘ(f(n))fO(f(n))o(f(n))

ถ้าเป็นฟังก์ชันที่สร้างขึ้นตามเวลาได้ทฤษฎีลำดับเวลาบอกว่ามีปัญหาที่ต้องใช้เวลาO ( f ( n ) )และไม่สามารถแก้ไขได้ด้วยเวลาo ( f ( n )fO(f(n)) ) โดยเฉพาะ DTIME(o(f(n))o(f(n)log(f(n)))

DTIME(o(f(n)log(f(n))))DTIME(f(n))

สิ่งนี้พิจารณาเฉพาะปัญหาการตัดสินใจและไม่คำนึงถึงเวลาที่ใช้ในการสร้างผลลัพธ์


ฉันคิดถูกหรือไม่ถ้าเราพิจารณาฟังก์ชั่นที่ไม่สามารถสร้างขึ้นได้คำตอบสำหรับคำถามของฉันคือ "ไม่" หรือเกี่ยวข้อง: หากฟังก์ชั่นไม่สามารถกำหนดเวลาได้และทำให้ไม่มีเครื่องทัวริงที่หยุดหลังจากขั้นตอนf ( n )นั่นหมายความว่ายังไม่มีเครื่องทัวริงที่หยุดหลังจากขั้นตอนΘ ( f ( n ) ) ? เพราะจากนั้นมันก็จะทำตามอย่างไม่สำคัญว่าคำตอบสำหรับคำถามของฉันคืออะไร ff(n)Θ(f(n))
sepp2k

มันขึ้นอยู่กับ. สมมติว่าไม่ใช่เวลาที่สร้างได้ แต่สามารถล้อมรอบด้วยฟังก์ชันอื่นgซึ่งเป็นเวลาที่สร้างขึ้นได้ f = Θ ( g )และยังคงมีปัญหาที่สามารถแก้ไขได้ด้วยเวลาO ( f )แต่ไม่น้อยไปกว่านั้น fgf=Θ(g)O(f)
Ran G.

และการใช้หลาย TM เทปคุณสามารถปรับปรุงผลลัพธ์จากเพื่อo(F(n)) o(f(n)lgf(n))o(f(n))
Kaveh

3

ฉันจะพยายามให้กรอบบางอย่างโดยหวังว่าจะได้รับความเข้าใจที่ลึกซึ้งยิ่งขึ้น

เมื่อคุณไปถึงสิ่งพื้นฐานนี้มีข้อผิดพลาดที่ไม่คาดคิดอยู่ทั่วไป ตัวอย่างเช่น: การ "แก้ปัญหา" คืออะไร บ่อยครั้งในวิทยาการคอมพิวเตอร์เราพิจารณาเฉพาะตัวแปร "การตัดสินใจ" ซึ่งเราได้รับอินพุตและต้องการเฉพาะเอาต์พุตจริงหรือเท็จเท่านั้น คุณกำลังมุ่งเน้นไปที่ปัญหา "ฟังก์ชั่น"

หากคุณพิจารณาสัญกรณ์ O (f (n)) ว่าพยายามจับภาพว่าจำเป็นต้องใช้ "งาน" มากแค่ไหนในการแก้ปัญหาการใช้การตัดสินใจแทนฟังก์ชั่น (ซึ่งจำเป็นต้องใช้เอาต์พุต) ดูเหมือนจะดีกว่า .

ฉันไม่คิดว่านี่จะตอบคำถามของคุณ แต่คุณอาจสนใจในสิ่งนี้: http://en.wikipedia.org/wiki/Time_hierarchy_theorem

นอกจากนี้ระวังเกี่ยวกับทฤษฎีบทการเร่งความเร็วด้วย

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