Algorithm مجموعه ای از دستورالعمل ها است که برای انجام یک کار خاص طراحی شده اند. این می تواند یک فرآیند ساده، مانند ضرب دو عدد، یا یک عملیات پیچیده، مانند پخش یک فایل ویدئویی فشرده باشد.
موتور جستجو (Search Engine) از الگوریتمهای اختصاصی برای نمایش مرتبطترین نتایج جستجوی فهرست مطالب (Index) برای پرس و جو (Query) خاص استفاده میکند.
در برنامهنویسی کامپیوتر، الگوریتمها اغلب ایجاد شده به عنوان تابع (Function). این توابع به عنوان برنامه های کوچکی عمل می کنند که می توانند با برنامه (Program) بزرگتر به آنها ارجاع دهند.
برای مثال، یک تصویر در حال مشاهده برنامه کاربردی (Application) ممکن است شامل کتابخانه ای از توابع باشد که هر کدام از یک الگوریتم سفارشی برای ارائه تصویر متفاوت فرمت فایل (File Format) استفاده می کنند.
یک برنامه ویرایش تصویر ممکن است حاوی Algorithm هایی باشد که برای پردازش داده های تصویر طراحی شده اند.
نمونههایی از الگوریتمهای پردازش تصویر عبارتند از برش، تغییر اندازه، شفافسازی، محو کردن، کاهش قرمزی چشم، و بهبود رنگ.
در بسیاری از موارد، راههای متعددی برای انجام یک عملیات خاص در یک برنامه نرمافزاری وجود دارد.
بنابراین، برنالگوریتم در حوزههای گوناگون را بررسی میکنیم.
کاربرد الگوریتمها را میتوان بهطور گستردهای در حوزههای مختلف صنعتی برای بهبود کارایی، دقت و تصمیمگیری مشاهده کرد. در ادامه، برخی از کاربردهای مهم آن را آوردهایم.
- «ساخت و تولید» (Manufacturing): الگوریتمها میتوانند منظور بهینهسازی فرایندهای تولید و مدیریت «زنجیره تأمین» ( زنجیره عرضه کالا | Supply chain)، کاهش ضایعات و افزایش کارایی مورد بهرهبرداری قرار بگیرند.
- «سرمایهگذاری» (Finance): الگوریتمها را میتوان برای تحلیل دادههای مالی و انجام پیشبینیها در این زمینه بهکار برد. همچنین معاملهگران و سرمایهگذاران را در اتخاذ تصمیمهای آگاهانه یاری میکنند.
خدمات درمانی (Healthcare): الگوریتمها در پردازش و تحلیل تصاویر پزشکی، کمک به تشخیص بیماریها و غیره استفاده میشوند.
- خرده فروشی (Retail): الگوریتمهای این حوزه به منظور مدیریت ارتباط با مشتری، پیشنهادهای شخصیسازی شده محصول و بهینهسازی قیمتگذاری، مورد استفاده قرار میگیرند.
- حمل و نقل (Transportation): در حوزه حمل و نقل، الگوریتمها برای بهینهسازی مسیرها به منظور تحویل و انتقالات، کاهش مصرف سوخت و افزایش سرعت تحویل، مورد استفاده قرار میگیرند.
- انرژی: برای بهینهسازی تولید، پخش و مصرف انرژی و همچنین کاهش ضایعات و افزایش راندمان نیز از الگوریتمها استفاده میشود.
- «امنیت» (Security): Algorithm به منظور تشخیص و جلوگیری از تهدیدهای امنیتی نظیر هک، کلاهبرداری و حملات سایبری نیز بهکار میروند.
در این حوزهها و همچنین بسیاری از صنایع دیگر، الگوریتمها نقش مهمی را در خودکارسازی کارها، بهبود تصمیمگیری و افزایش راندمان و کارایی کلی را ایفا میکنند.
بهعنوان مثال، وظیفه الگوریتم تابع Max(x,y)
ممکن است این باشد که ۲ عدد را دریافت و با مقایسه آنها، مقدار بیشینه را پیدا کند. ورودیها x و y
هستند و Algorithm بهدنبال کشف بزرگترین آنها است. فهمیدن این قضیه که Algorithm بیان شده چگونه کار میکند، کار سختی نیست.
الگوریتمی که برنامه فتوشاپ برای برش پسزمینه استفاده میکند، احتمالاٌ تمامی پیکسلهای یک تصویر را پیمایش میکند تا «لبهها» (Edges) یا نواحی «کنتراست» (Contrast) – جاییکه تضاد بالایی در رنگها وجود دارد- را پیدا کند. برای این منظور نیز روشهای شناخته شدهای در پردازش تصویر وجود دارد.
Algorithm «نتفلیکس»
Algorithm «نتفلیکس» (Netflix | سرویس پخش فیلمها و سریالهای تلویزیونی)، ممکن است «دسته» (Category) ویدیوهایی که پیش از این تماشا کردهایم را با دستهبندیهای سایر فیلمهای موجود مقایسه کند، تا از این طریق، پیشنهاد یا «توصیههایی» (Recommendations) را در قالب «سیستمهای توصیهگر» به ما داشته باشد. همچنین ممکن است دادههایی که از ما در اختیار دارد را با دادههای سایر کاربران مقایسه و بر اساس فیلمهایی که آنها تماشا کردهاند، مواردی را به ما توصیه کند. باید توجه داشت که پیشبینی خروجی این الگوریتمها کمی سختتر است.
Algorithm در هوش مصنوعی
همانطور که در تعریف «Algorithm» اشاره کردیم، مجموعهای از مراحل یا گامهایی است که بهخوبی (بهطور واضحی) تعریف شدهاند و به منظور دستیابی به نتیجهای برنامهریزی شده میبایست انجام شوند. در حالت کلی، هوش مصنوعی را میتوان برنامهای کامپیوتری، مانند مرورگر فایرفاکس، مایکروسافت ورد و سایر برنامهها در نظر گرفت. بنابراین هر راهکار مربوط به «یادگیری ماشین» و هوش مصنوعی که با آن رو به رو میشویم از ابتدا با استفاده از الگوریتمها ساخته شدهاند.
الگوریتمها، کارهای مختلفی را در هوش مصنوعی و همچنین یادگیری ماشین انجام میدهند. بهطور معمول، این الگوریتمها قوانین، شرایط و روشهایی را تعریف میکنند که یک سیستم هوش مصنوعی در پردازش و تحلیل دادهها از آن استفاده میکند. این قضیه میتواند بهسادگیِ تعریف گامهایی باشد که هوش مصنوعی برای پردازش یک فاکتور میبایست انجام دهد تا فیلتر کردن تصاویر حاوی سگ (مثلاٌ) در دیتاستی که شامل صدها هزار تصویر است.
بهکمک الگوریتمهای یادگیری ماشین، حتی با داشتن ورودیهایی ناشناخته میتوانیم خروجیها را پیشبینی کنیم.
انواع مسائلی که الگوریتمهای هوش مصنوعی میتوانند حل کنند را میتوان به ۳ دسته کلی تقسیم کرد. این دستهها را در زیر، بیان کردهایم.
- «طبقهبندی» (Classification): الگوریتمهای طبقهبندی پیشبینی میکنند که یک آیتم متعلق به چه دسته یا طبقهای است. بهعنوان نمونه میتوانیم برنامهای را مثال بزنیم که «هرزنامه» (Spam) را از ایمیلها عادی تشخیص میدهد و جدا میکند.
- «رگرسیون» (Regression): این نوع الگوریتمها برای پیشبینی برچسب دیجیتال، بر اساس نحوه عملکرد یک شی بهکار میروند. بهعنوان مثال میتوانیم به استفاده از دادههای تاریخی برای پیشبینی قیمتهای بازار سهام را اشاره کنیم.
- «خوشهبندی» (Clustering): الگوریتمهای خوشهبندی بر اساس شباهتهای موجود در عملکرد اشیا، آنها را به گروههایی تقسیم میکند. بهعنوان مثال میتوانیم به الگوریتمی برای مرتبسازی معاملات مالی و جداکردن نمونههایی از تقلبهای احتمالی اشاره کنیم.
مثال هایی از Algorithm
اکنون که یادگرفتیم Algorithmچیست و همچنین با کارکرد آن آشنا شدیم، لازم است تا به منظور درک بهتر آن، مثالهایی را با هم مرور کنیم. در ادامه، مثالهای متنوعی از الگوریتمها را آوردهایم.
جمعبندی
اگر مهندس نرمافزار هستید یا اینکه قدم در راه یادگیری علم داده گذاشتهاید لازم است تا با برخی از مفاهیم این حوزه همچون «Algorithm» آشنایی داشته باشید. «Algorithm» در واقع، قلب تپنده فناوریهای بالقوه قدرتمندی همچون هوش مصنوعی محسوب میشود و برخی از افراد بهجای اینکه به آینده الگوریتمها فکر کنند، آینده را متعلق به الگوریتمها میدانند.
در این مطلب از مجله فرادرس یادگرفتیم که Algorithmچیست. همچنین تعریف، مثالها و کاربردهای آن را نیز هم در زندگی واقعی و هم در برنامههای کامپیوتری، مورد بررسی قرار دادیم. در انتها نیز تمرینهایی را بیان کردیم که با حل آنها میتوانید توانایی خود را در رابطه با این موضوع مهم بسنجید.