ABA


"שאלה C רקורסיה| הסוכן הנוסע- בעיית בדיקה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10707 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10707
Michoo 
חבר מתאריך 13.4.03
1760 הודעות
   00:41   21.05.12   
אל הפורום  
  שאלה C רקורסיה| הסוכן הנוסע- בעיית בדיקה  
 
קיבלתי עבודה לעשות ב C, הסוכן הנוסע. אך נתקלתי בבעיה שאני בערך יומים יושב ולא יודע איך לפתור.

*הערה בכל התרגיל אסור להשתמש בלולאות -- אך ורק בפונקציות ורקורסיות, כמו כן מותר להתשתמש רק בספריית STDIO.H

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

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

הבעיה שנתקלתי היא מה קורה אחרי שהסוכן ביצע את המסלול בפעם הראשונה. ומה היא כוונתי :

הסוכן נסע במסלול ההבא: (הקדמה ישנם4 ערים וכל הערים מקושרות בניהן . (בזאת מצורפת תמונה)

http://dl.dropbox.com/u/25505203/flow.JPG

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

לדוגמא הוא ביקר ב - 0-1-2-3, איך אני כותב שיחזור ל מיקום 1 ויבדוק האם קיים מסלול אחר שאותו הוא לא בדק .

תודה רבה לכל העוזרים



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אמממ cfirzzz 21.05.12 06:56 1
  תכנות דינאמי זה הפתרון ואז לעבור על המטריצה עם רקורסיה. TheKid 21.05.12 07:24 2
     אם הכוונה להקצאת זכרון דינאמי אז - אסור Michoo  21.05.12 08:38 3
         איפה אתה לומד? eminem 21.05.12 10:29 4
             אוניברסיטת בן גוריון Michoo  21.05.12 11:22 5
                 צ'ורקין לא מצפה שתפתור את זה עם תכנות דינמי eminem 21.05.12 13:39 6
                     אוקיי .. Michoo  21.05.12 13:44 7
                         תחשוב על דרך לשמר את הדרך eminem 21.05.12 14:03 8
                             סבבה Michoo  21.05.12 19:07 12
  אממ זו בעיה מפורסמת מתורת הגרפים. ShocKi  21.05.12 16:33 9
     לא מאמין שהם למדו את זה. הם צריכים להתמודד עם זה dvir8 21.05.12 17:50 10
     זה מטלה.... Michoo  21.05.12 19:04 11
     אני עושה איתו את הקורס הנ''ל הם אפילו לא מכוונים לזה eminem 22.05.12 01:48 13
         הלוואי וחמדן היה עובד כאן cfirzzz 23.05.12 07:02 15
  טוב cfirzzz 23.05.12 07:01 14
     ככה אני פתרתי את זה :-) eminem 23.05.12 15:23 16
         אכפת לך לשתף? galaxy  24.05.12 20:25 17

       
cfirzzz לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
5060 הודעות, 2 פידבק
   06:56   21.05.12   
אל הפורום  
  1. אמממ  
בתגובה להודעה מספר 0
 
   במה מותר להשתמש ?
אם אני זוכר נכון הפתרון של השאלה היא בתכנון דינמי
תוכל למצוא המוווון פתרונות ומימושים לבעיה באינטרנט


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק
   07:24   21.05.12   
אל הפורום  
  2. תכנות דינאמי זה הפתרון ואז לעבור על המטריצה עם רקורסיה.  
בתגובה להודעה מספר 0
 
   כלומר בסוף ריצת השלב הראשון באלגוריתם צריכה להיות לך מטריצה של כמות הערים כפול כמות הערים
אחרי זה אתה עובר על המטריצה בשיטה רקורסיבית


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michoo 
חבר מתאריך 13.4.03
1760 הודעות
   08:38   21.05.12   
אל הפורום  
  3. אם הכוונה להקצאת זכרון דינאמי אז - אסור  
בתגובה להודעה מספר 2
 
!!



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   10:29   21.05.12   
אל הפורום  
  4. איפה אתה לומד?  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michoo 
חבר מתאריך 13.4.03
1760 הודעות
   11:22   21.05.12   
אל הפורום  
  5. אוניברסיטת בן גוריון  
בתגובה להודעה מספר 4
 
ך



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   13:39   21.05.12   
אל הפורום  
  6. צ'ורקין לא מצפה שתפתור את זה עם תכנות דינמי  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michoo 
חבר מתאריך 13.4.03
1760 הודעות
   13:44   21.05.12   
אל הפורום  
  7. אוקיי ..  
בתגובה להודעה מספר 6
 
עדיין זה לא עזר לי ככ



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   14:03   21.05.12   
אל הפורום  
  8. תחשוב על דרך לשמר את הדרך  
בתגובה להודעה מספר 7
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michoo 
חבר מתאריך 13.4.03
1760 הודעות
   19:07   21.05.12   
אל הפורום  
  12. סבבה  
בתגובה להודעה מספר 8
 



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   16:33   21.05.12   
אל הפורום  
  9. אממ זו בעיה מפורסמת מתורת הגרפים.  
בתגובה להודעה מספר 0
 
   הדרך לפתור אותה היא למצוא בגרף משוקלל מסלול המילטון עם המשקל הכי קטן.

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


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   17:50   21.05.12   
אל הפורום  
  10. לא מאמין שהם למדו את זה. הם צריכים להתמודד עם זה  
בתגובה להודעה מספר 9
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michoo 
חבר מתאריך 13.4.03
1760 הודעות
   19:04   21.05.12   
אל הפורום  
  11. זה מטלה....  
בתגובה להודעה מספר 9
 
לא למדנו שום דבר שקשור לגרפים והמילטון ככה שלא נראה לי שזה קשור.



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   01:48   22.05.12   
אל הפורום  
  13. אני עושה איתו את הקורס הנ''ל הם אפילו לא מכוונים לזה  
בתגובה להודעה מספר 9
 
   הם מתכוונים שתעשה את זה בלי יותר מדי תחכום ב-
O(n!) efficiency

בלי תכנות דינמי, בלי אלגוריתם חמדן ובלי שטויות אחרות


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
cfirzzz לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
5060 הודעות, 2 פידבק
   07:02   23.05.12   
אל הפורום  
  15. הלוואי וחמדן היה עובד כאן  
בתגובה להודעה מספר 13
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
cfirzzz לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
5060 הודעות, 2 פידבק
   07:01   23.05.12   
אל הפורום  
  14. טוב  
בתגובה להודעה מספר 0
 
   אז נראה לי שהבנת שאתה צריך לבדוק את כל האפשרויות (n!) .
אם תחשוב על זה, זה מחזיק בתוכו את השאלה כיצד להדפיס את כל הפרמוטציות של מחרוזת נתונה.
כי בעצם אתה תרצה לעבור על כל הפרמוטציות של המסלולים.
הרעיון הוא להחזיק משתנה MIN, ועבור כל מסלול לבדוק אם המסלול הנכחי קצר מה MIN שאתה מחזיק.
הפונקצית "על" שלך שבונה את הפרמוטציה, וקוראת לתת פונקציה רקורסיבית (שפועלת על פרמוטציה כל שהיא) צריכה להעצר ברגע שהיא מחשבת n! אפשרויות (אפשר גם תנאי עצירה אחרים, תלוי באיך אתה בונה את הפונקציה).
בשביל לבנות אותה תחפש קצת על "מציאת כל הפרמוטציות האפשרויות למחרוזת" ותראה דברים מעניינים.

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   15:23   23.05.12   
אל הפורום  
  16. ככה אני פתרתי את זה :-)  
בתגובה להודעה מספר 14
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
galaxy 
חבר מתאריך 2.7.02
8816 הודעות, 1 פידבק
   20:25   24.05.12   
אל הפורום  
  17. אכפת לך לשתף?  
בתגובה להודעה מספר 16
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net