Generic selectors
Exact matches only
Search in title
Search in content
Menu


الگوریتم چیست؟ (به همراه چند مثال ساده از کاربرد الگوریتم ها)


اهداف و انتظارات آموزشی متمم در این درس
کد درس: ۶۱۹۱۳
از دوستان عزیز متممی انتظار می‌رود پس از مطالعه درس الگوریتم
  • بتوانند مفهوم الگوریتم را توضیح دهند.
  • اگر قبلاً با الگوریتم های Sort (مرتب سازی) آشنا نبوده‌اند، کمی در خلوت خود برای فکر کردن به‌ آنها بر اساس سوال مطرح شده در درس وقت بگذارند.
  • بتوانند چند مورد از الگوریتم های رایج را نام ببرند.
فشار ذهنی هنگام مطالعه
نیاز به مشارکت شما
کسب و کار
زندگی
تعریف الگوریتم به همراه چند مثال از الگوریتمهای ساده ریاضی و برنامه نویسی

همه‌ی ما – حتی کسانی که تا کنون برنامه نویسی نکرده‌اند – می‌دانیم که کامپیوترها و سیستم‌های کامپیوتری برای انجام هر کاری نیاز به برنامه (Program) دارند.

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

 به این تعریف گام به گام یک عملیات، طراحی الگوریتم (Algorithm) گفته می‌شود. 

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

تفاوت برنامه نویسی با الگوریتم نویسی و طراحی الگوریتم چیست؟

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

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

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

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

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

این نکته‌ای است که در درس نظم شخصی هم تحت عنوان روتین‌های شخصی به آن اشاره کردیم.

[ درس مرتبط: روتین شخصی چیست و چرا اهمیت دارد؟ ]

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

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

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

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

برای اینکه کمی پیچیدگی‌های طراحی الگوریتم را – حتی در همین مثال ساده – تجربه کنید، می‌توانید دو حالت زیر را به صورت جداگانه در نظر بگیرید:

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

پیشنهاد عضویت در متمم

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

  فهرست درس‌های متمم

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

  دوره MBA (یادگیری منظم درس‌ها)

  استراتژی | کارآفرینی | مدل کسب و کار | برندسازی

  فنون مذاکره | مهارت ارتباطی | هوش هیجانی |تسلط کلامی

  توسعه فردی | مهارت یادگیری | تصمیم گیری | تفکر سیستمی

  کوچینگ | مشاوره مدیریت | کار تیمی | کاریزما

  عزت نفس | زندگی شاد | خودشناسی | شخصیت شناسی

  مدیریت بازاریابی | دیجیتال مارکتینگ | سئو | ایمیل مارکتینگ

اگر با فضای متمم آشنا نیستید و دوست دارید درباره‌ی متمم بیشتر بدانید، می‌توانید نظرات دوستان متممی را درباره‌ی متمم بخوانید و ببینید متمم برایتان مناسب است یا نه. این افراد کسانی هستند که برای مدت طولانی با متمم همراه بوده و آن را به خوبی می‌شناسند:

روش نمایش الگوریتم ها

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

وقتی الگوریتم‌ها پیچیده‌تر می‌شود از فلوچارت (Flowchart) برای نمایش آن‌ها استفاده می‌شود. فلوچارت در زبان فارسی به روندنما ترجمه شده است.

نمونه یک فلوچارت یا روندنما برای نمایش الگوریتم

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

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

در اینجا چند خط برنامه جنریک (یا برنامه سمبلیک) را برای نمایش یک الگوریتم مشاهده می‌کنید:

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

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

معمولاً آموزش الگوریتم را با الگوریتم های مرتب کردن (اصطلاحاً: Sorting) آغاز می‌کنند.

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

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

در اینجا تنها از چند نمونه نام می‌بریم و در درس‌های دیگر بسته به نیاز، بحث مربوط به الگوریتم‌ها را بازتر خواهیم کرد:

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

  در شکل کلی‌تر، الگوریتم‌های پیشنهاددهنده که در بسیاری از نرم‌افزارها از جمله شبکه های اجتماعی و خرده فروشی های دیجیتال (مثل آمازون و دیجی کالا)‌ دائماً از آنها استفاده می‌کنیم (یا آنها از ما استفاده می‌کنند).

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

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

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

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

اگر با بحث الگوریتم‌ها آشنا هستید، چه نکات دیگری به ذهن‌تان می‌رسد که مناسب می‌دانید برای دوستان خود که به تازگی با این مفهوم آشنا شده‌اند مطرح کنید؟

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

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

سری مطالب حوزه سواد دیجیتال

سوال‌های پرتکرار دربارهٔ متمم

متمم چیست و چه می‌کند؟

متمم مخففِ عبارت «محل توسعه مهارتهای من» است: یک فضای آموزشی آنلاین برای بحث‌های مهارتی و مدیریتی.

برای کسب اطلاعات بیشتر می‌توانید به صفحهٔ درباره متمم سر بزنید و فایل صوتی معرفی متمم را دانلود کرده و گوش دهید.

فهرست دوره های آموزشی متمم را کجا ببینیم؟

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

هم‌چنین در صفحه‌های دوره MBA و توسعه فردی می‌توانید با دوره های آموزشی متمم بیشتر آشنا شوید.

هزینه ثبت نام در متمم چقدر است؟

شما می‌توانید بدون پرداخت پول در متمم به عنوان کاربر آزاد عضو شوید. اما به حدود نیمی از درسهای متمم دسترسی خواهید داشت. پیشنهاد ما این است که پس از ثبت نام به عنوان کاربر آزاد، با خرید اعتبار به عضو ویژه تبدیل شوید.

اعتبار را می‌توانید به صورت ماهیانه (۱۶۰ هزار تومان)، فصلی (۴۲۰ هزار تومان)، نیم‌سال (۷۵۰ هزار تومان) و یکساله (یک میلیون و ۲۰۰ هزار تومان) بخرید. لطفاً برای اطلاعات بیشتر به صفحه ثبت نام مراجعه کنید.

آیا در متمم فایل های صوتی رایگان هم برای دانلود وجود دارد؟

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

هم‌چنین دوره های صوتی آموزشی متنوعی هم در متمم وجود دارد که فهرست آن‌ها را می‌توانید در فروشگاه متمم ببینید.

با متمم همراه شوید

آیا می‌دانید که فقط با ثبت ایمیل و تعریف نام کاربری و رمز عبور می‌توانید به جمع متممی‌ها بپیوندید؟

سرفصل‌ها  ثبت‌نام  تجربهٔ متممی‌ها

۴۱ نظر برای الگوریتم چیست؟ (به همراه چند مثال ساده از کاربرد الگوریتم ها)

    پرطرفدارترین دیدگاه به انتخاب متممی‌ها در این بحث

    نویسنده‌ی دیدگاه : شهرزاد راسخ

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

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

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

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

    در کل، مانند مثال قشنگی که متمم زد، به نظر من اگر بتونیم عادت کنیم که با مدل ذهنی یک برنامه نویس، برای هر تصمیمی که میخواهیم بگیریم یا برای حل هر مسئله ای که در زندگیمون باهاش روبرو هستیم، یک الگوریتم طراحی کنیم؛ این میتونه به ما کمک کنه که تصمیم گیری یا حل مسئله برامون راحت تر بشه.

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

     
    تمرین‌ها و نظرات ثبت شده روی این درس صرفاً برای اعضای متمم نمایش داده می‌شود.
    .