ความซับซ้อนของ Big-Oh time สามารถมีตัวแปรมากกว่าหนึ่งตัวได้หรือไม่?


11

ให้เราพูดเช่นฉันกำลังประมวลผลสตริงที่ต้องมีการวิเคราะห์สองสาย ฉันไม่ได้รับข้อมูลเกี่ยวกับความยาวของพวกเขาดังนั้นพวกเขาจึงมาจากสองครอบครัวที่แตกต่างกัน มันจะเป็นที่ยอมรับหรือไม่ที่จะเรียกความซับซ้อนของอัลกอริทึมหรือ (ขึ้นอยู่กับว่าเราใช้ความไร้เดียงสาหรืออัลกอริธึมที่เหมาะสมที่สุด)O ( n + m )O(nm)O(n+m)

ในหลอดเลือดดำที่คล้ายกันให้เราเข้าใจว่าอัลกอริทึมที่เราเลือกต้องใช้สองขั้นตอนจริง ๆ แล้วขั้นตอนการติดตั้งบนสตริงแรกซึ่งช่วยให้เราสามารถประมวลผลสตริงอื่น ๆ จำนวนเท่าใดก็ได้โดยไม่ต้องเสียค่าใช้จ่ายเริ่มแรก จะถือว่าเหมาะสมหรือไม่ที่จะบอกว่ามีการก่อสร้างตามด้วยการคำนวณจำนวนใด ๆO ( m )O(n)O(m)

จะเหมาะสมไหมที่จะเรียกพวกเขาว่าเพราะการคำนวณทั้งสองเป็นแบบเชิงเส้น?O(n)


ดูความคิดเห็นเกี่ยวกับคำตอบนี้สำหรับพื้นหลังเล็ก ๆ - ฉันเคารพ @corsiKa อย่างกล้าหาญดังนั้นถามคำถามที่ถกเถียงกัน
OldCurmudgeon

@ OldCurmudgeon ฉันเห็น ฉันเกลียดที่จะลุยเข้าไปในหัวข้อความคิดเห็นนั้น Oldcurmudgeon คุณเถียงเรื่องสัญกรณ์ใหญ่โดยไม่เข้าใจสัญกรณ์ใหญ่หรือไม่? อึดอัดใจแน่นอน นอกจากนี้คุณและ corsiKa กำลังโต้เถียงกันในเรื่องของเวลาทำงานโดยไม่กำหนดพารามิเตอร์และ - สูตรสำหรับการสื่อสารผิดพลาด คำแนะนำ: การประชุมสามัญหนึ่งข้อเมื่อจัดการกับสตริงคือการยอมรับให้ใช้เพื่อใช้ความยาวของสตริงหนึ่งและสำหรับความยาวของสตริงอื่น - แต่เป็นการดีที่มันจะดีที่สุดที่จะทำให้เรื่องนี้ชัดเจนเพราะมิฉะนั้นอาจทำให้เกิดความสับสน ภาพประกอบที่นี่) m m nnmmn
DW

@DW เป็นไปได้ที่ OldCurmudgeon เรียนรู้คำจำกัดความที่แตกต่างกันในโรงเรียน ... เมื่อฉันชี้ให้เห็นในความคิดเห็นด้านล่างมันเป็นไปได้ที่จะหลีกเลี่ยงตัวแปรหลายตัว บางทีนี่ - หรืออะไรทำนองนั้น - เคยเป็นมาตรฐานหรือไม่?
Patrick87

2
ผมคิดว่านี่มีคำตอบที่เพียงพอที่นี่และที่นี่
Raphael

คำตอบ:


14

ใช่แน่นอน นี่เป็นเรื่องดีและยอมรับอย่างสมบูรณ์ เป็นเรื่องปกติและมาตรฐานเพื่อดูอัลกอริธึมที่เวลาทำงานขึ้นอยู่กับพารามิเตอร์สองตัว

ตัวอย่างเช่นคุณมักจะเห็นเวลาทำงานของการค้นหาความลึกแรกที่แสดงเป็นโดยที่คือจำนวนจุดยอดและคือจำนวนขอบในกราฟ นี้ถูกต้องสมบูรณ์ ความหมายนี้คือมีอยู่อย่างต่อเนื่องและหมายเลขดังกล่าวว่าเวลาทำงานของอัลกอริทึมที่มากที่สุดสำหรับทุกn>กล่าวอีกนัยหนึ่งถ้าเวลาทำงานที่แน่นอนคือเราบอกว่าถ้ามีเช่นนั้นและหมายถึงn m c n 0 , m 0 c ( n + m ) n > n 0 , m > m 0 f ( n , m ) f ( n , m ) = O ( n + m ) c , n 0 , m 0 n > n 0 mO(n+m)nmcn0,m0c(n+m)n>n0,m>m0f(n,m)f(n,m)=O(n+m)c,n0,m0n>n0 f ( n , m ) c ( n + m )m>m0f(n,m)c(n+m)m)

ใช่มันเป็นอย่างดีที่เหมาะสมและยอมรับที่จะบอกว่าขั้นตอนแรกจะใช้เวลาเวลาและขั้นตอนที่สองจะใช้เวลาเวลาO ( m )O(n)O(m)

สำคัญ: ตรวจสอบให้แน่ใจว่าคุณกำหนดว่าและคืออะไร คุณไม่สามารถพูดว่า "นี่เป็นอัลกอริทึมเวลา " โดยไม่ได้ระบุว่าคืออะไร ถ้าไม่ได้ระบุในแถลงการณ์ปัญหาคุณจะต้องระบุว่า ตัวอย่างเช่นดูอัลกอริธึมกราฟโดยที่เรามักจะนิยาม # ของจุดยอดและ # ของขอบm O ( n ) n n n = m =nmO(n)nnn=m=

เท่าที่ไม่ว่าคุณจะสามารถเรียกพวกเขาเวลาไม่แน่นอนไม่ได้ - ถ้าคุณรู้ว่าอย่างใด(n) แน่นอนถ้าคุณรู้ไหมว่าแล้วก็ต่อว่าดังนั้นอัลกอริทึมเวลายังเป็นอัลกอริทึมเวลา แต่ถ้าไม่มีการรับประกันว่าคุณจะไม่สามารถเรียกมันได้ว่าเป็นอัลกอริธึมm = O ( n ) m = O ( n ) m + n = O ( n ) O ( m + n ) O ( n ) m = O ( n ) O ( n ) O ( n )O(n)m=O(n)m=O(n)m+n=O(n)O(m+n)O(n)m=O(n)O(n)

นี่คือสิ่งพื้นฐาน คุณจะพบได้ทั่วตำราอัลกอริทึม


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

2
OO(V+E)(V,E)

2
n

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

1
@ Patrick87 Complexity theoryใช้โดยอาศัยคำจำกัดความของคลาสที่รู้จักกันดีจำนวนมากซึ่งส่วนใหญ่มีความยาวอินพุต (โดยมีข้อยกเว้นที่น่าทึ่ง) การวิเคราะห์อัลกอริธึมคือ - เมื่อทำอย่างจริงจัง - สนใจที่จะเรียนรู้บางสิ่งเกี่ยวกับการใช้ทรัพยากรจริง (เท่าที่โมเดลอนุญาต) ดังนั้นพารามิเตอร์อื่น ๆ จึงน่าสนใจยิ่งขึ้นเมื่อต้องการวาดภาพรวมทั้งหมด (แม่นยำยิ่งขึ้น)
Raphael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.