ความแตกต่างระหว่างความซับซ้อนของเวลาและความซับซ้อนของการคำนวณ


14

สำหรับการวัดความซับซ้อนของอัลกอริธึมมันซับซ้อนกับเวลาหรือความซับซ้อนในการคำนวณหรือไม่ ความแตกต่างระหว่างพวกเขาคืออะไร?

ฉันใช้ในการคำนวณจำนวนสูงสุด (แย่ที่สุด) ของการดำเนินการขั้นพื้นฐาน (คิดต้นทุนมากที่สุด) ในอัลกอริทึม


2
ไม่ใช่คำตอบสำหรับคำถามของคุณ แต่คุณสนใจสิ่งนี้คุณอาจสนใจcs.stackexchange.com/q/13669/755
DW

1
"ความซับซ้อนของอัลกอริธึม" เมื่อกล่าวถึง asymptotic runime คือการเรียกชื่อผิด (ใช้บ่อย) คุณต้องการพูดว่า "asymptotic runtime"
Raphael

คำตอบ:


9

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

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

โปรดจำไว้ว่าหากคุณต้องการเข้มงวดความซับซ้อนหมายถึงปัญหาไม่ใช่อัลกอริธึมดังนั้นปัญหาจึงมีขอบเขตความซับซ้อนอัลกอริทึมมีขอบเขตทรัพยากร (เวลาใช้งานการใช้พื้นที่ ... ) มันเป็นเพียงเรื่องของหลักการที่ชัดเจนทฤษฎีความซับซ้อนเกี่ยวข้องกับปัญหา ใช่ขั้นตอนวิธีการเป็นเครื่องมือสำคัญสำหรับการแก้ปัญหาการวิเคราะห์และซับซ้อนและอัลกอริธึมีการเชื่อมโยงอย่างใกล้ชิดกันอย่างเป็นทางการ แต่เราจะไม่พูดผสานเรียง (อัลกอริทึม) อยู่ในมันเป็นปัญหาS o R T ฉันn กรัมซึ่งอยู่ในP Merge-Sort ใช้ทรัพยากรบางอย่าง ( O ( n log n )PSโอRเสื้อผมnก.PO(nเข้าสู่ระบบn)ตัวอย่างขั้นตอน) ทรัพยากรที่ถูกผูกไว้และความถูกต้องของอัลกอริทึมบ่งบอกถึงความซับซ้อน (บน) ที่ถูกผูกไว้สำหรับปัญหา แต่พวกมันต่างกัน นอกจากนี้ยังT C 0สมบูรณ์ภายใต้C 0 -reductions ซับซ้อนนี้ถูกผูกไว้เท่านั้นจริงๆสามารถจะระบุไว้สำหรับปัญหา ( แต่จะมีผลกระทบต่อขั้นตอน)SโอRเสื้อผมnก.T0A0


@ shekharsuman จากปัญหาฉันหมายถึงแนวคิดที่เป็นทางการของปัญหาการคำนวณ (เช่น k-Vertex Cover) ไม่ใช่ความหมายทั่วไป ความซับซ้อนในการคำนวณคือการจำแนกปัญหาการคำนวณดังนั้นในแง่ที่เป็นทางการความซับซ้อนหมายถึงสิ่งที่เราสามารถพูดเกี่ยวกับปัญหาได้ ผลลัพธ์เกี่ยวกับอัลกอริธึมบอกเราถึงสิ่งที่เกี่ยวกับความซับซ้อนของปัญหา แต่ไม่ได้เกิดจากความซับซ้อนของตัวเอง
Luke Mathieson

1
@shekharsuman ย่อหน้าเปิดของหน้าวิกิพีเดียเป็นบทสรุปที่ดีงาม
Luke Mathieson

@ ลุคขอบคุณสิ่งนี้ทำให้ทุกอย่างชัดเจน อย่างไรก็ตามถ้าฉันสามารถใช้สำนวน"ชนิดที่ใช้มากที่สุดของความซับซ้อนในการประเมินอัลกอริทึมอย่างเป็นทางการ" (แม้ว่าฉันรู้ว่านี่ไม่แม่นยำ) มันจะเป็นเวลาอะไรกับการคำนวณ? สิ่งที่ฉันคิดว่าโดยทั่วไปสิ่งที่สำคัญที่สุดคือเวลาเนื่องจากทรัพยากรสามารถขยายได้ในบางแง่มุม!
ค่ามัธยฐาน Hilal

1
@MedianHilal เวลาแน่นอนที่สุดถือว่าเป็นมาตรการทั่วไปสำหรับความซับซ้อนของปัญหา พื้นที่ไม่ไกลเกินไป (อย่างน้อยก็ตามทฤษฎีที่ซับซ้อนและผู้คนกำลังจัดการกับชุดข้อมูลที่มีขนาดใหญ่มากน้อยกว่าแบบวันต่อวัน)
Luke Mathieson

-2

ความซับซ้อนของวงจรมักใช้เป็นตัวชี้วัดของความซับซ้อนในการคำนวณตัวอย่างที่มีประโยชน์มีให้ใน/programming/9097987/calculation-of-cyclomatic-complexity

อาจมีเส้นทางที่แตกต่างกันมากมาย (อาจซ้อนกัน) ผ่านอัลกอริทึมที่ให้ความซับซ้อนสูง แต่ไม่มีลูปที่ให้เวลาซับซ้อนน้อย โปรแกรมที่มีลูปเดี่ยวจะมีความซับซ้อนของวัฏจักรต่ำ แต่อาจมีความซับซ้อนในเวลาสูง

ความซับซ้อนของวงจรมักใช้เป็นตัวชี้วัดของการบำรุงรักษาที่จำเป็นสำหรับรหัส การอภิปรายรายละเอียดเพิ่มเติมที่ระบุไว้ในhttp://docs.sonarqube.org/display/SONAR/Bad+Distribution+of+Complexity สิ่งนี้แตกต่างกับความซับซ้อนของเวลาที่ใช้ในการวัดเวลาของรหัสและอาจใช้เพื่อประเมินการรับรู้ของผู้ใช้ถึงประสิทธิภาพของระบบ


คำถามนั้นเกี่ยวกับความซับซ้อนในการคำนวณไม่ใช่ความซับซ้อนตามวัฏจักร!
Am_I_Helpful

คุณอาจต้องการอ่าน OP - เขาถามเกี่ยวกับความซับซ้อนของอัลกอริทึม - ความซับซ้อนตามวัฏจักรทำให้การวัดแบบคงที่ของความซับซ้อนในการคำนวณขั้นตอนวิธี - ลองเพิ่มการตอบรับเชิงบวกในครั้งต่อไป
velvetytoast

2
ความซับซ้อนของวงจรไม่ได้วัดความซับซ้อนของการคำนวณ ความซับซ้อนในการคำนวณหมายถึงเวลาทำงานไม่ใช่ความซับซ้อนของโครงสร้างซอร์สโค้ด
DW

@DW ความซับซ้อนในการคำนวณที่แม่นยำยิ่งขึ้นหมายถึงทรัพยากรที่จำเป็นสำหรับการแก้ปัญหา
David Richerby

@ DavidRicherby ฉันไม่มีความเชี่ยวชาญในเรื่องนี้ดังนั้นโปรดแก้ไขหากผิด มาตรการความซับซ้อนคงที่เช่นขนาดโปรแกรมจะมีบทบาทในบางสถานการณ์ ฉันแก้ไขได้ไหมว่ามันเกี่ยวข้องกับความซับซ้อนของ Kolmogorov มากกว่า นั่นจะเป็นกรณีของความซับซ้อนตามวัฏจักรหรือไม่? ความซับซ้อนชนิดหนึ่งสำหรับการเขียนโปรแกรมหรือปัญหาและอีกวิธีหนึ่งสำหรับการแก้ไขหรือเรียกใช้ ... อาจเป็นการประมาณสถานการณ์โดยย่อ ฉันไม่แน่ใจว่าฉันจะเขียนคำถามที่เหมาะสมเกี่ยวกับเรื่องนี้
Babou
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.