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

נושא: עזרה דחופה בקוד :(

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 26 March 2009 בשעה 19:11 | IP רשוּם
ציטוט שירה

האם למישהו יש במקרה את הקוד לשיטת hill climbing בשפת c,c++ או java???

אשמח לעזרה אם כן...

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

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 29 March 2009 בשעה 20:03 | IP רשוּם
ציטוט ניר

לי אין, מצטער. חיפשת במקרה בגוגל?

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

הצטרף / הצטרפה: 09 April 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 501
נשלח בתאריך: 30 March 2009 בשעה 18:57 | IP רשוּם
ציטוט cp77fk4r

אני מניח שזה יעזור:

http://www.java2s.com/Code/Java/Collections-Data-Structure/Findconnectionsusinghillclimbing.htm



__________________
[Th3rE R mAnY wAyZ 2 r3aD oN3 EmPty p4gE]
חזרה לתחילת העמוד הצג את כרטיס החבר של cp77fk4r חפש הודעות אחרות של cp77fk4r בקר בדף הבית של cp77fk4r
 
אהרון
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 March 2009 בשעה 22:35 | IP רשוּם
ציטוט אהרון

שלום לך,

שיטת hillclimbing היא דרך למציאת פתרון אומפטימלי ע"י קירוב איטרטיבי / רקורסיבי.

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

בשיטה הרקורסיבית לעיתים במקום להגריל מצב ראשוני חדש, חוזרים עד לנקודת התפצלות וממשיכים משם.
בשיטה האיטרטיבית לעיתים משתמשים בפונקציה המרחיקה מהפתרון האופטמלי לשם "ירידה במדרון", לאחר מכן משתמשים שוב בפונקצית הקירוב לשם "טיפוס בגבעה".

לשאלתך, אלגוריתם hill climbing משתנה בהתאם לבעיה כיוון שפונקציה הקירוב, ופונקצית יצירת מצב חדש תלוים ישירות בה. לכן עליך לספק מידע אודות הבעיה אותה את מנסה לפתור בכדי שניתן יהיה להתאים אותו בעבורה.

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 31 March 2009 בשעה 16:36 | IP רשוּם
ציטוט שירה

השאלה העיקרית היא לגבי שלב 2, איך מחליטים באיזה כיוון ל"עלות" בפונקציה, ואיך לדעת מתי לעצור?

הבעיה שאני צריכה לספק לה קוד, היא פונקציה מגובה 3, לא יותר.

תודה....

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 04 April 2009 בשעה 03:33 | IP רשוּם
ציטוט אהרון

שבת שלום,

כל פונקצית שיפור תחזיר מצב חדש טוב יותר מהפתרון הנוכחי, בתנאי שהמצב הנוכחי אינו נק' מקסימום (או מינימום תלוי לאן מנסים לקרב) כלשהיא. כיוון עליית הפונקציה נקבע לפי מהות הבעיה וראות המתכנן לנכון. לדוגמא בבעיית שמונה המלכות בוחרים מאוסף אפשרויות השיפור אחד (לרוב הראשון) וממשיכים משם (גישה הנקראת stochastic hill climbing). לעומת זאת בבעיית הסוכן הנוסע מנסים לשפר את המסלול הנתון ע"י בחירת השיפור ההטוב ביותר מבין מסלולי השיפור האפשריים (best first).

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

(Xn = Xn-1 + f'(Xn-1

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

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

  (Xn = Xn-1 + Cn * f'(Xn-1

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

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

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

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

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