الگوریتم چیست؟ (قسمت سوم)

جزوه جلسه “الگوریتم چیست؟”

ممکن است شما نیز با شنیدن واژه الگوریتم “Algorithm” تصور کرده باشید الگوریتم ها مفاهیم سخت و پیچیده ای هستند و یا یادگیری آن ها دشوار است. اما مفهوم الگوریتم بسیار ساده است. الگوریتم ها  مجموعه ای از دستورالعمل‌ها هستند که مراحل مشخصی دارند و به صورت دقیق تعریف شده اند. با انجام مرحله به مرحله این دستورالعمل ها در نهایت می‌توانیم یک مسأله خاص را حل کنیم. یادگرفتن Algorithm ها برای افرادی که به دنبال یادگیری مهارت برنامه نویسی هستند بسیار ضروری است چراکه الگوریتم ها پایه و اساس برنامه نویسی هستند. در واقع اگر یک برنامه نویس مهارت کدنویسی را بلد باشد اما مفهوم الگوریتم و الگوریتم نویسی را نداند، نمی‌تواند پروژه های برنامه نویسی را به خوبی انجام دهد.

برای یادگیری زبان پایتون دوره رایگان پایتون خانه فناوری تهران را ببینید.

الگوریتم چیست؟

تفکر الگوریتمی در زندگی روزمره

ما از کودکی در زندگی روزمره استفاده زیادی از الگوریتم ها کرده ایم بی آنکه متوجه آن باشیم. مثلا هنگام مرتب کردن تختمان، دم کردن یک قوری چایی، استفاده از وسایل نقلیه، و تقریبا در هر کار روزمره دیگری مجموعه دستورالعمل های خاصی را دنبال کرده ایم تا یک کار به خصوص را به سرانجام برسانیم. در واقع تفکر الگوریتمی “Algorithmic” داشتیم. در برنامه نویسی نیز کافیست برای انجام یک برنامه و یا task خاص مجموعه ای از دستور العمل ها را بنویسیم که بدانیم چگونه برنامه را شروع کنیم و به آن پایان بدهیم، برای انجام یک برنامه و یا تسک خاص چه دستور العمل هایی مرحله به مرحله باید طی شود و جزییات هر مرحله خاص به چه صورت است.

ویژگی حیاتی الگوریتم

مثال هایی از الگوریتم در زندگی روزمره

تصور کنید که یک ربات دارید که میخواهید به آن در انجام کارهای روزمره کمک کنید. .وظیفه شما این است که دستورالعمل هایی بنویسید که به او بیاموزید مرحله به مرحله چه کاری انجام دهد که در نهایت کار به درستی انجام شود. برای مثال اگر ربات شما بخواهد سوار اتوبوس شود، چای دم کند و یا حتی نیمرو درست کند، باید برای او الگوریتم های مشخصی بنویسیم. در ادامه چند نمونه از نحوه نوشتن این الگوریتم ها را آورده ایم:

الگوریتم سوار اتوبوس شدن

الگوریتم سوار اتوبوس شدن :

  1. شروع
  2. منتظر آمدن اتوبوس باش.
  3. تا رسیدن اتوبوس و ایستادن کامل آن صبر کن.
  4. بلند شو و به سمت اتوبوس حرکت کن.
  5. سوار اتوبوس شو و روی صندلی بنشین.
  6. تا رسیدن به مقصد صبر کن.
  7. بعد از رسیدن به مقصد از اتوبوس پیاده شو.
  8. پایان

این یک مثال ساده از نحوه الگوریتم نویسی برای انجام یک کار روزمره است.

الگوریتم ی دم کردن چای:

  1. شروع
  2. کتری را بردار و پر از آب کن.
  3. کتری را روی گاز بگذار و گاز را روشن کن.
  4. قوری را بردار و چای را اضافه کن.
  5. تا جوش آمدن آب صبر کن.
  6. آب جوش را داخل قوری بریز و قوری را روی کتری بگذار.
  7. بعد از 10 دقیقه چای آماده است.
  8. پایان

الگوریتم پخت نیمرو :

  1. شروع
  2. ماهیتابه را بردار و روی گاز بگذار.
  3. گاز را روشن کن.
  4. روغن را داخل ماهیتابه بریز.
  5. تخم مرغ را اضافه کن.
  6. نمک و فلفل را اضافه کن.
  7. ببعد از 5 دقیقه آماده است.
  8. گاز را خاموش کن.
  9. پایان

چالش های الگوریتم پخت نیمرو

الگوریتم در ریاضیات

الگوریتم ها در ریاضیات نیز استفاده میشوند. مفهوم الگوریتم در ریاضیات به صورت زیر است:
“مجموعه‌ای محدود (متناهی)، منظم و از پیش تعریف‌شده از اقدامات تعریف می‌شود که دنبال کردن آن‌ها به حل یک مسئله منجر می‌گردد.”

برای درک این مفهوم، می‌توان الگوریتم ها را به دو بخش اصلی تجزیه کرد:

  1. ساختار منظم و دقیق عملیات: هر الگوریتم شامل سلسله مراتبی از دستورالعمل‌های دقیق و بدون ابهام است که باید به ترتیب مشخصی اجرا شوند.
  2. هدفمندی و فرآیند ورودی/خروجی: الگوریتم‌ها برای حل یک مسئله خاص طراحی شده‌اند و دارای یک هدف مشخص هستند. آن‌ها مجموعه‌ای از ورودی‌ها را دریافت می‌کنند، عملیات محاسباتی دقیقی را بر روی آن‌ها انجام می‌دهند و در نهایت یک خروجی معین (راه حل) تولید می‌کنند.

در علوم کامپیوتر نیز، الگوریتم‌ها ها پایه و اساس حل مسئله در تمامی زمینه‌ها محسوب می‌شوند.

الگوریتم در علوم کامپیوتر

الگوریتم‌ها مجموعه‌ای از دستورالعمل‌های مرحله به مرحله هستند که به کامپیوترها نحوه انجام وظایف مشخصی را یاد می‌دهند و محور اصلی محاسبات و علوم کامپیوتر محسوب می‌شوند. آن‌ها به طور دقیق مسیر لازم برای تبدیل ورودی به خروجی مطلوب را ترسیم می‌کنند تا کامپیوتر بتواند مسئله مورد نظر را با دقت بالا حل کند.

بهینه‌سازی الگوریتم‌ها برای گرفتن یک نتیجه مطلوب یکی از دغدغه‌های اصلی در این زمینه است و نوشتن یک الگوریتم بهینه تاثیر بسزایی در کارایی یک اپلیکیشن خاص دارد.

الگوریتم‌ها انواع مختلفی دارند:

  1. قطعی (Deterministic): این الگوریتم‌ها با گرفتن ورودی یکسان، همواره خروجی یکسانی تولید می‌کنند، در واقع اجرای آن‌ها کاملاً قابل پیش‌بینی است.
  2. تصادفی (Random): این نوع الگوریتم‌ها در مراحل اجرای خود از عناصر تصادفی استفاده می‌کنند. همین مسئله ممکن است باعث تولید شدن خروجی‌های متفاوت برای ورودی‌های یکسان شود.

اگر به هوش مصنوعی علاقه دارید در دوره آموزش برنامه نویسی هوش مصنوعی خانه فناوری تهران شرکت کنید.

ویژگی های یک الگوریتم خوب

یک الگوریتم خوب  :

  • شامل مجموعه‌ای از ورودی‌ها است.
  • تعداد گام‌های محدودی دارد.
  • هر مرحله به طور دقیق مشخص شده و جزییات آن تعریف شده‌اند.
  • همان خروجیِ مطلوبی را تولید می‌کند که مد نظر ما است.

برای نوشتن یک الگوریتم خوب باید به طور همزمان دو ویژگی مهم  دیگر را نیز دنبال کرد: صحت (Correctness) و کارایی (Efficiency).

  • صحت به این معنی است که الگوریتم باید نتایج دقیق و درستی تولید کند (حداقل خطا).
  • کارایی به این معناست که الگوریتم نباید زمان محاسباتی طولانی مصرف کند تا به نتیجه نهایی برسد.

علاوه بر موارد گفته شده، ویژگی قابل درک بودن (Comprehensibility) بسیار حیاتی است؛ اگر منطق الگوریتم پیچیده و غیرقابل فهم باشد،  مجددا قابل استفاده (Reusable) نخواهد بود. در نتیجه، یک الگوریتم ایده‌آل همزمان، دقت بالا، سرعت پردازش خوب و ساختار شفاف و قابل درکی دارد.

مثال هایی از الگوریتم در برنامه نویسی

الگوریتم 1: جمع دو عدد

هدف: دریافت دو عدد و نمایش حاصل جمع آن‌ها

  1. شروع

  2. دریافت عدد اول (A)

  3. دریافت عدد دوم (B)

  4. محاسبه Sum = A + B

  5. نمایش مقدار Sum

  6. پایان

الگوریتم 2 : محاسبه میانگین سه عدد

هدف: محاسبه میانگین سه ورودی عددی

  1. شروع

  2. دریافت عدد اول (A)

  3. دریافت عدد دوم (B)

  4. دریافت عدد سوم (C)

  5. محاسبه 3 / Average = (A + B + C)

  6. نمایش مقدارAverage

  7. پایان

الگوریتم 3 : پیدا کردن بزرگ‌ترین عدد بین دو عدد

هدف: مقایسه دو عدد و نمایش عدد بزرگ‌ تر

  1. شروع

  2. دریافت عدد اول (A)

  3. دریافت عدد دوم (B)

  4. اگر A > B باشد
        ۴.۱ نمایش A

  5. در غیر این صورت
        ۵.۱ نمایش B

  6. پایان

مزایا و معایب الگوریتم ها

مزیت های الگوریتم

تا اینجا با مفهوم الگوریتم آشنا شدیم، اما بهتر است نگاهی به مزایای آن هم بیندازیم. الگوریتم‌ها نقش مهمی در حل مسائل و توسعه نرم‌افزار دارند و استفاده از آن‌ها مزایای زیادی را به همراه دارد که در ادامه به مهم‌ترین آن‌ها اشاره می‌کنیم.

الگوریتم ها مستقل از زبان برنامه‌نویس و قابل فهم هستند:

الگوریتم ها به زبان خاصی وابسته نیستند و بیشتر بر منطق حل مسئله تمرکز دارد. همچنین الگوریتم‌ها راه‌حل مسئله را به‌صورت مرحله ‌به ‌مرحله نمایش می‌دهند. همین ساختار گام ‌به ‌گام باعث می‌شود درک آن‌ها ساده‌تر شود و حتی افراد مبتدی و یا افرادی که برنامه نویسی بلند نیستند هم بتوانند این فرآیند حل مسئله را درک کنند.

دیباگ کردن و خطایابی در الگوریتم ها ساده تر است:

از آنجا که هر مرحله از الگوریتم به‌صورت مستقل و با ترتیب مشخصی تعریف می‌شود، پیدا کردن و برطرف کردن خطاها آسان‌تر خواهد بود.

در الگوریتم ها هر مسئله به چند زیرمسئله تقسیم می‌شود:

الگوریتم‌ها معمولاً به شکل یک جریان منظم نوشته می‌شوند. این ویژگی به برنامه‌نویس کمک می‌کند وظایف بزرگ را به بخش‌های کوچک‌تر تقسیم کند و در نتیجه، فرایند پیاده‌سازی ساده‌تر شود و مسیر حل مسئله از ابتدا تا انتها واضح باشد.

الگوریتم ها به حل بهتر مسئله و افزایش کارایی کمک می‌کنند:

در الگوریتم‌ها چون مسئله به بخش‌های کوچک‌تر و قابل مدیریت‌تری تقسیم می‌شود، بهینه کردن هر زیر مسئله ساده تر می‌شود. نتیجه این کار، اجرای سریع‌تر برنامه و مصرف بهینه‌تر منابع است.

الگوریتم ها مجددا قابل استفاده هستند:

یک الگوریتم خوب می‌تواند بارها در پروژه‌های مختلف مورد استفاده قرار گیرد. می‌توان آن را با مسائل جدید تطبیق داد و برای حل مسائل مشابه به کار برد.

الگوریتم زبان مشترک بین همه برنامه نویسان است:

مهم نیست شما به چه زبانی کد میزنید. الگوریتم‌ها زبان مشترکی بین برنامه‌نویسان ایجاد می‌کنند. این موضوع باعث می‌شود حتی اگر افراد به زبان های مختلفب کد بزنند، راحت‌تر کدهای یکدیگر را درک کنند.

معایب الگوریتم

با وجود تمام مزایا، الگوریتم‌ها معایبی هم دارند که در این بخش به آن ها می‌پردازیم

طراحی الگوریتم زمانبر است:

طراحی یک الگوریتم خوب چالش های خودش را دارد و باید الگوریتم را بارها امتحان و دیباگ کرد تا از درستی آن مطمئن شد. اگر یک برنامه نویس از نظر زمانی تحت فشار باشد این مسئله می‌تواند برای برایشش چالشی باشد.

استفاده از الگوریتم های ثابت، خلاقیت را کم می‌کند:

استفاده همیشگی از الگوریتم های از پیش تعیین شده خلاقیت را کم می‌کند. این مسئله ممکن است حتی باعث کاهش کسفست عملکرد برنامه نویس شود.

الگوریتم ها همیشه بهترین پاسخ را تضمین نمی‌کنند:

با وجود تمام مزیت ها و کارایی الگوریتم ها،آن ها همیشه بهترین پاسخ ممکن را تولید نمی‌کنند و گاهی اوقات لازم است از راه های خلاقانه‌ تری استفاده شود.

طراحی یک الگوریتم خوب نیاز به دانش و تجربه دارد:

طراحی الگوریتم‌های خوب و بهینه به دانش و تجربه خوبی در برنامه‌ نویسی و حل مسئله نیاز دارد و این موضوع می‌تواند برای افراد کم‌ تجربه سخت باشد.

نمایش الگوریتم های با ساختارهای پیچیده سخت است:

نوشتن الگوریتم برای مسائل پیچیده و بزرگ و یا نمایش حلقه‌ها و انشعاب‌ها گاهی سخت و غیرشفاف می‌شود.

برای آشنایی بیشتر با زبان پایتون مقاله پایتون چیست را بخوانید.

کاربرد های الگوریتم

کاربرد های الگوریتم

یک الگوریتم صحیح و بهینه کاربرد های بسیار زیادی دارد . الگوریتم ها نقش مهمی در کارایی بیشتر و تصمیم گیری بهتر دارند. در ادامه به چند نمونه از کاربرد های الگوریتم  ها می‌پردازیم:

  • صنعت و تولید: در بهینه‌سازی فرایندهای تولید،، کاهش انرژی و افزایش بهره وری استفاده می‌شوند.
  • امور مالی و سرمایه‌گذاری: برای تحلیل داده‌های مالی، پیش‌بینی بازار های مالی و کمک به تصمیم‌گیری آگاهانه سرمایه‌ گذاران استفاده می‌شوند.
  • حوزه سلامت: در پردازش تصاویر پزشکی، تشخیص بیماری‌ها و تحلیل داده‌ها مورد استفاده قرار می‌گیرند.
  • خرید و فروش:  در پیشنهاد محصولات شخصی‌سازی‌ شده و طراحی سیستم های توصیه گر، مدیریت ارتباط با مشتری و قیمت‌گذاری نقش مهمی دارند.
  • حمل‌ ونقل: درکمک به بهینه‌سازی مسیرها، کاهش مصرف سوخت و افزایش سرعت حمل و نقل به کار گرفته می‌شوند.
  • انرژی: در مدیریت و بهینه سازی مصرف انرژی و افزایش راندمان سیستم‌ها استفاده می‌شوند.
  • امنیت: در تشخیص حملات سایبری، کلاهبرداری و نفوذهای غیرمجاز و چگونگی جلوگیری از آن ها کاربرد دارند.

سوالات متداول

الگوریتم ها مجموعه‌ای از دستورالعمل‌های مرحله‌ به‌ مرحله برای حل یک مسئله هستند که پایه و اساس برنامه‌ نویسی محسوب می‌شوند.

ما از دوران کودکی از الگوریتم ها در کارهای روزمره‌ای مثل آشپزی، استفاده از وسایل نقلیه و انجام کارهای شخصی نیز استفاده کرده ایم. الگوریتم‌ها علاوه بر برنامه‌ نویسی به غیر از برنامه نویسی در کارهای روزمره نیز استفاده دارند .

یک الگوریتم خوب باید دقیق، محدود، قابل فهم، دارای ورودی و خروجی مشخص و از نظر کارایی بهینه باشد.

الگوریتم‌های قطعی همیشه خروجی یکسانی برای ورودی های یکسان  دارند، اما الگوریتم‌های تصادفی ممکن است خروجی‌های متفاوتی تولید کنند.

الگوریتم‌ها در حوزه‌هایی مثل صنعت، سلامت، امور مالی، حمل‌ونقل، امنیت، انرژی و همچنین سیستم‌های پیشنهاد دهنده کاربرد گسترده دارند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

keyboard_arrow_up