נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: יעילות של תוכנה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
מופ
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 05 January 2007 בשעה 10:48 | IP רשוּם
ציטוט מופ

היי שלום..
בסמסטר א' עכשיו אני לומד פסקל...ובזמן האחרון התכנות צריך להתבסס קודם כל על יעילות..בכל מקרה כשמתכוונים ליעילות למה מתכוונים..למספר הבדיקות +מספר הפעולות? או רק למספר הפעולות?
ואיך אפשר לחשב את זה .אם אפשר בכלל? כלומר אני יודע שהכי יעיל זה  n log n אבל איך מחשבים את זה?

תודה
חזרה לתחילת העמוד הצג את כרטיס החבר של מופ חפש הודעות אחרות של מופ בקר בדף הבית של מופ
 
צחי@
משתמש חבר
משתמש חבר


הצטרף / הצטרפה: 02 January 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 05 January 2007 בשעה 11:06 | IP רשוּם
ציטוט צחי@

ההתייחסות היא למס' הפעולות שמבצעים, כאשר "פעולה" מוגדרת כסדרה סופית של פעולות בסיסיות. לדוגמא, באלגוריתם מיון, פעולת ההשוואה ופעולת ה-SWAP ביחד נספרות כפעולה אחת, בהינתן שהן מבוצעות ברצף.

אפשר לחשב יעילות על סמך ניתוח האלגוריתם/קוד, אבל לפעמים צריך לזכור שהאלגוריתם יותר יעיל או פחות יעיל בהינתן קלט מסויים, ואז אולי אפשר לדבר על יעילות במקרה הגרוע, שזה אומר- בהינתן כל קלט אפשרי לאלגוריתם, מס' הפעולות המקסימלי שעל האלגוריתם לבצע הוא היעילות במקרה הגרוע. בד"כ מדברים על יעילות תוך שימוש במושג O, כאשר מחפשים חסם מלעיל לזמן הריצה של האלגוריתם. אתה יכול לקרוא קצת על ההגדרה של O אבל לצרכים שלך כרגע אני מאמין שספירת הפעולות שמבוצעות (לפי ההגדרה שלי לעיל) היא מספיקה.
אם תיתן דוגמא לאלגוריתם / פסואדו קוד, אני אוכל לנסות לתת לך דוגמא לניתוח יעילותו.

בהצלחה


__________________
דלתות אדריכלים גגות פוליש
חזרה לתחילת העמוד הצג את כרטיס החבר של צחי@ חפש הודעות אחרות של צחי@ בקר בדף הבית של צחי@
 
מופ
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 05 January 2007 בשעה 14:01 | IP רשוּם
ציטוט מופ

לדוגמא התרגיל שבשאלה 2..איך אני מחשב את היעילות ?

תודה
http://www.sendspace.com/file/majrk8
חזרה לתחילת העמוד הצג את כרטיס החבר של מופ חפש הודעות אחרות של מופ בקר בדף הבית של מופ
 
צחי@
משתמש חבר
משתמש חבר


הצטרף / הצטרפה: 02 January 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 05 January 2007 בשעה 14:19 | IP רשוּם
ציטוט צחי@

עבור כל זוג איברים במערך מבוצעות 2 פעולות:
1. בדיקת ערך מוחלט של ההפרש
2. עדכון min במידת הצורך.

2 הפעולות הללו שקולות לפעולה אחת לצרכי יעילות כי הן סופיות, מופיעות ברצף ואינן תלויות ב-n.

עכשיו צריך לראות כמה פעמים הן מבוצעות:
כמו שכבר ציינתי בהתחלה, הפעולות מבוצעות פעם אחת לכל זוג איברים, כלומר כמספר הזוגות השונים במערך. יש n*(n-1)/2 זוגות שונים במערך (n מעל 2 בקומבינטוריקה).
מבחינת סדר גודל (עד כדי כפל או חיבור של קבוע) זה שקול ל-n^2.



__________________
דלתות אדריכלים גגות פוליש
חזרה לתחילת העמוד הצג את כרטיס החבר של צחי@ חפש הודעות אחרות של צחי@ בקר בדף הבית של צחי@
 
מופ
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 05 January 2007 בשעה 19:18 | IP רשוּם
ציטוט מופ

רגע רגע ...עם נתוך שהמערך הוא בגודל 1000 סך הכל ..ועל כל שתי מספרים מבוצעות 2 פעולות...אז יוצא 1000 פעולות סך הכל לא?
איך אני מגיע ל N^2 אני פשוט לא מצליח להבין ://
מצטער
חזרה לתחילת העמוד הצג את כרטיס החבר של מופ חפש הודעות אחרות של מופ בקר בדף הבית של מופ
 
צחי@
משתמש חבר
משתמש חבר


הצטרף / הצטרפה: 02 January 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 05 January 2007 בשעה 20:39 | IP רשוּם
ציטוט צחי@

הפעולות לא מתבצעות על כל 2 מספרים (500 מתוך 1000)
אלא על כל הזוגות השונים, כלומר 2/(1000*999) זוגות שונים.
אולי הדוגמה הבאה תמחיש את זה:
נתון מערך A בגודל 4,
קוד:

A = {1,2,3,4}

כמה זוגות שונים של איברים יש ב-A ?
קוד:

(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)


ישנם 6 זוגות שונים.

כמו כן, ציינת שמבוצעות 2 פעולות, אבל 2 הפעולות הללו שקולות לפעולה אחת כי הן פעולות שלוקח זמן קבוע לבצע את שתיהן והן מבוצעות ברצף.

באופן כללי בשאלה יש לולאה חיצונית שמתבצעת n פעמים ובתוכה לולאה פנימית שמתבצעת במקרה הגרוע n פעמים. זה אמור לתת מושג על סדר גודל, שהוא לפחות חסום מלמעלה על ידי n^2 פעולות. במקרה הזה, אפשר להוכיח שגם חסום מלמטה (ראה בהמשך).
אם יש n מספרים אז יש סדר גודל של n^2 זוגות שונים.

נניח ש-f(n) היא פונקציה שנותנת את מספר הזוגות השונים בתלות ב-n.
אם נבחן את ההתנהגות של הפונקציה הזאת אזי, קצב הגדילה שלה שקול לקצב של n^2, עד כדי כפל בקבוע. אפשר לבחון זאת על ידי חסימת f(n) מלמטה ומלמעלה על ידי הפונקציה c*n^2 כאשר c קבוע כלשהו:
קוד:

מצד אחד:
f(n) = n*(n-1)/2 = 1/2 * (n^2 - n) <= 1/2 * n^2 <= n^2
מצד שני:
f(n) = n*(n-1)/2 = 1/2 * (n^2 - n^2/n) = 1/2 * (1 - 1/n) * n^2 >=
     >= 1/2 * (1-0) * n^2 = 1/2 * n^2


במונחים של סדר גודל, ניתן לומר ש-f(n) היא ת'תה (אות יוונית) של n^2.
יכול להיות שזה יותר מדי בשביל השלב הנוכחי שלך, אבל אני לא חושב שאפשר לתאר את זה יותר בפשטות כדי באמת להבין את המושג של סדר גודל.
כדי לך על כל מקרה לקרוא קצת על O, ת'תה ואומגה -  הסימונים שמתארים סדרי גודל.


__________________
דלתות אדריכלים גגות פוליש
חזרה לתחילת העמוד הצג את כרטיס החבר של צחי@ חפש הודעות אחרות של צחי@ בקר בדף הבית של צחי@
 
yiag
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 26 May 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 103
נשלח בתאריך: 06 January 2007 בשעה 21:35 | IP רשוּם
ציטוט yiag

מופ כתב:
היי שלום..
ואיך אפשר לחשב את זה .אם אפשר בכלל? כלומר אני יודע שהכי יעיל זה  n log n אבל איך מחשבים את זה?

תודה

הכי יעיל זה log n לא n log n

חזרה לתחילת העמוד הצג את כרטיס החבר של yiag חפש הודעות אחרות של yiag
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה