الگوریتم همان دستورالعمل حل مسئله است. برای رسیدن به هدف در هر کار باید مراحل منظم و دقیقی صورت پذیرد. الگوریتم چیزی شبیه به رسپی یا دستورالعمل تهیه یک غذا در رستوران است. الگوریتم اجزای مشخصی دارد. ورودیها شبیه به مواد تشکیل دهنده یک رسپی هستند. نتایج و خروجیها هم شبیه به غذای آماده شده است. مراحل و رویه انجام کار به شما میگوید که در هر مرحله چه کاری باید انجام شود. پس میتوانیم بگوییم که الگوریتم چگونگی کاری که باید انجام شود را توصیف میکند.
در هر الگوریتم دستورات خاصی وجود دارد. این دستورات شامل موارد زیر هستند:
- دستورات ورودی
- دستورات خروجی
- دستورات شرطی
- دستورات محاسباتی
- دستورات تکرار
برای روشنتر شدن كار بهتر است مثالي بزنيم. فرض كنيد ميخواهيد از خانه به محل كارتان برويد. به موارد زير توجه كنيد:
- شروع
- از خانه خارج شويد.
- وارد پاركينگ شويد و درب اتوموبيل تان را باز كنيد.
- سوار اتوموبيل شويد، درب آن را ببنديد و شروع به حركت كنيد.
- اگر به مقصد رسيديد، از اتوموبيل خارج شويد و درب آن را قفل كنيد.
- پايان
در يك سيستم كامپيوتری الگوريتمها با استفاده از دادههاي ورودی و خروجی عمل ميكنند. يعنی در هر مرحله ورودی را میگيرند و يک داده خروجی توليد میكنند.
براي مثال در یک موتور جستجو مانند گوگل، عبارت وارد شده توسط كاربر به عنوان يک ورودی گرفته ميشود. در مرحله بعد، پايگاه دادههای موجود در گوكل بررسی میشود تا ورودی گرفته شده را پيدا كند. زماني كه عبارت جستجو شده، پيدا شد، آدرس آن به عنوان خروجی به كاربر باز گردانده میشود تا نتايج مورد نظرش را مشاهده كند.
مهم ترين ويژگی های يک الگوريتم
در يک الگوريتم خوب بايد تمامی موارد زير رعايت شود.
- باید ورودیها و خروجیها به شکل دقیقی مشخص شوند.
- مراحل الگوریتم، واضح و خالی از ابهام باشند.
- دستورات یک الگوریتم باید انجام شدنی باشد. برای مثال تقسیم عدد بر صفر انجام نشدنی و مبهم است.
- یک الگوریتم از روشهای مختلف در حل مسئله، تاثیر گرفته است.
- قابلیت نوشتن و کد شدن به هر زبانی در برنامه نویسی را داشته باشد.
- هر الگوریتم میتواند هیچ و یا چندین پارامتر را به عنوان ورودی بپذیرد.
- حداقل باید یک نتیجه در خروجی داشته باشد.
- شروع و پایان الگوریتم باید معلوم باشد. نتیجه باید پایان پذیر باشد. به علاوه، زمان اجرا نیز باید معقول و پایان پذیر باشد.
انواع الگوريتم از نظر ساختار و عملكرد
براي حل مسائل از الگوريتمها استفاده ميكنيم. با توجه به نوع مسئله از الگوريتم مناسب آن استفاده ميكنيم. به طور كلي پنج نوع الگوريتم داريم. در ادامه هر يک را به شكل مختصر توضيح میدهيم.
- الگوریتم بازگشتی (Recursive)
الگوريتمهای ریکرسیو یا بازگشتی ابتدا مسئله را در حالت درونیتر حل میکند و سپس مسائل تو در تو به روش بازگشتی حل میشوند. در هر مرحله پاسخ مرحله بعد به وسیله مرحله قبل به دست میآید. حل مسئله فاکتوریل با یک الگوریتم بازگشتی انجام میپذیرد.
- الگوریتم دینامیک (Dynamic)
با استفاده از الگوریتمهای داینامیک یا پویا بخشی از مسئله حل میشود و جواب در حل مسائل دیگر به کار گرفته میشود. دنباله فیبوناچی به این روش حل میشود.
- الگوریتم برگشت به عقب (Backtracking)
در الگوریتمهای عقبگرد به دنبال جواب بهینه هستیم. برای مثال در درخت تصمیم، با ایجاد فضای مسئله، گره بهینهتر را پیدا میکنیم. هر بار شاخه نامناسب کنار گذاشته میشود و هرس نمیشود. اگر جواب بهینه پیدا نشود، مجدد باید در آن شاخه به دنبال جواب بهینه بگردیم.
- الگوریتم تقسیم و حل (Divide and conquer)
در این روش حل، مسئله در ابتدا به بخشهای کوچکتری تقسیم میشود. مسائل کوچک جدا جدا حل میشوند و پس از ترکیب پاسخها در هر بخش، جواب نهایی مسئله به دست میآید.
- الگوریتم حریصانه (Greedy)
این الگوریتمها هم سعی دارند تا پاسخ بهینهتر را پیدا کنند. اگر مسئله یک جواب بهینهتر نداشته باشد، این الگوریتم یکی از بهترین جوابها را به دست میآورد، هر چند که مسائل NP complete جواب بهینه ندارند.
کلام آخر
در این مقاله با الگوریتم، اجزای الگوریتم آشنا شدیم. چند مثال زدیم تا درک بهتری پیدا کنید. در انتها نیز به صورت مختصر انواع الگوریتمها در حل مسائل را بیان کردیم. در مبحث ارز دیجیتال از الگوریتمهای متنوعی برای امنیت ارز استفاده میشود. در صورت علاقه میتوانید این الگوریتمها و رمزارزها را مطالعه نمایید. در مقالات بعدی با برخی از مهمترین این الگوریتمها آشنا میشوید.
در صورتی که میخواهید ریسک معاملات کریپتویی خود را تا جای ممکن کم کنید در کانال سیگنال ارز دیجیتال پرشین الیت عضو شوید و یا با خرید حرفهایترین اندیکاتورها در تحلیلهای تکنیکال خود موفقتر عمل کنید.
دیدگاه شما