רעיונות פשוטים

רעיונות פשוטים בקצת יותר מ-140 תווים..

היוריסטיקות

במדעי המחשב כאשר אנחנו כותבים תוכנה/אלגוריתמים שמטרתו היא לפתור בעייה כל שהיא בצורה אופטימלית(למשל למצוא את הדרך ההכי קצרה בין נקודה A לנקודה B), לעיתים אין פתרון יותר טוב מאשר לעבור על  כל האפשרויות לפתרון, לדרג אותם על פי רמת האופטימליות ולבחור את האופציה עם הדירוג הגבוהה ביותר (במקרה הזה מהי הדרך הקצרה ביותר), מעבר על כל האפשריות נקרא brute force, בדרך כלל מספר האפשרויות תלוי בקלט בצורה אקספוננציאילית, ולכן כאשר הקלט גדול מאד, גם ל-supercomputers יקח מספר שנים רב לפתור את הבעיה.

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

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

לדוגמא: אם אנחנו נמצאים באוניברסיטת קולמביה במנהטן ואנחנו רוצים להגיע להמבורגר הטעים ביותר בעיר ( J G MELON), אלגוריתם פשוט אך נאביב היה מחשב את כל הדרכים האפשריות ברחבי מנהטן ואז בוחר את הדרך הקצרה ביותר (http://tinyurl.com/q5yj8s)

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

היוריסטיקה הזאת נקראת "מרחק מנהטן" ובכל צעד היא בוחרת את הצעד הבא כך: לאיזה מהצעדים הבאים יש את "מרחק מנהטן" הנמוך ביותר מהמטרה, לשם כדאי לי ללכת וכך מתקדם עד הגעתו הבטוח למטרה.בהנחה שאנחנו נמצאים בעולם דו ממדי ואנחנו כרגע בנקודה x,y והמטרה נמצאת בנקודה a,b, מרחק מנהטן מוגדר להיות |x-y|+|a-b| וזה בעצם בצורה מתמטית פורמלית מייצג את הכיוון.

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

התחלתי לעבוד על פרויקט חדש ביחד עם גלי, אנחנו בונים אתר ויקי קטן שמכיל בעיות קשות ידועות ואת רשימת הירוסטיקות שיכולות לעזור בכל בעיה ובעיה, האתר נמצא כאן -http://heuristicswiki.wikispaces.com ואתם מוזמנים לתרום מהידע והניסיון שלכם

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

למידע נוסף לגבי אלגורתמי מציאת דרך – http://theory.stanford.edu/~amitp/GameProgramming/index.html

אין תגובות עדיין»

להגיב

Fill in your details below or click an icon to log in:

WordPress.com Logo

אתה מגיב באמצעות חשבון WordPress.com שלך. Log Out / לשמור )

Twitter picture

אתה מגיב באמצעות חשבון Twitter שלך. Log Out / לשמור )

Facebook photo

אתה מגיב באמצעות חשבון Facebook שלך. Log Out / לשמור )

Connecting to %s

Follow

Get every new post delivered to your Inbox.