الگوریتم چیست؟ بررسی معنی الگوریتم و کاربردهای آن


نویسنده:
یکشنبه 23 آذر 1399
الگوریتم

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

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

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

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

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

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

یک الگوریتم شامل تعدادی از دستورات زیر است:

  • دستورات ورودی
  • دستورات خروجی
  • دستورات محاسباتی
  • دستورات شرطی
  • دستورات تکرار

برای درک بیشتر این موضوع، در مثال زیر که در مورد درخواست آدرس ایمیل از کاربر است، توجه کنید:

  1. مرحله 1: شروع مراحل
  2. در مرحله 2: مکانی را برای ذخیره آنچه کاربر در آن تایپ می‌کند، ایجاد می‌کنیم.
  3. در مرحله 3: متغیر قبلی را پاک کرده و متغیر جدید را جایگزین می‌کنیم
  4. در مرحله 4: از کاربر می‌خواهیم آدرس ایمیل خود را وارد کند.
  5. در مرحله 5: سپس آن را در متغیر معلوم ذخیره می‌کنیم.
  6. در مرحله 6: سپس از ماشین می‌خواهیم که تشخیص دهد آیا این متغیر آدرس ایمیل هست یا خیر؟
الگوریتم چیست؟

الگوریتم‌ها چگونه کار می کنند؟

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

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

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

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

انواع الگوریتم از نظر ساختاری

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

۱- الگوریتم بازگشتی (Recursive)

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

۲- الگوریتم دینامیک (Dynamic)

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

۳- الگوریتم برگشت به عقب (Backtracking)

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

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

الگوریتم یعنی چه

۴- الگوریتم تقسیم و حل (Divide and conquer )

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

۵- الگوریتم حریصانه (Greedy)

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

همچنین: افزایش مهارت‌های برنامه‌نویسی با حل چالش در این ۷ سایت

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

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

۱- الگوریتم اضافه کردن دو عدد وارد شده توسط کاربر:

مرحله 1: شروع کنید
مرحله 2: متغیرهای num1 ، num2 و sum را اعلام کنید.
مرحله 3: مقادیر num1 و num2 را بخوانید.
مرحله 4: num1 و num2 را اضافه کنید و نتیجه را به sum اختصاص دهید.
جمع ← num1 + num2
مرحله 5: نمایش جمع
مرحله ششم: متوقف شوید


۲- بزرگترین عدد را از بین سه عدد مختلف پیدا کنید:

مرحله 1: شروع کنید
مرحله 2: متغیرهای a ، b و c را اعلام کنید.
مرحله 3: متغیرهای a ، b و c را بخوانید.
مرحله 4:
اگر a> b
اگر a> c
نمایش a بزرگترین عدد است.
اگر نه
نمایش c بزرگترین عدد است.
اگر نه
اگر b> c باشد
نمایش b بزرگترین عدد است.
اگر نه
نمایش c بزرگترین عدد است.
مرحله 5: متوقف شوید


۳- ریشه های معادله درجه دوم:

مرحله 1: شروع کنید
مرحله 2: متغیرهای a ، b ، c ، D ، x1 ، x2 ، rp و ip را اعلام کنید.
مرحله 3: محاسبه کننده را محاسبه کنید
D ← b2-4ac
مرحله 4: اگر D ≥ 0 باشد
r1 ← (-b + √D) / 2a
r2 ← (-b-√D) / 2a
r1 و r2 را به عنوان ریشه نشان دهید
اگر نه   
قسمت واقعی و قسمت نامشخص را محاسبه کنید
rp ← -b / 2a
ip ← √ (-D) / 2a
(rp+j(ip و (rp-j(ip را به عنوان ریشه نمایش دهید
مرحله 5: متوقف شوید 


۴- فاکتوریل تعداد وارد شده توسط کاربر:

 مرحله 1: شروع کنید
مرحله 2: متغیرهای n ، فاکتوریل و i را اعلام کنید.
مرحله 3: شروع متغیرها
1 ← فاکتوریل
1 ← i
مرحله 4: مقدار n را بخوانید
مرحله 5: مراحل را تکرار کنید تا i = n
فاکتوریل ← فاکتوریل * i
یک + i ← i
مرحله ششم: نمایش فاکتوریل
مرحله 7: متوقف شوید


۵- سری فیبوناچی را تا سقف 1000 پیدا کنید:

مرحله 1 : شروع کنید
مرحله 2 : متغیرها را first_term ، second_term و temp اعلام کنید.
مرحله 3 : ابتدا متغیرها را قرار دهید:
0 ← first_term
1 ← second_term
مرحله 4 : first_term و second_term را نمایش دهید.
مرحله 5 : مراحل را تکرار کنید تا second_term ≤ 1000 شود.
temp ← second_term
second_term ← second_term + first_term
first_term ← temp
Display second_term
مرحله 6 : متوقف شوید

مطالب زیر را حتما بخوانید

فونت آیکون چیست؟ معرفی فونت آیکون‌های محبوب

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

بهترین‌ فریم‌ورک‌های CSS را بشناسید

زبان برنامه‌نویسی CSS در طراحی وب زبانی است که تعیین می‌کند چگونه عناصر HTML در کنار هم، درون یک صفحه...

گیمیفیکشن چیست؟ کاربردهای گیمیفیکشن در کسب‌و‌کار

تاحالا شده بازی کنید و هنگام انجام بازی آنقدر درگیر جذابیت بازی شوید که مکان و زمان از یادتان برود!...

انواع حوزه‌های برنامه‌نویسی را بشناسید

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

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

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