مقالات رایگان

الگوریتم یا روش گام به گام و دقیق برای حل مسائل

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

واژه الگوریتم از نام ریاضی دان و ستاره شناس و جغرافی دان نامی ایرانی، ابوجعفر محمد بن موسی خوارزمی (الخوارزمی)، گرفته شده‌است.

خصوصیات یک الگوریتم

تمام الگوریتم‌ها باید شرایط و معیارهای زیر را دارا باشند:

  • ورودی:یک الگوریتم باید هیچ یا حد اقل یک پارامتر را به عنوان ورودی بپذیرد؛
  • خروجی:الگوریتم بایستی حداقل یک کمیت به عنوان خروجی (نتیجه عملیات) تولید کند؛
  • قطعیت:دستورهای الگوریتم باید با زبانی دقیق، و بی‌ابهام بیان شوند. هر دستورالعمل نیز باید انجام‌پذیر باشد. دستورهایی نظیر «مقدار ۶ یا ۷ را به x اضافه کنید» یا «حاصل تقسیم پنج بر صفر را محاسبه کنید» مجاز نیستند؛ چرا که در مورد مثال اول، معلوم نیست که بالاخره چه عددی باید انتخاب شود، و در خصوص مثال دوم هم تقسیم بر صفر در ریاضیات تعریف نشده‌است.
  • محدودیت:الگوریتم باید دارای شروع و پایان مشخصی باشد، به نحوی که اگر دستورهای آن را دنبال کنیم، برای تمامی حالت ها، الگوریتم پس از طی مراحل، خاتمه یابد. به علاوه، زمان لازم برای خاتمه الگوریتم هم باید به گونه‌ای معقول و کوتاه باشد.

عوامل مؤثر در ارائه ی یک الگوریتم

به‌طور کلی جهت ارائه ی یک الگوریتم کامل به ۵ مؤلفهٔ اصلی احتیاج داریم که عبارتند از:

  • مقادیر معلوم
  • خواستهٔ مسئله
  • عملیات محاسباتی
  • دستورهای شرطی
  • دستورهای تکرار (حلقه‌ها)

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

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

یک الگوریتم شامل دستورالعمل‌های پشت سر هم است که جهت ارائهٔ یک خروجی معتبر باید به ترتیب اجرا شوند، از این رو رعایت ترتیب در مولفه‌های اصلی نیز مؤثر است، چرا که اساساً بدون وجود خواستهٔ مسئله عملیات محاسباتی نیز وجود نخواهد داشت.

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

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

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

الگوریتم گاه دارای مراحلی است که تکرار می‌شود (در مثال آبگوشت مثلاً چند بار باید نمک زد یا آب اضافه کرد) یا در مرحله‌ای نیازمند تصمیم‌گیری است (اگر نمک کافی است دیگر نمک نمی‌زنیم، اگر کافی نیست نمک می‌زنیم).

اگر الگوریتم برای عمل مورد نظر مناسب نباشد یا غلط باشد به نتیجه مورد نظر نمی‌رسیم. مثلاً اگر الگوریتم آبگوشت را با مواد اولیه کباب انجام دهیم واضح است که به آبگوشت نمی‌رسیم.

باید بدانیم برای هر الگوریتم تعریف متغیرها و طراحی مرحله به مرحله بسیار مهم است. زیرا الگوریتم باید بداند بر روی چه متغیرهایی، چه اعمالی را انجام دهد و نتیجه را در قالب چه متغیرها یا پارامترهایی نشان دهد.

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