Big O สัญกรณ์เป็นค่าเฉลี่ยหน่วยฟรีของการวัดความแปรปรวนของประสิทธิภาพจึงไม่อนุญาตให้มีค่าใช้จ่ายสัมพัทธ์ของการคำนวณแบบดั้งเดิม
โดยสรุป:
สัญกรณ์ Big O เป็นหน่วยการวัดอิสระแบบสัมพันธ์ (เมื่อเทียบกับการวัดแบบสัมบูรณ์) มันสามารถวัดความแปรปรวนของประสิทธิภาพเท่านั้นไม่ใช่ประสิทธิภาพที่สมบูรณ์ซึ่งค่าคงที่มีความสำคัญมาก ข้อได้เปรียบคือสิ่งนี้ทำให้การดำเนินการส่วนใหญ่เป็นอิสระโดยให้การวิเคราะห์ที่ง่ายขึ้นซึ่งสามารถละเว้นต้นทุนสัมพัทธ์ของการดำเนินงานเบื้องต้นได้ตราบใดที่ต้นทุนเหล่านี้มีขอบเขตคงที่บนและล่างที่เป็นบวก แต่ผลที่ตามมาก็คือว่าปัจจัยคงมีความหมาย ถึงกระนั้นแม้จะมีจุดประสงค์ก็ตามการวิเคราะห์ความซับซ้อนเชิงซีมิคสามารถตั้งคำถามได้ในพื้นที่อื่นและต้องได้รับการพิจารณาด้วยความระมัดระวัง ตัวอย่างเช่นขนาดอินพุตดิบอาจไม่ใช่พารามิเตอร์ที่เหมาะสมที่ต้องพิจารณา
ข้อสังเกตแรกคือว่าคำถามของคุณไม่ได้ระบุไว้อย่างถูกต้อง เมื่อคุณละเลยค่าคงที่ในมี "การเปลี่ยนแปลงสามเท่า" แต่ทั้งคู่แตกต่างกันในอัตราเดียวกันและคุณไม่สามารถยืนยันได้ว่า "[หนึ่ง] สิ่งต่าง ๆ เปลี่ยนแปลงเร็วกว่า 3 เท่า"3 n33n
เหตุผลที่ดีที่จะเพิกเฉยต่อค่าคงที่ในเครื่องหมายของรถม้าสี่ล้อก็คือเราไม่มีหน่วยที่เราสามารถพึ่งพาได้ เมื่อมีคนระบุว่า A อยู่ห่างจากคุณเป็นสองเท่าเช่นเดียวกับ B สิ่งนี้จะมีความหมายอย่างเป็นอิสระจากหน่วยใด ๆ เราสามารถตกลงกันได้แม้ว่าคุณจะวัดระยะทางเป็นนิ้วในขณะที่ฉันทำมันในปีแสง แต่การวัดระยะทางแบบสัมบูรณ์จำเป็นต้องระบุหน่วยและสูตรการคำนวณขึ้นอยู่กับหน่วยที่เลือก
เวลาที่เกิดขึ้นจริงโดยอัลกอริทึมขึ้นอยู่กับเวลาดำเนินการของการดำเนินงานเบื้องต้นซึ่งขึ้นอยู่กับเครื่องมาก คุณสามารถนับจำนวนการดำเนินงานเบื้องต้นได้ แต่ไม่มีเหตุผลที่จะเชื่อว่าพวกเขาทั้งหมดใช้เวลาเดียวกันและเป็นไปได้เสมอที่จะรวมการปฏิบัติการหลาย ๆ อย่างเข้าด้วยกันเป็นหนึ่งเดียวหรือแยกย่อยการดำเนินงานออกเป็นเล็ก ๆ ของการดำเนินการไม่ได้มีความหมายจริงๆเว้นแต่คุณจะเห็นด้วยกับเครื่องเสมือนอ้างอิง ความอิสระในการอ้างอิงเป็นข้อได้เปรียบ
มุมมองอีกข้อได้เปรียบของวิธีการคือสิ่งที่คุณใส่ใจในการวิเคราะห์คือการนับจำนวนของการดำเนินงานระดับประถมศึกษาตราบใดที่ต้นทุนของพวกเขามีขอบเขตบนและขอบเขตล่างเป็นบวก คุณไม่ต้องกังวลกับค่าใช้จ่ายส่วนตัว
อย่างไรก็ตามราคาที่จ่ายสำหรับข้อดีนั้นคือการประเมินต้นทุนการคำนวณจะได้รับจากหน่วยที่ไม่ได้ระบุและเวลาในการคำนวณเช่นอาจเป็นนาโนวินาทีหรือพันปี - เราไม่แม้แต่จะรู้ ในคำอื่น ๆปัจจัยคงที่ไม่มีความหมายเนื่องจากการเปลี่ยนแปลงหน่วยแยกออกจากการเปลี่ยนแปลงปัจจัยคงที่และไม่มีการใช้หน่วยอ้างอิง
ดังที่Patrick87 กล่าวไว้นี่เพียงพอที่จะเข้าใจว่าอัลกอริธึมปรับขนาดได้อย่างไรเมื่อเทียบกับขนาดอินพุต แต่จะไม่ให้การวัดประสิทธิภาพที่แน่นอนโดยไม่ต้องพึ่งพาหน่วยอ้างอิง การทำเครื่องนามธรรมอ้างอิงทั่วไปสามารถทำได้เมื่อมีใครต้องการเปรียบเทียบประสิทธิภาพของอัลกอริธึมที่แตกต่างกัน แต่ก็ยากที่จะตรวจสอบให้แน่ใจว่าการเปรียบเทียบนั้นไม่ได้ลำเอียงโดยรายละเอียดการรับรู้ ในความซับซ้อนเชิงเชิงความเสี่ยงนี้จะหลีกเลี่ยงเพราะคุณเปรียบเทียบอัลกอริทึมกับตัวเอง
อย่างไรก็ตามมีเพียงโปรแกรมเมอร์ที่ไร้เดียงสาเท่านั้นที่ต้องพึ่งพาความซับซ้อนแบบซีมโทติคเพื่อเลือกอัลกอริทึม มีเกณฑ์อื่น ๆ อีกมากมายรวมถึงค่าคงที่ที่บอกเล่าและค่าใช้จ่ายจริงของการดำเนินงานเบื้องต้น ยิ่งกว่านั้นความซับซ้อนของกรณีที่เลวร้ายที่สุดอาจเป็นตัวบ่งชี้ที่แย่ได้เนื่องจากแหล่งที่มาของความซับซ้อนของกรณีที่เลวร้ายที่สุดอาจเกิดขึ้นได้ไม่บ่อยนัก ตัวอย่างเช่นparsersทั่วไปสำหรับ Tree Adjoining Grammarsมีความซับซ้อนทางทฤษฎีและค่อนข้างใช้งานได้จริงในทางปฏิบัติ กรณีที่เลวร้ายที่สุดที่ฉันรู้คือการ
อนุมานชนิดโพลีมอร์ฟิค Damas-Hindley-MilnerO(n6)อัลกอริธึมที่ใช้สำหรับ ML ซึ่งมีความซับซ้อนของตัวพิมพ์ใหญ่และเลวร้ายที่สุด แต่ดูเหมือนจะไม่รบกวนผู้ใช้ ML หรือป้องกันการเขียนโปรแกรมที่มีขนาดใหญ่มากใน ML มีมากกว่าค่าคงที่ที่สำคัญ ที่จริงแล้วการวิเคราะห์เชิงความสัมพันธ์นั้นเกี่ยวข้องกับการวัดค่าใช้จ่ายในการคำนวณกับการวัดความซับซ้อนของอินพุต แต่ขนาดดิบอาจไม่ถูกต้อง
ความซับซ้อนเป็นเหมือน decidability มันอาจจะไม่ดีในทางทฤษฎี แต่นั่นอาจไม่เกี่ยวข้องกับพื้นที่ข้อมูลส่วนใหญ่ ... บางครั้ง การวิเคราะห์ความซับซ้อนเชิงซีมโทติคเป็นเครื่องมือที่ดีและออกแบบมาอย่างดีโดยมีข้อดีและข้อ จำกัด เช่นเดียวกับเครื่องมือทั้งหมด มีหรือไม่มีการอธิบายค่าคงที่ซึ่งอาจไม่มีความหมายจำเป็นต้องใช้วิจารณญาณ