สิ่งที่คุณกำลังทำคือการใช้สัญลักษณ์ในทางที่ผิด
คนเดินถนนบางคนจะบอกว่าสิ่งที่คุณเขียนนั้นไร้สาระเนื่องจากหมายถึงชุดหนึ่งและคุณไม่สามารถดำเนินการทางคณิตศาสตร์กับพวกเขาในแบบที่คุณกำลังทำอยู่O(f)
แต่เป็นความคิดที่ดีที่จะเพิกเฉยต่อคนเดินถนนเหล่านั้นและคิดว่าย่อมาจากสมาชิกบางคนในกองถ่าย ดังนั้นเมื่อเราพูดฉ( n ) = กรัม( n ) + O ( n )สิ่งที่เราหมายถึงว่าจริงๆถ้าF ( n ) - กรัม( n ) ∈ O ( n ) (หมายเหตุ: คนเดินถนนบางคนอาจสั่นที่คำสั่งนี้เช่นกันโดยอ้างว่าf ( n )เป็นตัวเลขและfO(f)f(n)=g(n)+O(n)f(n)−g(n)∈O(n)f(n)f เป็นฟังก์ชั่น!)
สิ่งนี้ทำให้สะดวกในการเขียนนิพจน์เช่น
n≤∑k=1nk1/k≤n+O(n1/3)
สิ่งที่หมายถึงนี้ก็คือว่ามีบางดังกล่าวว่าf∈O(n1/3)
n≤∑k=1nk1/k≤n+f(n)
ในกรณีของคุณ
∑k=1n1k=∑k=1nO(1)=O(n)
คุณกำลังใช้งานในทางที่ผิดยิ่งขึ้นและคุณต้องระวัง
มีการตีความที่เป็นไปได้สองประการที่นี่: อ้างถึงฟังก์ชันของnหรือฟังก์ชันkหรือไม่?O(1)nk
ผมเชื่อว่าการตีความที่ถูกต้องคือการตีความว่ามันเป็นหน้าที่ของkk
หากคุณลองคิดว่ามันเป็นฟังก์ชั่นของคิดว่าไม่ถูกต้องมันอาจนำไปสู่การเข้าใจผิดที่อาจเกิดขึ้นเช่นการคิดว่าkคือO ( 1 )และพยายามเขียน∑ n k = 1 k = ∑ n k = 1 O ( 1 )nkO(1)∑nk=1k=∑nk=1O(1)
ถ้าคุณลองคิดว่ามันเป็นฟังก์ชันของแล้วมันเป็นความจริงที่ว่าถ้าf = O ( g ) (เมื่ออาร์กิวเมนต์ไปที่∞ ) และgไม่เคยเป็น0นั่นkf=O(g)∞g0
S(n)=∑k=1nf(k)=∑k=1nO(g(k))=O(∑k=1n|g(k)|)
โปรดทราบว่าอยู่ตรงกลางที่เราได้ใช้การละเมิดสะดวกของโน้ตหมายความว่าสำหรับฟังก์ชั่นบางชั่วโมง∈ O ( กรัม)รวมเป็นΣ n k = 1ชั่วโมง( k ) โปรดทราบว่าฟังก์ชั่นขั้นสุดท้ายภายในOหมายถึงการทำงานของn หลักฐานที่ไม่ยาก แต่คุณต้องให้ความสำคัญกับความจริงที่ว่าคุณจะจัดการกับ asymptotic ผูกพันบน (เช่นสำหรับอาร์กิวเมนต์ขนาดใหญ่พอ) แต่รวมเริ่มต้นที่เหมาะสมใน1O(g(k))h∈O(g)∑nk=1h(k)On1
ถ้าคุณลองคิดว่ามันเป็นฟังก์ชันของแล้วมันก็เป็นความจริงที่ว่าถ้าf = O ( g ) (เมื่ออาร์กิวเมนต์ไปที่∞ ) แล้วnf=O(g)∞
S(n)=∑k=1nf(k)=∑k=1nO(g(n))=O(ng(n))
ดังนั้นหลักฐานของคุณจึงถูกต้องทั้งในการตีความ