الگوریتم‌ها و ساختمان‌های داده (Algorithms and data structures)

نویسنده Amir Shahbazzadeh, قبل از ظهر 00:15:42 - 10/11/11

« زبان‌های برنامه سازی , Programming Languages | نظریه محاسبات (Computation Theory) »

0 اعضا و 1 مهمان درحال دیدن موضوع.

Amir Shahbazzadeh

با سلام در خصوص الگوریتم‌ها و ساختمان‌های داده (Algorithms and data structures) باید به 3 نکته که در ادامه مبحث بیان می شود توجه کرد...

ON2-META4U.jpg96px-Sorting_quicksort_anim.gif96px-Singly_linked_list.png

1-آنالیز الگوریتم‌ها
2-الگوریتم
3-ساختمان داده

Amir Shahbazzadeh

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

Amir Shahbazzadeh

الگوریتم یا خوارزمی مجموعه‌ای متناهی از دستورالعمل‌ها است، که به ترتیب خاصی اجرا می‌شوند و مسئله‌ای را حل می‌کنند. به عبارت دیگر یک الگوریتم، روشی گام به گام برای حل مسئله است. شیوه محاسبه معدل در مدرسه، یکی از نمونه‌های الگوریتم است.
۱ -خصوصیات یک الگوریتم
۲- ریشه واژهٔ الگوریتم
۳ -نقش الگوریتم‌ها در علوم رایانه
۴ -مفهوم الگوریتم
۵ -تحلیل الگوریتم‌
۶- جنبه حقوقی

خصوصیات یک الگوریتم

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

    ورودی: یک الگوریتم باید هیچ یا چندین پارامتر را به عنوان ورودی بپذیرد؛
    خروجی: الگوریتم بایستی حداقل یک کمیت به عنوان خروجی (نتیجه عملیات) تولید کند؛
    قطعیت: دستورات الگوریتم باید با زبانی دقیق، و بی‌ابهام بیان شوند. هر دستورالعمل نیز باید انجام‌پذیر باشد. دستورهایی نظیر «مقدار ۶ یا ۷ را به x اضافه کنید» یا «حاصل تقسیم پنج بر صفر را محاسبه کنید» مجاز نیستند؛ چرا که در مورد مثال اول، معلوم نیست که بالاخره چه عددی باید انتخاب شود، و در خصوص مثال دوم هم تقسیم بر صفر در ریاضیات تعریف نشده‌است.
    محدودیت: الگوریتم باید دارای شروع و پایان مشخصی باشد، به نحوی که اگر دستورات آن را دنبال کنیم، برای تمامی حالات، الگوریتم پس از طی مراحل شمارا و متناهی خاتمه یابد. به علاوه، زمان لازم برای خاتمه الگوریتم هم باید به گونه‌ای معقول، کوتاه باشد.

ریشه واژهٔ الگوریتم

واژه الگوریتم از نام ریاضیدان و ستاره شناس و جغرافی دان نامی مسلمان، ابوجعفر محمد بن موسی خوارزمی(الخوارزمی)، گرفته شده است، که در خوارزم زاده شد و در دانشگاه «بیت الحکمه» بغداد به اوج شهرت رسید. خوارزم یکی از شهرهای «ایران بزرگ» بود، که امروزه در ازبکستان واقع شده است و خیوه نام دارد. رساله ای که خوارزمی در قرن ۹ میلادی به عربی نگاشته بود، در قرن 12 به لاتین با نام "Algoritmi de numero Indorum" ترجمه شد؛ یعنی "[کتابی بدست]«الگوریتمی» در مورد اعداد هندی"، که «الگوریتمی» نام الخوارزمی بود که مترجم آن را در تبدیل به لاتین چنین آورده بود. در قرن ۱۳ میلادی واژه الگوریسموس(algorismus) به معنای «سیستم شمارش عربی(دهدهی)» (یعنی اعداد ۱ تا ۹ به علاوه صفر، و نیز مفهوم اعشار) بود؛ که هنوز هم یکی از معانی واژه الگوریسم(algorism) است. معنای دیگر الگوریسم «حساب کردن با کمک اعداد عربی» است؛ یعنی فن انجام أعمال حسابی پایه، مانند جمع و ضرب، با قرار دادن اعداد در زیر هم و إعمال قواعدی خاص، که جایگزین به کارگیری اعداد رومی و استفاده از چرتکه شد. حتی روش انجام دستی تقسیم و جذر گرفتن(رادیکال) هم الگوریسم نامیده می شود. در قرن ۱۹ این کلمه در فرانسوی به algorithme تغییر شکل پیدا کرد، البته معنایش ثابت ماند. طولی نکشید که این کلمه به شکل algorithm وارد زبان انگلیسی شد؛ ولی فقط در اواخر قرن ۱۹ میلادی بود که معنای عام تر امروزی اش را یافت، و به «هر مجموعه قواعدی برای انجام یک رویه محاسباتی یا روال کامپیوتری به کار رود» الگوریتم گفته شد.

تبدیل نام الخوارزمی به الگوریسم و سپس الگوریتم احتمالا تحت تأثیر واژه یونانی arithmos (به معنای عدد) و arithmetic (به معنای محاسباتی) بوده است. برخی منابع هم کلمه لگاریتم را هم در تبدیل الگوریسم و الگوریتم بی تأثیر ندانسته اند.

نقش الگوریتم‌ها در علوم رایانه

در علوم رایانه، یک الگوریتم را یک روال محاسباتی خوش‌تعریف می‌دانند، که مقدار یا مجموعه‌ای از مقادیر را به عنوان ورودی (Input) دریافت کرده و پس از طی چند گام محاسباتی، ورودی را به خروجی (Output) تبدیل می‌کند. بجز این، الگوریتم را ابزاری برای حل مسائل محاسباتی نیز تعریف کرده‌اند. ساخت و طراحی الگوریتم مناسب در مرکز فعالیت‌های برنامه‌سازی رایانه قرار دارد. یک برنامه رایانه‌ای، بیان یک یا چند الگوریتم با یک زبان برنامه‌نویسی است.

مفهوم الگوریتم

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

الگوریتم گاه دارای مراحلی است که تکرار می‌شود (در مثال آبگوشت مثلاً چند بار باید نمک زد یا آب اضافه کرد) و یا در مرحله‌ای نیازمند تصمیم‌گیری است (اگر نمک کافی است دیگر نمک نمی‌زنیم، اگر کافی نیست نمک می‌زنیم).

اگر الگوریتم برای عمل مورد نظر مناسب نباشد و یا غلط باشد به نتیجه مورد نظر نمی‌رسیم. مثلاً اگر الگوریتم آبگوشت را با مواد اولیه کباب انجام دهیم واضح است که به آبگوشت نمی‌رسیم.

باید بدانیم برای هر الگوریتم تعریف متغیرها و طراحی مرحله به مرحله بسیار مهم است. زیرا الگوریتم باید بداند بر روی چه متغیر هایی، چه اعمالی را انجام دهد و نتیجه را در غالب چه متغیرها یا پارامتر هایی نشان دهد.

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


معمولاً برای حل یک مسئله، روش‌ها و الگوریتم‌های گوناگونی وجود دارند؛ یک الگوریتم ممکن است عمل مورد نظر را با دستورات مختلف در مدت زمان و یا کار کمتر یا بیشتری نسبت به الگوریتم دیگر انجام دهد. به همین دلیل، انتخاب الگوریتم مناسب و کارا اهمیت زیادی در موفق بودن و کارایی برنامه رایانه‌ای دارد. الگوریتم‌ها به عنوان یک فناوری مطرح هستند  و دانشمندان آنها را طراحی، تحلیل، و مطالعه می‌کنند. تحلیل الگوریتم‌ها رشته‌ای است که به بررسی کارایی الگوریتم‌ها می‌پردازد. تحلیل الگوریتم‌ها یعنی پیش‌بینی منابع مورد نیاز برای اجرای یک الگوریتم، همچون: حافظه، پهنای‌باند ارتباطی، سخت‌افزار، و از همه مهمتر، زمان.[۶] کارایی یا پیچیدگی هر الگوریتم را با تابعی نشان می‌دهند که تعداد مراحل لازم برای اجرای الگوریتم را برحسب طول داده ورودی، یا میزان محل‌های لازم حافظه را بر حسب طول داده ورودی نشان می‌دهد.

جنبه حقوقی

در بعضی کشورها، مثل آمریکا اگر تعبیه فیزیکی الگوریتمی ممکن باشد (برای مثال، یک الگوریتم ضرب که می‌شود آن را در واحد محاسبهٔ یک ریز پردازنده تعبیه کرد) می‌شود آن الگوریتم را به ثبت رساند.

Amir Shahbazzadeh

ساختمان داده‌ها (به انگلیسی: Data Structure) از جملهٔ بنیادی‌ترین مباحث مورد نیاز جهت یادگیری و درک بسیاری از مفاهیم عمده در علوم رایانه است.

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

Data_structures-meta4u.jpg

موارد زیر از جمله مهمترین ساختمان داده‌ها هستند:

* آرایه (Array)
*صف (Queue)
*پشته (Stack)
* لیست پیوندی (Linked list)
* گراف (Graph)
*درخت (Tree)

جعبه متن
ویکی پدیا

Tags:

Share via facebook Share via linkedin Share via telegram Share via twitter Share via whatsapp

https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
بررسی لایه پیوند داده ها در شبکه *Data Link Layer*

نویسنده Zohreh Gholami در مقالات کامپیوتر, Computer Articles

0 ارسال
6167 مشاهده
آخرین ارسال: بعد از ظهر 17:31:24 - 10/02/11
توسط
Zohreh Gholami
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
مقاله ای جامع درباره پایگاه داده ها "Data base"

نویسنده Zohreh Gholami در مقالات کامپیوتر, Computer Articles

2 ارسال
9383 مشاهده
آخرین ارسال: بعد از ظهر 14:41:30 - 10/25/11
توسط
Zohreh Gholami
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
دانلود جزوه درسی پایگاه داده ها (بانک های اطلاعاتی)

نویسنده Zohreh Gholami در دانلود سنتر بخش کامپیوتر

0 ارسال
3741 مشاهده
آخرین ارسال: قبل از ظهر 08:23:43 - 12/19/11
توسط
Zohreh Gholami
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
اتصال خورجینی در ساختمان‌های اسكلت فلزی

نویسنده Zohreh Gholami در مقالات عمران

0 ارسال
1966 مشاهده
آخرین ارسال: بعد از ظهر 15:00:03 - 09/03/11
توسط
Zohreh Gholami
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
نحوه صرفه‌جویی انرژی در ساختمان‌های هوشمند

نویسنده آژیرسنترال در مطالب جالب ،خواندنی و آموزنده

0 ارسال
1108 مشاهده
آخرین ارسال: بعد از ظهر 12:32:52 - 03/29/18
توسط
آژیرسنترال
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
الگوریتم md5

نویسنده mohammad a در زبان های برنامه نویسی

3 ارسال
2467 مشاهده
آخرین ارسال: بعد از ظهر 13:27:13 - 12/25/11
توسط
ali22
https://www.meta4u.com/forum/Themes/Comet/images/post/clip.png
مدیریت پایگاه داده ها با دانلود MySQL

نویسنده Hooman Ghayouri در سایر نرم افزار ها, Other Softwares

2 ارسال
2221 مشاهده
آخرین ارسال: بعد از ظهر 17:10:41 - 06/02/14
توسط
Amir Shahbazzadeh