واژهنامه
الگوریتم(Algorithm) چیست و چه کاربردی دارد؟
تعریف به زبان ساده
الگوریتم مجموعهای از دستورالعملهای گام به گام برای حل یک مسئله یا انجام یک کار است، شبیه به یک دستور غذا. در محاسبات، الگوریتمها به کامپیوتر میگویند که چگونه ورودیهایی مانند دادهها را پردازش کند تا خروجیای مانند تصمیم، پیشبینی یا لیست مرتب شده تولید کند. برخی از الگوریتمها ساده و ثابت هستند، در حالی که برخی دیگر، مانند یادگیری ماشین، الگوها را از دادهها «یاد میگیرند».
الگوریتم مجموعهای از مراحل برای انجام یک کار یا حل یک مسئله است. معمولاً الگوریتمها توسط کامپیوترها اجرا میشوند، اما ما در زندگی روزمره خود نیز به آنها متکی هستیم. هر بار که یک فرآیند مرحلهبهمرحله خاص را دنبال میکنیم، مانند درست کردن قهوه در صبح یا بستن بند کفشهایمان، در واقع در حال پیروی از یک الگوریتم هستیم.
در زمینه علوم کامپیوتر، الگوریتم یک فرآیند ریاضی برای حل یک مسئله با استفاده از تعداد محدودی از مراحل است. الگوریتمها یکی از اجزای کلیدی هر برنامه کامپیوتری هستند و نیروی محرکه سیستمها و برنامههای مختلفی مانند سیستمهای ناوبری، موتورهای جستجو و سرویسهای پخش موسیقی به شمار میروند.

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

مثالی از یک الگوریتم
به عنوان مثال، الگوریتمی را در نظر بگیرید که مربع (توان دوم) یک عدد را محاسبه میکند.
- ورودی: داده ورودی یک عدد یکرقمی است (مثلاً ۵).
- تبدیل/پردازش: الگوریتم ورودی (عدد ۵) را میگیرد و عملیات خاصی را انجام میدهد (یعنی عدد را در خودش ضرب میکند).
- خروجی: نتیجه محاسبه، مربع عدد ورودی است که در این حالت برابر با ۲۵ خواهد بود (زیرا ۲۵ = ۵ * ۵).
ما میتوانیم این را به عنوان یک الگوریتم به شکل زیر بیان کنیم: الگوریتم: محاسبه مربع یک عدد
۱. شروع.
۲. عدد (N) که میخواهید مربع آن را پیدا کنید، دریافت کنید.
۳. عدد (N) را در خودش ضرب کنید.
۴. نتیجه ضرب را در یک متغیر (result) ذخیره کنید.
۵. مقدار متغیر (result) را که نشاندهنده مربع عدد ورودی است، به عنوان خروجی نمایش دهید.
۶. پایان.
الگوریتم، به جای اینکه خود پاسخ باشد، فرآیند فکری برای حل یک مسئله را به روشی انتزاعی و در عین حال دقیق نشان میدهد. مهم است به خاطر داشته باشید که الگوریتم با برنامه یا کد یکسان نیست. الگوریتم، منطق یا برنامهریزی برای حل یک مسئله است که به صورت یک توصیف ساده و گامبهگام ارائه میشود. کُد، پیادهسازی الگوریتم در یک زبان برنامهنویسی خاص (مانند ++C یا پایتون) است، در حالی که برنامه، پیادهسازی کدی است که به کامپیوتر دستور میدهد چگونه یک الگوریتم را اجرا کرده و یک کار را انجام دهد.
به جای اینکه دقیقا به کامپیوتر بگوییم چه کاری انجام دهد، برخی از الگوریتمها به کامپیوترها اجازه میدهند تا خودشان یاد بگیرند و عملکردشان را در یک وظیفه خاص بهبود بخشند. این الگوریتمهای یادگیری ماشین (Machine Learning) از دادهها برای شناسایی الگوها و پیشبینیها، یا انجام دادهکاوی (Data Mining) برای کشف بینشهای پنهان در دادهها که میتوانند تصمیمات تجاری را هدایت کنند، استفاده میکنند.
سه نوع مختلف از الگوریتمها وجود دارد
- الگوریتمهای توالی خطی (Linear sequence): از یک مجموعه مراحل مشخص پشت سر هم پیروی میکنند. درست مانند پیروی از یک دستور پخت، هر مرحله به موفقیت مرحله قبلی بستگی دارد.
- الگوریتمهای شرطی (Conditional): بین دو اقدام تصمیمگیری میکنند. به جای اجرای متوالی تمام مراحل، یک الگوریتم شرطی شامل انتخابهایی بر اساس سناریوهای خاص یا دادههای ورودی است و از دستورات «اگر/آنگاه» (if/then) برای تعیین اینکه چه کاری باید انجام شود استفاده میکند. به عنوان مثال، در زمینه دستور پخت کوکی، میتوانید این مرحله را اضافه کنید: «اگر خمیر بیش از حد چسبناک است، ممکن است لازم باشد آن را در یخچال بگذارید.»
- الگوریتمهای حلقهای (Looping): یک مجموعه مشخص از دستورالعملها را چندین بار تکرار میکنند تا زمانی که یک شرط خاص برآورده شود یا تعداد مشخصی از تکرارها تکمیل گردد. هدف الگوریتمهای حلقهای انجام کارآمدِ وظایف تکراری بدون نیاز به نوشتن چندین بارهی دستورالعملهای مشابه است. به عنوان مثال، از یک الگوریتم حلقهای میتوان برای مدیریت فرآیند تهیه چندین کوکی از یک خمیر واحد استفاده کرد. الگوریتم مجموعهای از دستورالعملهای مشخص را برای فرم دادن و پختن کوکیها تکرار میکند تا زمانی که تمام خمیر مصرف شود.
نمونههایی از الگوریتمها
الگوریتمها ابزارهای بنیادین برای حل مسئله، هم در دنیای دیجیتال و هم در بسیاری از سناریوهای زندگی واقعی هستند. هر بار که سعی میکنیم یک مسئله را با شکستن آن به مراحل کوچکتر و قابل مدیریت حل کنیم، در واقع از تفکر الگوریتمی استفاده میکنیم.
مثالی از الگوریتم در زندگی روزمره
روتینهای روزانه نمونههایی از این هستند که چگونه ما بدون اینکه متوجه باشیم از الگوریتمها استفاده میکنیم. اگرچه ممکن است برای ما کاملاً طبیعی به نظر برسد، اما به عنوان مثال، تصمیمگیری برای اینکه صبح چه بپوشیم، یک تصمیم پیچیده است که شامل مراحل بسیاری میشود. اگر مجبور بودید فرآیند خود را با جزئیات یادداشت کنید، در نهایت به یک الگوریتم میرسیدید که میتوانست چیزی شبیه به این باشد:
۱. شناسایی اینکه کدام لباسها تمیز هستند.
۲. در نظر گرفتن پیشبینی آب و هوا برای آن روز.
۳. در نظر گرفتن مناسبتی که برای آن لباس میپوشید (مثلاً محل کار، مدرسه و غیره).
۴. در نظر گرفتن ترجیحات شخصی (مثلاً استایل یا اینکه کدام لباسها با هم سِت میشوند).
همه این موارد را میتوان با دادهها نشان داد، چه به صورت کلمات (مثلاً «غیررسمی») و چه به صورت اعداد (مثلاً دمای هوا)، که میتوانند به عنوان ورودی برای تصمیمگیری شما عمل کنند. مرحله بعدی پردازش این مقادیر ورودی است. اگر مجبور به نوشتن این مراحل بودید، شامل دستوراتی مانند «اگر هوا زیر ۵۰ درجه فارنهایت است، یک پلیور انتخاب کن و بپوش» یا «اگر هوا آفتابی است، عینک آفتابی بردار و بزن» میشد. پس از لباس پوشیدن، ما از خانه خارج میشویم، که این خروجیِ الگوریتمِ لباس پوشیدن ماست.
در ریاضیات، الگوریتمها روشهای استانداردی برای انجام محاسبات یا حل معادلات هستند، زیرا کارآمد، قابل اعتماد و قابل اجرا در موقعیتهای مختلف میباشند.
مثالی از الگوریتم استاندارد برای جمع
در ریاضیات، یک الگوریتم استاندارد به مجموعهای خاص و کاملاً تعریفشده از مراحل یا رویهها اشاره دارد که برای حل مسائل ریاضی از یک نوع خاص استفاده میشود. مکانهای مختلف در جهان از الگوریتمهای متفاوتی استفاده میکنند، بنابراین هر سیستم آموزشی ممکن است این مفهوم را متفاوت آموزش دهد. در ایالات متحده، مدارس از یک الگوریتم استاندارد مبتنی بر ارزش مکانی و ویژگیهای عملیات برای جمع، تفریق، ضرب و تقسیم استفاده میکنند.
فرض کنید میخواهید اعداد ۳۴۵ و ۲۷۸ را جمع کنید. شما مجموعهای از مراحل (یعنی الگوریتم استاندارد برای جمع) را دنبال خواهید کرد:

۱. اعداد را طوری بنویسید که ارقام همارزش در یک راستا (ستون) قرار بگیرند.
۲. از سمت راستترین ارقام (جایگاه یکان) شروع کنید و آنها را با هم جمع کنید:
۱۳ = ۸ + ۵ عدد ۳ را بنویسید و عدد ۱ را به ستون بعدی منتقل کنید.
۳. به ستون بعدی (جایگاه دهگان) بروید و ارقام را همراه با مقدار منتقلشده از قبل جمع کنید:
۱۲ = ۱ + ۷ + ۴ عدد ۲ را بنویسید و عدد ۱ را به ستون بعدی منتقل کنید.
۴. به ستون سمت چپ (جایگاه صدگان) بروید و ارقام را همراه با مقدار منتقلشده جمع کنید:
۶ = ۱ + ۲ + ۳ عدد ۶ را بنویسید.
۵. نتیجه نهایی ۶۲۳ است.
سیستمهای ناوبری (مسیریابی) نمونه دیگری از کاربرد الگوریتمها هستند. این سیستمها از الگوریتمهایی استفاده میکنند تا به شما کمک کنند در حالی که از ترافیک و مسدودیتهای جادهای دوری میکنید، سادهترین و سریعترین مسیر را برای رسیدن به مقصد خود بیابید.
مثالی از الگوریتم: سیستمهای ناوبری
الگوریتمهای استفادهشده در سیستمهای ناوبری مانند گوگل مپس (Google Maps)، در واقع مغز متفکر این اپلیکیشنها هستند. این الگوریتمها از حجم عظیمی از دادهها، از جمله نقشههای دقیق و بهروزرسانیهای لحظهای ترافیک، برای تعیین بهترین مسیر جهت رسیدن به مقصد شما استفاده میکنند. آنها عواملی مانند مسافتی که باید طی کنید یا اینکه کدام جادهها شلوغ هستند را در نظر میگیرند.
اگر مشکلات غیرمنتظرهای مانند تصادف در یک مسیر مشخص وجود داشته باشد، الگوریتمها به سرعت مسیر را دوباره محاسبه کرده و مسیرهای جایگزین را برای جلوگیری از تأخیر پیشنهاد میدهند؛ این کار تضمین میکند که وقت خود را در ترافیک هدر ندهید. آنها همچنین راهنماییهای گامبهگام را به شما ارائه میدهند تا دقیقاً بدانید کجا باید بپیچید. این الگوریتمها از نحوه استفاده مردم یاد میگیرند و در نتیجه به طور مداوم در یافتن سریعترین مسیرها بهتر میشوند.
سایر مقالات جالب اگر میخواهید درباره ChatGPT، ابزارهای هوش مصنوعی، مغالطهها و سوگیریهای تحقیقاتی بیشتر بدانید، حتماً برخی دیگر از مقالات ما را که دارای توضیحات و مثالهایی هستند، بررسی کنید.
ChatGPT
- ChatGPT در مقابل ویراستار انسانی (ChatGPT vs human editor)
- ارجاعات و استنادهای ChatGPT citations) ChatGPT)
- آیا ChatGPT قابل اعتماد است؟ (Is ChatGPT trustworthy)
- استفاده از ChatGPT برای مطالعه و تحصیل (Using ChatGPT for your studies)
سوگیریهای تحقیقاتی (Research bias)
- سوگیری ضمنی (Implicit bias)
- سوگیری چارچوببندی (Framing bias)
- سوگیری شناختی (Cognitive bias)
- سوگیری خوشبینی (Optimism bias)
- اثر هاثورن (Hawthorne effect)
- سوگیری ناخودآگاه (Unconscious bias)
قبل از انجام این کار، تکالیف خود را ارسال نکنید ابزار تصحیح و ویراستاری دانشگاهی با استفاده از هزاران متن آکادمیک آموزش دیده است که آن را به دقیقترین و قابلاعتمادترین ابزار ویراستاری برای دانشجویان تبدیل میکند. این ابزار شامل بررسی رایگان ارجاعات نیز میباشد.
