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

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

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

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

 

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

 

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

 

الگوریتم ها با توجه به حوزه کاری شما انواع و کاربردهای متفاوتی دارند. انواع گوناگون الگوریتم ها عبارت اند از:

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

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

 

ویژگی های یک الگوریتم استاندارد

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

 

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

 

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

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

 

مزایای استفاده از الگوریتم:

• معمولا درک موارد ساده یک الگوریتم برای همه افراد آسان است.
• در یک الگوریتم، مسئله به بخش های کوچکتر تقسیم می شود؛ بنابراین برای کاربر (به خصوص برنامه نویسان) راحت تر است که آن را به یک برنامه واقعی تبدیل کنند.
• یک الگوریتم نمایش مرحله از یک راه حل برای حل یک مسئله معین و کلان است.

معایب استفاده از الگوریتم:

• فکر کردن و نوشتن یک الگوریتم معمولا فرآیند زمان بری است و زمان زیادی را باید صرف آن کرد.
• درک بعضی از منطق های پیچیده از طریق الگوریتم می تواند کار دشواری باشد.

 

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

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

 

فلوچارت چیست ؟

فلوچارت یا همان روندنما، نموداری است که به وسیله آن یک روند سیستمی یا الگوریتم را به نمایش می گذاریم. در ساختار فلوچارت برای نمایش دادن هر مرحله، از اشکال هندسی نظیر مستطیل، لوزی، بیضی و شکل های مشابه دیگر استفاده می کنیم که هرکدام از این اشکال مفهومی را در پی دارند. به عنوان مثال بیضی نماد "شروع / پایان" و لوزی نماد "شرط گذاری" در یک الگوریتم می باشد.
همچنین از پیکان های جهت دار برای ترتیب گذاری و تعریف جریان در الگوریتم استفاده می شود که نحوه ترسیم آن ها از اهمیت بسیار بالایی برخوردار است.

 

فلوچارت چیست

 

ارتباط میان الگوریتم و فلوچارت

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

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

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

جمع بندی

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

 

 

 

 


نویسنده:

Sadegh Navid

1 مقاله

نظر

مقالات مرتبط: