دنیای برنامه نویسی |
|||
پنج شنبه 28 دی 1391برچسب:الگوریتم,الگوریتم چیست؟, الگوریتم چه کاربردی دارد؟, :: 17:11 :: نويسنده : Professor of Computer
الگوریتم چیست؟؟؟؟؟
در کل به مجموعه ای از دستور العمل ها و فرمول هایی که با زبان رسا و دقیق به همراه جزئیات لازم و به صورت مرحله به مرحله به گونه اجرا شده باشند که هد خاصی را دنبال کنند و شروع و پایان آنها نیز مشخص باشد، الگوریتم گفته میشود.کلمه الگوریتم از نام ریاضیدان برجسته ایرانی, ابو جعفر محمد بن موسی الخوارزمی و به پاس خدمات ارزنده او به توسعه دانش بشری گرفته شدهاست. او اولین کسی است که علم جبر را کشف کرد.
در اينجا دو تعريف را براي الگوريتم بيان ميكنيم: ۱- مجموعهای خاص از روال منطقی و یا ریاضی ساده و خوب تبیین شده میباشد که میتواند در حل یک مسئله مشخص کمک کند. الگوریتم دستورالعملی برای یافتن پاسخ درست یک مساله سخت به وسیله شکستن آن مساله به مراحل ساده و آسان میباشد .
مثلا اين جوك معروف را در نظر بگيريد: مي دوني يک فيل را چطوري با سه حرکت مي گذارند توي يخچال؟ اول در يخچال را باز مي کنند، بعد فيل را مي گذارند توش، بعد هم در يخچال را مي بندند. شايد جواب اين جك ظاهرا يك الگوريتم باشد، اما اينطور نيست چون ويژگي دوم يعني قابل اجرا بودن را ندارد.
خصوصیات یک الگوریتمتمام الگوریتمها باید شرایط و معیارهای زیر را دارا باشند:
منشاء واژهٔ الگوریتمواژهٔ الگوریتم از نام دانشمند ایرانی، محمد ابن موسی خوارزمی، گرفته شده است. کتاب معروف الجبر و المقابله خوارزمی که حاوی دستورالعملهای مختلف برای حل مسائل محاسباتی است، از راه ترجمه به زبان اسپانیایی در اروپا شناخته شد و نام عربی او، الخوارزمی، (از طریق آوانگاری آن در زبان اسپانیایی و سپس ورود آن به دیگر زبانهای اروپایی) مترادف شد با «دستورهای حل مسائل». نقش الگوریتمها در علوم رایانهدر علوم رایانه، یک الگوریتم را یک روال محاسباتی خوشتعریف میدانند، که مقدار یا مجموعهای از مقادیر را به عنوان ورودی (Input) دریافت کرده و پس از طی چند گام محاسباتی، ورودی را به خروجی (Output) تبدیل میکند. بجز این، الگوریتم را ابزاری برای حل مسائل محاسباتی نیز تعریف کردهاند. ساخت و طراحی الگوریتم مناسب در مرکز فعالیتهای برنامهسازی رایانه قرار دارد. یک برنامه رایانهای، بیان یک یا چند الگوریتم با یک زبان برنامهنویسی است. مفهوم الگوریتممفهوم الگوریتم را معمولاً با تشبیه به دستور آشپزی توضیح میدهند. مثلاً اگر بخواهیم آبگوشت درست کنیم (عمل مورد نظر) با فرض اینکه مواد خام را داریم (حالت اولیه) مراحل مشخصی را باید طبق دستور آشپزی طی کنیم (دستورالعملها) تا به آبگوشت آماده (حالت پایانی) برسیم. البته الگوریتمها معمولاً پیچیدهتر از این هستند. الگوریتم گاه دارای مراحلی است که تکرار میشود (در مثال آبگوشت مثلاً چند بار باید نمک زد یا آب اضافه کرد) و یا در مرحلهای نیازمند تصمیمگیری است (اگر نمک کافی است دیگر نمک نمیزنیم، اگر کافی نیست نمک میزنیم). اگر الگوریتم برای عمل مورد نظر مناسب نباشد و یا غلط باشد به نتیجه مورد نظر نمیرسیم. مثلاً اگر الگوریتم آبگوشت را با مواد اولیه کباب انجام دهیم واضح است که به آبگوشت نمیرسیم. باید بدانیم برای هر الگوریتم تعریف متغیر ها و طراحی مرحله به مرحله بسیار مهم است. زیرا الگوریتم باید بداند بر روی چه متغیر هایی، چه اعمالی را انجام دهد و نتیجه را در غالب چه متغیر ها یا پارامتر هایی نشان دهد. تحلیل الگوریتممعمولاً برای حل یک مسئله، روشها و الگوریتمهای گوناگونی وجود دارند؛ یک الگوریتم ممکن است عمل مورد نظر را با دستورات مختلف در مدت زمان و یا کار کمتر یا بیشتری نسبت به الگوریتم دیگر انجام دهد. به همین دلیل، انتخاب الگوریتم مناسب و کارا اهمیت زیادی در موفق بودن و کارایی برنامه رایانهای دارد. الگوریتمها به عنوان یک فناوری مطرح هستند و دانشمندان آنها را طراحی، تحلیل، و مطالعه میکنند. تحلیل الگوریتمها رشتهای است که به بررسی کارایی الگوریتمها میپردازد. تحلیل الگوریتمها یعنی پیشبینی منابع مورد نیاز برای اجرای یک الگوریتم، همچون: حافظه، پهنایباند ارتباطی، سختافزار، و از همه مهمتر، زمان. کارایی یا پیچیدگی هر الگوریتم را با تابعی نشان میدهند که تعداد مراحل لازم برای اجرای الگوریتم را برحسب طول داده ورودی، یا میزان محلهای لازم حافظه را بر حسب طول داده ورودی نشان میدهد. جنبه حقوقیدر بعضی کشورها، مثل آمریکا اگر تعبیه فیزیکی الگوریتمی ممکن باشد (برای مثال، یک الگوریتم ضرب که میشود آن را در واحد محاسبهٔ یک ریز پردازنده تعبیه کرد) میشود آن الگوریتم را به ثبت رساند نظرات شما عزیزان:
سلام
دنیای من برنامه نویسیه. انشاءا... وبلاگ پرباری داشته باشی به منم سر بزن(البته به برنامه نویسی ربطی نداره) مشکلی داشتی رو من حساب کن
آخرین مطالب آرشيو وبلاگ پيوندها
![]() نويسندگان |
|||
![]() |