الگوریتم چیست؟
تعریف الگوریتم، ویژگیهای یک الگوریتم درست، مراحل طراحی الگوریتم و آشنایی با شبهکد
تعریف الگوریتم
الگوریتم (Algorithm) مجموعهای از مراحل مشخص و محدود برای حل یک مسئله است؛ مثل دستور پخت غذا: ورودی (مواد) داریم، مراحل مشخصی را طی میکنیم و به خروجی (غذا) میرسیم.
واژه الگوریتم از نام ریاضیدان ایرانی خوارزمی گرفته شده است!
ویژگیهای الگوریتم درست
- ورودی مشخص: صفر یا چند ورودی دارد
- خروجی مشخص: حداقل یک خروجی تولید میکند
- قطعیت: هر مرحله دقیق و بدون ابهام است
- محدودیت: بعد از تعداد محدودی مرحله تمام میشود (حلقه بینهایت نه!)
- اثربخشی: هر مرحله بهسادگی قابل اجراست
مثال: الگوریتم پیدا کردن بزرگترین عدد
مسئله: از لیست اعداد، بزرگترین را پیدا کن.
- بزرگترین را برابر اولین عدد بگذار
- از عدد دوم تا آخر حرکت کن
- اگر عدد فعلی از بزرگترین بزرگتر بود، بزرگترین را بهروزرسانی کن
- در پایان، بزرگترین را برگردان
این الگوریتم برای n عدد، دقیقاً n−1 مقایسه انجام میدهد — نمیشود بهترش کرد!
الگوریتم خوب چه ویژگیهایی دارد؟
| معیار | توضیح |
|---|---|
| درستی | برای همه ورودیهای معتبر، پاسخ درست میدهد |
| کارایی | زمان و حافظه معقول مصرف میکند |
| خوانایی | فهمیدن و نگهداریاش آسان است |
| تعمیمپذیری | برای مسائل مشابه قابل استفاده مجدد است |
شبهکد (Pseudocode)
شبهکد، الگوریتم را به زبان انسانی ساختیافته مینویسد؛ بدون قواعد سختگیرانه هیچ زبانی:
ALGORITHM FindMax(list)
max ← list[0]
FOR each item IN list
IF item > max THEN
max ← item
RETURN max
مزیت: قبل از کدنویسی، منطق را طراحی و بازبینی میکنیم.
مراحل حل مسئله با الگوریتم
- فهم مسئله: ورودی، خروجی و محدودیتها را مشخص کن
- طراحی: یک راهحل شبهکد بنویس (حتی کند!)
- پیادهسازی: به کد تبدیل کن
- تست: با مثالهای ساده و حالتهای مرزی چک کن
- بهینهسازی: کارایی را با Big O تحلیل و بهبود بده
نکته: همیشه اول راهحل ساده و درست بنویسید، بعد بهینه کنید. «اول کار کند، بعد سریع» — این قانون مهندسی نرمافزار است.
جمعبندی
- الگوریتم = مراحل محدود و مشخص حل مسئله
- پنج ویژگی: ورودی، خروجی، قطعیت، محدودیت، اثربخشی
- شبهکد ابزار طراحی قبل از کدنویسی است
- مسیر حل: فهم ← طراحی ← کد ← تست ← بهینه
این مبحث بخشی از دوره آموزش کامل ساختار داده و الگوریتم است.