หากต้องการอธิบายให้ชัดเจนเกี่ยวกับการอภิปรายในความคิดเห็นมันเป็นสิ่งสำคัญที่คุณวัดการเติบโตเมื่อเทียบกับ
ดังที่ @Kaveh กล่าวไว้ไม่ได้เป็นเส้นตรงทั้งสองในเวลาเดียวกัน แต่เป็นเส้นตรงถ้าหนึ่งคงที่และอีกเติบโตO(mn)
ในทางกลับกันน่าจะถือว่าเป็นเส้นตรง โดยสังหรณ์ใจถ้าmเป็นสองเท่าหรือถ้าnเป็นสองเท่าหรือแม้ว่าทั้งคู่กับmและn เป็นสองเท่าm + nจะไม่สามารถมากกว่าสองเท่าได้ นี่ไม่ใช่ความจริงของm n ; ถ้าmและnทั้งคู่m nเพิ่มขึ้น 4 นี่คือเหตุผลว่าทำไมในบริบทจำนวนมากเวลาทำงานนี้จึงถูกพิจารณาว่าเป็นกำลังสอง ฉันยกตัวอย่างสิ่งนี้ด้วยการจับคู่สตริงในวรรคสองO(m+n)mnmnm+nmnmnmn
แต่โดยปกติเมื่อคุณใช้สัญลักษณ์ Big- คุณจะใช้มันในการอ้างอิงถึงบางสิ่งโดยเฉพาะ เนื่องจากเราเป็นนักทฤษฎีส่วนใหญ่โดยทั่วไปแล้วขนาดของอินพุตกับปัญหาO
ตัวอย่างเช่นลองเพิ่มเมทริกซ์ เพิ่มสองเมทริกซ์ใช้เวลาO ( มn )เวลา แต่องค์ประกอบของอินพุตของเราแต่ละครั้งจะถูกสัมผัสเพียงครั้งเดียวดังนั้นจึงมักจะเรียกว่าเชิงเส้น กล่าวอีกนัยหนึ่งอินพุตของเรามีขนาดO ( m n )ดังนั้นเวลาทำงานของO ( m n )จึงเป็นเชิงเส้นตรงตามขนาดของอินพุตm×nO(mn)O(mn)O(mn)
ตอนนี้เรามาดูการจับคู่สตริง - คือเราจะได้รับสตริงของขนาดและสตริงที่มีขนาดnและเราต้องการที่จะดูว่ามีการเกิดขึ้นของสตริงที่มีขนาดเล็กกว่าในสตริงที่ใหญ่กว่า เราสามารถตรวจสอบได้อย่างไร้เดียงสาในเวลาO ( m n ) ; โดยทั่วไปจะได้รับการพิจารณาเป็นกำลังสอง ทำไม? หากเมตรและnสามารถเป็นอะไรก็ได้ชุดม. = n จากนั้นเวลาในการทำงานของเราคือO ( ม. 2 )และการป้อนข้อมูลของเรามีขนาด2เมตรmnO(mn)mnm=nO(m2)2m
ในทางกลับกันถ้าเราใช้ราบินคาร์พ-ขั้นตอนวิธีการที่เราได้รับ (โดยเฉลี่ย) เวลา อินพุตของเราประกอบด้วยทั้งสองสตริงดังนั้นอินพุตของเรามีขนาดO ( m + n )เช่นกัน ดังนั้นโดยทั่วไปจะเรียกว่าเชิงเส้นO(m+n)O(m+n)
เพื่อสรุป: โดยทั่วไปเรียกว่า linear สำหรับสิ่งต่าง ๆ เช่นการคูณเมทริกซ์เพราะมันเป็นเส้นตรงในขนาดของอินพุต แต่โดยทั่วไปจะเรียกว่ากำลังสองสำหรับสิ่งต่าง ๆ เช่นการจับคู่สตริงเนื่องจากอินพุตที่เล็กกว่า คำใดที่เหมาะสมขึ้นอยู่กับบริบทที่คุณใช้O(mn)