الگوریتم چیست؟
الگوریتم مجموعهای متناهی از دستورالعملها است، که به ترتیب خاصی اجرا میشوند و مسئلهای را حل میکنند. در ریاضیات و علوم کامپیوتر، الگوریتم دنباله ای محدود از دستورالعملهای کاملاً تعریف شدهاست که معمولاً برای حل یک کلاس از مسائل خاص یا انجام محاسبات استفاده میشود. الگوریتمها به عنوان مشخصاتی برای انجام محاسبات، پردازش دادهها، استدلال خودکار، تصمیمگیری خودکار و سایر وظایف استفاده میشوند. شیوه محاسبه معدل در مدرسه، یکی از نمونههای الگوریتم است. فلوچارت و شبه دستور روشهایی برای نمایش یک الگوریتم هستند. تفاوت هرکدام از آنها در این عکس نشان داده شده است.
تاریخچه الگوریتم و خوارزمی
خیلی از ما فکر میکنیم که الگوریتم یک بحث جدید و بدیع است که اخیراْ بوجود آمده است، اما حقیقت امر این است که الگوریتم حدوداْ ۹۰۰ سال قدمت دارد. شاید جالب باشد که بدانید واژه الگوریتم از نام یک دانشمند مشهور و پرآوازه ایرانی به نام محمد بن موسی خوارزمی گرفته شده است. او در سال ۷۸۰ میلادی در شهر خوارزم که یکی از شهرهای بزرگ ایران بود و امروزه در کشور ازبکستان قرار دارد، به دنیا آمد. او در قرن نهم بهعنوان مدیر سرای حکیمان و مرکز روشنفکران و دانشمندان بغداد انتخاب شد.
او ایدههای نوآورانه زیادی در ریاضیات، نجوم، جغرافیا و نقشه برداری ابداع کرد و کتاب تاثیرگذاری به نام در باب هنر حسابرسی هندی نوشت و ۳۰۰ سال بعد این کتاب کشف و به زبان لاتین ترجمه شد. این کتاب اعداد هندی – عربی را به غرب معرفی کرد و در نهایت جایگزین اعداد رومی عجیب و غریب شد. سیستم اعداد هندو – عربی همراه با نقطه اعشار که در کتاب خوارزمی به دقت توضیح داده شده، اساس و بنیان اعدادی هستند که امروزه در سراسر جهان استفاده میکنیم. برگردان نام خوارزمی در زبان لاتین به الگوریتمی تبدیل شد و منشا کلمه الگوریتم شد.
کتابهای خوارزمی، انقلاب بزرگی را در علوم ریاضی در غرب ایجاد کردند و نشان دادند که چگونه میتوان مسائل پیچیده را به بخشهای سادهتر تقسیم و حل کرد. در لاتین قرون وسطی، کلمه Algorismus به معنای سیستم اعداد اعشاری بود و در قرن سیزدهم این کلمه به یک کلمه انگلیسی تبدیل شد.
اما اواخر قرن نوزدهم بود که الگوریتم به معنای مجموعهای از قوانین گام به گام برای حل یک مسئله معرفی شد. در اوایل قرن بیستم آلن تورینگ، ریاضیدان و دانشمند کامپیوتر بریتانیایی از نظر تئوری بررسی کرد که چگونه یک ماشین میتواند دستورالعملهای الگوریتمی را دنبال و ریاضیات پیچیده را حل کند و در واقع روزهای آغازین عصر کامپیوتر از همین نقطه تاریخی شروع شد. آلن تورینگ در جریان جنگ جهانی دوم دستگاهی به نام Bombe ساخت که از الگوریتمهایی برای شکست کدهای دستگاه Enigma استفاده میکرد.
امروزه الگوریتم یک کلمه رایج است، با آنکه بسیاری معنای دقیق آن را نمیدانند و مطمئن نیستند که الگوریتم ها دقیقاُ چه کاری انجام میدهند. در حال حاضر، الگوریتمهای کامپیوتری همه جا حضور دارند و به ما در مسیریابی، جستجو در صفحات وب و خریدهای اینترنتی کمک میکنند. این کلمه کوچک (الگوریتم) که از ایران قرون وسطی سرچشمه گرفته است، بهتدریج در حال دگرگون کردن زندگی ماست. وقتی به کامپیوتر دستور اجرای یک کاری را میدهید، میتوانید انتخاب کنید که چگونه این کار را انجام دهد. اینجاست که الگوریتمهای کامپیوتری وارد میشوند. در برنامه نویسی کامپیوتر، اغلب الگوریتمهای مختلفی برای انجام هر وظیفهای وجود دارد.
هرکدام از الگوریتم های کامپیوتر در شرایط مختلف مزایا و معایبی دارند. یکی از معروفترین الگوریتم های کامپیوتری که در برنامه نویسی بسیار پرکاربرد است و تحقیقات زیادی در این زمینه انجام شده است، مرتب سازی مکانی است. کامپیوترها زمان زیادی را صرف مرتب کردن لیستها می کنند و در نتیجه داشتن یک الگوریتم کامپیوتری سریع و بهینه میتواند در اجرای یک برنامه بسیار موثر عمل کند. بههمین دلیل یکی از عوامل موفقیت یک برنامه در بازار جهانی این است که برنامهنویسان در برنامهنویسی از الگوریتمهایی استفاده کنند که در زمانی معقول، بهترین عملکرد را داشته باشد.