สำหรับการวัดความซับซ้อนของอัลกอริธึมมันซับซ้อนกับเวลาหรือความซับซ้อนในการคำนวณหรือไม่ ความแตกต่างระหว่างพวกเขาคืออะไร?
ฉันใช้ในการคำนวณจำนวนสูงสุด (แย่ที่สุด) ของการดำเนินการขั้นพื้นฐาน (คิดต้นทุนมากที่สุด) ในอัลกอริทึม
สำหรับการวัดความซับซ้อนของอัลกอริธึมมันซับซ้อนกับเวลาหรือความซับซ้อนในการคำนวณหรือไม่ ความแตกต่างระหว่างพวกเขาคืออะไร?
ฉันใช้ในการคำนวณจำนวนสูงสุด (แย่ที่สุด) ของการดำเนินการขั้นพื้นฐาน (คิดต้นทุนมากที่สุด) ในอัลกอริทึม
คำตอบ:
ความซับซ้อนในการคำนวณเป็นเพียงคำศัพท์ทั่วไปเนื่องจากเวลาไม่ใช่ทรัพยากรเพียงอย่างเดียวที่เราอาจต้องการพิจารณา สิ่งที่ชัดเจนที่สุดถัดไปคือพื้นที่ที่อัลกอริทึมใช้และด้วยเหตุนี้เราจึงสามารถพูดคุยเกี่ยวกับความซับซ้อนของอวกาศได้เช่นกันซึ่งเป็นส่วนหนึ่งของความซับซ้อนในการคำนวณ แน่นอนเราสามารถทำสิ่งนี้ได้ทุกมาตรการที่คุณสนใจแน่นอนว่ามาตรการบางอย่างมีประโยชน์มากกว่ามาตรการอื่น ๆ
ดังนั้นการนับจำนวนขั้นตอนที่อัลกอริทึมใช้ในกรณีที่เลวร้ายที่สุดนั้นให้เวลาที่ซับซ้อนสำหรับปัญหาที่แก้ได้การนับจำนวนหน่วยความจำ / จำนวนเทปเซลล์ที่ใช้จะให้ความซับซ้อนของพื้นที่ที่ถูกผูกไว้เป็นต้น
โปรดจำไว้ว่าหากคุณต้องการเข้มงวดความซับซ้อนหมายถึงปัญหาไม่ใช่อัลกอริธึมดังนั้นปัญหาจึงมีขอบเขตความซับซ้อนอัลกอริทึมมีขอบเขตทรัพยากร (เวลาใช้งานการใช้พื้นที่ ... ) มันเป็นเพียงเรื่องของหลักการที่ชัดเจนทฤษฎีความซับซ้อนเกี่ยวข้องกับปัญหา ใช่ขั้นตอนวิธีการเป็นเครื่องมือสำคัญสำหรับการแก้ปัญหาการวิเคราะห์และซับซ้อนและอัลกอริธึมีการเชื่อมโยงอย่างใกล้ชิดกันอย่างเป็นทางการ แต่เราจะไม่พูดผสานเรียง (อัลกอริทึม) อยู่ในมันเป็นปัญหาS o R T ฉันn กรัมซึ่งอยู่ในP Merge-Sort ใช้ทรัพยากรบางอย่าง ( O ( n log n )ตัวอย่างขั้นตอน) ทรัพยากรที่ถูกผูกไว้และความถูกต้องของอัลกอริทึมบ่งบอกถึงความซับซ้อน (บน) ที่ถูกผูกไว้สำหรับปัญหา แต่พวกมันต่างกัน นอกจากนี้ยังT C 0สมบูรณ์ภายใต้C 0 -reductions ซับซ้อนนี้ถูกผูกไว้เท่านั้นจริงๆสามารถจะระบุไว้สำหรับปัญหา ( แต่จะมีผลกระทบต่อขั้นตอน)
ความซับซ้อนของวงจรมักใช้เป็นตัวชี้วัดของความซับซ้อนในการคำนวณตัวอย่างที่มีประโยชน์มีให้ใน/programming/9097987/calculation-of-cyclomatic-complexity
อาจมีเส้นทางที่แตกต่างกันมากมาย (อาจซ้อนกัน) ผ่านอัลกอริทึมที่ให้ความซับซ้อนสูง แต่ไม่มีลูปที่ให้เวลาซับซ้อนน้อย โปรแกรมที่มีลูปเดี่ยวจะมีความซับซ้อนของวัฏจักรต่ำ แต่อาจมีความซับซ้อนในเวลาสูง
ความซับซ้อนของวงจรมักใช้เป็นตัวชี้วัดของการบำรุงรักษาที่จำเป็นสำหรับรหัส การอภิปรายรายละเอียดเพิ่มเติมที่ระบุไว้ในhttp://docs.sonarqube.org/display/SONAR/Bad+Distribution+of+Complexity สิ่งนี้แตกต่างกับความซับซ้อนของเวลาที่ใช้ในการวัดเวลาของรหัสและอาจใช้เพื่อประเมินการรับรู้ของผู้ใช้ถึงประสิทธิภาพของระบบ