ببینید که چگونه الگوریتمهای جهان را اجرا می کنند
یک الگوریتم مجموعه ای از دستورالعمل ها است. تعریف واقعا ساده است. الگوریتم می تواند به سادگی دستورالعمل هایی مانند این باشد:
- خیابان را به سمت پایین بروید
- اولین حق را بگیر
- خانه دوم را در سمت چپ پیدا کنید
- گول زدن در درب و
- ارائه بسته
اما در حالی که تعریف الگوریتم ساده است، معنای واقعی و چگونگی تاثیر آن بر زندگی ما می تواند بسیار پیچیده باشد.
یک نمونه از یک الگوریتم
یک مثال رایج از یک الگوریتم که ما در زندگی روزمره ما استفاده می کنیم دستور العمل است. این مجموعه دستورالعمل ها به ما تمام مواد مورد نیاز ما و دستورالعمل های مربوط به کار با این مواد را می دهد. به نظر می رسد آسان است، درست است؟
اما اگر شما نمی دانید کجا فنجان اندازه گیری نگه داشته می شود؟ برای پیدا کردن آن نیاز به یک الگوریتم دارید. شما حتی ممکن است الگوریتمی در مورد چگونگی استفاده از یک فنجان اندازه گیری داشته باشید.
بنابراین در حالی که یک الگوریتم مجموعه ای از دستورالعمل ها است، همچنین باید توجه داشته باشد که چه کسانی یا چه چیزی این دستورالعمل ها را تفسیر می کنند. به عنوان مثال، اگر شما به دوستان خود دستورالعمل هایی بدهید که چگونه از خانه خود به نزدیکترین فروشگاه مواد غذایی می آیند، دوست شما فقط می داند که چگونه می تواند به آن فروشگاه دسترسی پیدا کند، اگر آنها می دانند که در آن خانه شما واقع شده است. آنها هنوز قادر به پیدا کردن این فروشگاه مواد غذایی خاصی از خانه، دوست دیگر نیستند.
این چگونه یک الگوریتم می تواند هر دو ساده و پیچیده باشد. و هنگامی که ما از نظر الگوریتم های کامپیوتری صحبت می کنیم، درک آنچه کامپیوتر قادر است انجام می دهد، بخش مهمی از الگوریتم های فرموله سازی است.
چگونه الگوریتم مرتبسازی تکامل یافته است
یکی از اولین الگوریتم های ایجاد شده روال مرتب سازی حباب بود. مرتب سازی حباب یک روش برای مرتب کردن اعداد، حروف یا کلمات با حل کردن از طریق یک مجموعه داده، مقایسه هر مجموعه ای از ارزش ها به صورت کنار در کنار و تغییر آنها در هنگام نیاز است.
این حلقه تا زمانیکه الگوریتم بتواند از طریق کل فهرست حرکت کند بدون نیاز به تغییر هر چیزی، یعنی این که مقادیر مرتب به درستی مرتب شوند، تکرار می شود. این نوع الگوریتم اغلب به عنوان یک الگوریتم بازگشتی شناخته می شود، زیرا تا زمانیکه این کار را تکمیل می کند، روی خود حلقه می زند.
الگوریتم ممکن است به همان اندازه ساده باشد:
- به اولین ارزش بروید
- در صورت نیاز، این ارزش را در برابر ارزش بعدی و موقعیت های مبادله بررسی کنید
- به ارزش بعدی بروید و مقایسه را تکرار کنید.
- اگر ما در انتهای لیست قرار داریم، اگر در طول حلقه ارزش تعویض شود، به بالا برگردیم.
اما حباب مرتب سازی به نظر نمی رسید که کارآمد ترین روش مرتب سازی ارزش ها باشد. با گذشت زمان، کامپیوترها توانایی انجام سریع کارهای پیچیده را داشتند، الگوریتم های مرتب سازی جدید ظاهر شدند.
یکی از این الگوریتم ها را از طریق لیست اول اسکن می کند و یک لیست دوم از مقادیر مرتب شده ایجاد می کند. این روش تنها از طریق لیست اصلی یک بار عبور می کند و با هر مقدار، آن را از طریق لیست دوم حلقه می کند تا مکان درستی برای قرار دادن ارزش پیدا کند. معمولا استفاده از روش مرتب سازی حباب کارآمدتر است.
این الگوریتم هایی هستند که واقعا دیوانه می شوند. یا واقعا جالب است، بسته به اینکه چگونه به آن نگاه می کنید.
در حالی که روش مرتب سازی حباب یکی از روش های ناکارآمد مرتب سازی مقادیر از بسیاری جهات در نظر گرفته می شود، اگر فهرست اصلی به درستی برآورده شود، مرتب سازی حباب می تواند یکی از کارآمدترین باشد. به این دلیل است که در این مثال، الگوریتم مرتب سازی حباب تنها از یک لیست عبور می کند و تعیین می کند که مرتب شده است.
متاسفانه، ما همیشه نمی دانیم که لیست ما تخفیف یافته است، بنابراین ما باید یک الگوریتم را انتخاب کنیم که در مقایسه با تعداد زیادی از لیست ها، کارآمدتر خواهد بود.
آنچه ما از حباب مرتب کردن یاد می گیریم
- الگوریتم ها در طول زمان تکامل پیدا می کنند، زیرا ما روش های کارآمدتری برای انجام کارها و / یا کارایی بیشتر کامپیوترها در انجام وظایف پیچیده ای پیدا می کنیم.
- الگوریتم ها گاهی اوقات انتخاب می شوند، زیرا آنها بیشتر "بیشتر" از زمان کار می کنند.
- فقط به این دلیل که یک الگوریتم بیشتر کارآیی بیشتری دارد، این بدان معنی نیست که همیشه بهترین در هر مورد خاص است.
الگوریتم های فیس بوک و بیشتر در زندگی روزمره
الگوریتم ها در حال کار بر روی هر روز برای کمک به انسان هستند. هنگام جستجو در وب، یک الگوریتم در حال تلاش برای پیدا کردن بهترین نتایج جستجو است. از طریق تلفن هوشمند خود به جهت راهنمایی بپردازید و یک الگوریتم بهترین راه را برای شما انتخاب می کند. و هنگامی که شما فیس بوک را مرور می کنید، یک الگوریتم تصمیم می گیرد که کدام پست های فیس بوک ما برای ما مهم است. (بیایید امیدوار باشیم که دوستان ما متوجه نیستند که فیس بوک فکر می کند ما بیشتر دوست داریم!)
اما فکر کردن به طور الگوریتمی می تواند ما را به مراتب فراتر از زندگی ما در کامپیوتر کمک کند. حتی می تواند ما را برای ساخت یک ساندویچ بهتر کمک کند.
بگذارید بگویم من با دو برش نان شروع کردم، خردل را در یک تکه و سس مایونز بر روی تکه ای دیگر پخش کردم. من یک پنیر پنیر را روی نان گذاشته ام با سس مایونز، بعضی از ژامبون بالای آن، بعضی از کاهو، دو تکه گوجه فرنگی و سپس آن را با آن قطعه با خردل روی آن قرار دهید. ساندویچ خوب، درست است؟
مطمئنا اگر من آن را بلافاصله بخورم اما اگر آن را برای یک لحظه بر روی میز گذاشتم، این تکه های نان ممکن است از غوطه ور شدن برخی از این گوجه فرنگی غلیظ شود. این یک مشکل است که من پیش بینی آن را نداشتم و ممکن است ساندویچها را برای سالها قبل از اینکه متوجه شوند، بشمار می برم، اما هنگامی که من انجام می دهم، می توانم فکر کنم راه هایی برای تغییر الگوریتم من برای ساخت یک ساندویچ بهتر است.
به عنوان مثال، من می توانم از گوجه فرنگی خلاص شوم. اما من نمی خواهم این طعم گوجه فرنگی را از دست بدهم. بنابراین، به جای آن، می توانم پس از نان و کاهو گوجه فرنگی را روی ساندویچ قرار دهم. این اجازه می دهد تا کاهو برای ایجاد یک مانع محافظ بین گوجه فرنگی و نان.
این چگونه یک الگوریتم تکامل یافته است. و یک الگوریتم لازم نیست که توسط یک رایانه به عنوان یک الگوریتم اجرا شود. یک الگوریتم یک فرآیند است و فرآیندهای اطراف ما هستند.