ใช่แน่นอน นี่เป็นเรื่องดีและยอมรับอย่างสมบูรณ์ เป็นเรื่องปกติและมาตรฐานเพื่อดูอัลกอริธึมที่เวลาทำงานขึ้นอยู่กับพารามิเตอร์สองตัว
ตัวอย่างเช่นคุณมักจะเห็นเวลาทำงานของการค้นหาความลึกแรกที่แสดงเป็นโดยที่คือจำนวนจุดยอดและคือจำนวนขอบในกราฟ นี้ถูกต้องสมบูรณ์ ความหมายนี้คือมีอยู่อย่างต่อเนื่องและหมายเลขดังกล่าวว่าเวลาทำงานของอัลกอริทึมที่มากที่สุดสำหรับทุก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)
นี่คือสิ่งพื้นฐาน คุณจะพบได้ทั่วตำราอัลกอริทึม