الـگـوريــتم نــويـس

وبـســايــت هر بــــــــــــــــــــرنامه نــــــــــــــــــويس

با عضويت رايگان در خبرنامه الگوريتم نويس مطالب و اخبار جديد سايت را هر هفته در ايميل خود دريافت كنيد.
صفحه اصلی آموزش الگوريتم نويسي

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

يكي از مواردي كه هر الگوريتم نويسي بايد بداند، فلوچارت است. مبحثي بسيار ساده و در عين حال كاربردي! پس به بررسي اين مطلب مي پردازيم. مطالب زير از ويكيپديا استخراج شده اند.

ادامه مطلب...
 
الگوريتم مرتب سازي حبابي
آموزش مقدماتي
نوشته شده توسط محمد حسين سعادت فر   

اين الگوريتم ساده ترين و معروف ترين الگوريتم براي مرتب سازي داده است.

فرض کنید می‌خواهیم n داده به صورت صعودی مرتب شوند. عنصر اول را با با عنصر دوم مقایسه کرده، و در صورتی که عنصر اول بزرگتر باشد باشد جای عنصر اول و دوم را عوض می‌کنیم. همین کار را با عناصر دوم و سوم انجام می‌دهیم و همینطور عناصر سوم و چهارم ، الی آخر. وقتی این کار تمام شد بزرگ‌ترین عنصر بین داده‌ها به آخر لیست می‌رسد . حالا یک بار دیگر از اول این کار را انجام می‌دهیم اما این بار تا عنصر (n -۱)ام ادامه می‌دهیم (عنصر nام در مرحله اول در جای خودش قرار گرفته). باز هم این کار را تا عنصر (n - ۲)ام تکرار می‌کنیم ، و بازهم .... تا اینکه بالاخره داده‌ها مرتب می‌شوند.

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

کلمه الگوریتم از نام ریاضیدان برجسته ایرانی, ابو جعفر محمد بن موسی الخوارزمی و به پاس خدمات ارزنده او به توسعه دانش بشری گرفته شده‌است. او اولین کسی است که علم جبر را کشف کرد.
لازم به ذکر است که کلمه الجبرا در انگلیسی نیز برگرفته از روی کتاب مشهور او, الجبر و المقابله‌است. به همین دلیل دانشمندان علم کامپیوتر او را پدر برنامه نویسی نامیده‌اند .

در اينجا دو تعريف را براي الگوريتم بيان مي‌كنيم:

 

ادامه مطلب...
 
الگوریتم بلمن-فورد
آموزش سطح متوسط
نوشته شده توسط محمد حسين سعادت فر   

الگوریتم بلمن-فورد الگوریتم پیمایش گراف است که مسئلهٔ کوتاهترین مسیر از مبدأ واحد را برای گراف‌های وزن‌داری که وزن یال‌ها ممکن استن منفی باشد حل می‌کند.

الگوریتم دَیکسترا مسئلهٔ مشابهی را در زمان اجرای کمتر حل می‌کند، اما در آن الگوریتم می‌بایست وزن یال‌ها اعداد نامنفی باشند. بنابراین در عمل الگوریتم بلمن-فورد فقط برای گراف‌هایی که یال با وزن منفی دارند استفاده می‌شود.

قبل از توضیح الگوریتم لازم به ذکر است که اگر گراف دوری با مجموع وزن منفی داشته باشد که از مبدأ قابل دست‌یابی باشد، مسئلهٔ کوتاهترین مسیر جوابی نخواهد داشت، چراکه با پیمایش آن دور به هر تعداد بار دلخواه، مسیرهایی با وزن کمتر و کمتر حاصل خواهد شد.

ادامه مطلب...
 
الگوریتم هاي مرتب سازی
آموزش مقدماتي
نوشته شده توسط محمد حسين سعادت فر   

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

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

از ابتدای علم کامپیوتر مسائل مرتب‌سازی تحقیقات فراوانی را متوجه خود ساختند، شاید به این علت که در عین ساده بودن، حل آن به صورت کارا پیچیده‌است. برای مثال مرتب‌سازی حبابی در سال ۱۹۵۶ به وجود آمد. در حالی که بسیاری این را یک مسئلهٔ حل شده می‌پندارند، الگوریتم کارآمد جدیدی همچنان ابداع می‌شوند (مثلاً مرتب‌سازی کتاب خانه‌ای در سال ۲۰۰۴ مطرح شد).

ادامه مطلب...
 
شبه‌ کد
آموزش مقدماتي
نوشته شده توسط محمد حسين سعادت فر   

شبه‌کد (به انگلیسی: pseudocode)روشی سریع،فشرده و غیر رسمی برای توضیح یک الگوریتم کامپیوتری است که از ساختارهای معمول بعضی از زبانهای برنامه نویسی استفاده میکند که برای خوانده شدن توسط انسان و نه ماشین طراحی شده است. شبه کد معمولا فاقد جزئیاتی است که انسان بتواند بدون آنها الگوریتم را بفهمد مثل تعریف متغیرها،کدهای وابسته به سیستم (سیستم عاملهای مختلف یا غیره) و زیرروالها. در شبه کدها معمولا برای راحتی از زبان محاوره معمولی یا علامتهای ریاضی نیز استفاه میکنند. هدف از استفاه از شبه کد این است که فهم آن ساده تر از زبانهای برنامه نویسی است.

 

ادامه مطلب...