שאלת מבחן במבני נתונים - אוניברסיטת בר-אילן 2010 - סיבוכיות
קורס: מבני נתונים
אוניברסיטה: אוניברסיטת בר-אילן
שנה: 2010
סמסטר: ב
נושאים: סיבוכיות, סימון אסימפטוטי, Big-O
רמת קושי: קל-בינוני
מה ניתן להגיד על $\sum_{i=1}^{n} i \log i$? הסכום הזה הוא:
א( $\Theta(n^2 \log n)$
ב( $\Theta(n^2)$
ג( $\Theta(n \log^2 n)$
ד( $\Theta(n \log n \log \log n)$
ה( אף אחת מהתשובות א) עד ד) אינה נכונה.
רמז: ניתן לחסום את הסכום מלמעלה ומלמטה. עבור החסם התחתון, הסתכלו רק על המחצית השנייה של האיברים בסכום, מהאיבר $\lceil n/2 \rceil$ ועד $n$.
פתרון: כדי למצוא את החסם האסימפטוטי של הסכום $\sum_{i=1}^{n} i \log i$, נשתמש בשיטת החסימה (bounding). נמצא חסם עליון (Big-O) וחסם תחתון (Big-Omega) לסכום, ואם הם מאותו סדר גודל, נסיק שזהו גם החסם ההדוק (Theta).
**חסם עליון (O):**
כל איבר בסכום, $i \log i$, קטן או שווה לאיבר האחרון והגדול ביותר, $n \log n$. לכן, ניתן לחסום את הסכום על ידי:
$$ \sum_{i=1}^{n} i \log i \le \sum_{i=1}^{n} n \log n = n \cdot (n \log n) = n^2 \log n $$
מכאן, הסכום הוא $O(n^2 \log n)$.
**חסם תחתון ($\Omega$):**
כדי למצוא חסם תחתון, נתבונן רק במחצית השנייה של איברי הסכום, כלומר מהאיבר $\lceil n/2 \rceil$ עד האיבר $n$. כל איבר בחלק זה של הסכום גדול או שווה ל-$\frac{n}{2} \log(\frac{n}{2})$.
$$ \sum_{i=1}^{n} i \log i \ge \sum_{i=\lceil n/2 \rceil}^{n} i \log i $$
מספר האיברים בחלק זה הוא $n - \lceil n/2 \rceil + 1$, שהוא בקירוב $n/2$. נחסום כל איבר באיבר הקטן ביותר בחלק זה:
$$ \sum_{i=\lceil n/2 \rceil}^{n} i \log i \ge \sum_{i=\lceil n/2 \rceil}^{n} \frac{n}{2} \log\left(\frac{n}{2}\right) $$
$$ = (n - \lceil n/2 \rceil + 1) \cdot \frac{n}{2} \log\left(\frac{n}{2}\right) $$
מכיוון ש-$n - \lceil n/2 \rceil + 1 \ge n/2$, נקבל:
$$ \ge \frac{n}{2} \cdot \frac{n}{2} \log\left(\frac{n}{2}\right) = \frac{n^2}{4} (\log n - \log 2) $$
הביטוי $\frac{n^2}{4} (\log n - \log 2)$ הוא מסדר גודל של $n^2 \log n$. לכן, הסכום הוא $\Omega(n^2 \log n)$.
**מסקנה:**
הראינו שהסכום הוא גם $O(n^2 \log n)$ וגם $\Omega(n^2 \log n)$. לפי **הגדרת סימון $\Theta$**, אם $f(n) = O(g(n))$ וגם $f(n) = \Omega(g(n))$, אז $f(n) = \Theta(g(n))$.
לכן, $\sum_{i=1}^{n} i \log i = \Theta(n^2 \log n)$.
התשובה הנכונה היא א. $\blacksquare$
מה ניתן להגיד על ∑i=1nilogi? הסכום הזה הוא:
א( Θ(n2logn)
ב( Θ(n2)
ג( Θ(nlog2n)
ד( Θ(nlognloglogn)
ה( אף אחת מהתשובות א) עד ד) אינה נכונה.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א2010סמסטר ב
★★★★★
סיבוכיותסימון אסימפטוטיBig-O
ניתן לחסום את הסכום מלמעלה ומלמטה. עבור החסם התחתון, הסתכלו רק על המחצית השנייה של האיברים בסכום, מהאיבר ⌈n/2⌉ ועד n.
כדי למצוא את החסם האסימפטוטי של הסכום ∑i=1nilogi, נשתמש בשיטת החסימה (bounding). נמצא חסם עליון (Big-O) וחסם תחתון (Big-Omega) לסכום, ואם הם מאותו סדר גודל, נסיק שזהו גם החסם ההדוק (Theta).
חסם עליון (O): כל איבר בסכום, ilogi, קטן או שווה לאיבר האחרון והגדול ביותר, nlogn. לכן, ניתן לחסום את הסכום על ידי: i=1∑nilogi≤i=1∑nnlogn=n⋅(nlogn)=n2logn מכאן, הסכום הוא O(n2logn).
**חסם תחתון (Ω):** כדי למצוא חסם תחתון, נתבונן רק במחצית השנייה של איברי הסכום, כלומר מהאיבר ⌈n/2⌉ עד האיבר n. כל איבר בחלק זה של הסכום גדול או שווה ל-2nlog(2n). i=1∑nilogi≥i=⌈n/2⌉∑nilogi מספר האיברים בחלק זה הוא n−⌈n/2⌉+1, שהוא בקירוב n/2. נחסום כל איבר באיבר הקטן ביותר בחלק זה: i=⌈n/2⌉∑nilogi≥i=⌈n/2⌉∑n2nlog(2n) =(n−⌈n/2⌉+1)⋅2nlog(2n) מכיוון ש-n−⌈n/2⌉+1≥n/2, נקבל: ≥2n⋅2nlog(2n)=4n2(logn−log2) הביטוי 4n2(logn−log2) הוא מסדר גודל של n2logn. לכן, הסכום הוא Ω(n2logn).
מסקנה: הראינו שהסכום הוא גם O(n2logn) וגם Ω(n2logn). לפי **הגדרת סימון Θ**, אם f(n)=O(g(n)) וגם f(n)=Ω(g(n)), אז f(n)=Θ(g(n)). לכן, ∑i=1nilogi=Θ(n2logn).