מהו אלגוריתם?

גלה כיצד אלגוריתמים מנהלים את העולם

אלגוריתם הוא אוסף של הוראות. ההגדרה היא באמת כל כך פשוט. אלגוריתם יכול להיות קל כמו מתן הוראות כאלה:

  1. סע במורד הרחוב
  2. פנה בפניה הראשונה ימינה
  3. מצא את הבית השני משמאל
  4. לדפוק על הדלת
  5. ספק את החבילה.

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

דוגמה לאלגוריתם

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

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

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

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

כיצד מיון אלגוריתמים התפתח

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

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

האלגוריתם עשוי להיראות פשוט כמו:

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

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

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

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

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

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

מה אנחנו לומדים מתוך מיון בועה

אלגוריתמים פייסבוק ועוד בחיי היום יום

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

אבל חשיבה אלגוריתמית יכולה לעזור לנו הרבה מעבר לחיי המחשב שלנו. זה אפילו יכול לעזור לנו לבנות כריך טוב יותר.

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

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

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

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