ترکیبیات، الگوریتم و علوم کامپیوتر

علوم رایانه، علمی است پیرامون الگوریتم و در ارتباط زیاد با ریاضیات و مهندسی کامپیوتر می باشد

ترکیبیات، الگوریتم و علوم کامپیوتر

علوم رایانه، علمی است پیرامون الگوریتم و در ارتباط زیاد با ریاضیات و مهندسی کامپیوتر می باشد

این وبلاگ برای توزیع منابعی که سال هاست با آن ها در ارتباط هستم راه اندازی شده است تا همه بتونن از دنیای زیبای ترکیبیات و الگوریتم لذت ببرن.
ممکن است که مباحث مطرح شده در این وبلاگ در سطوح مختلفی باشد از مباحث در حد مبتدی تا سطوح پیشرفته فلذا؛ توصیه من برای دانش آموزان راهنمایی استفاده از برچست مبتدی، برای دانش آموزان دبیرستانی استفاده از برچسب متوسط و برای دانش جویان کارشناسی استفاده از برچسب پیشرفته و برای دانش جویان کارشناسی ارشد استفاده از برچسب تحقیقاتی را می باشد.
جای بجث و ارائه مرجع های مختلف باز است و بنده از نظرات و بحث های شما خوشحال خواهم شد.
انتشار مطالب این وبلاگ به هیچ عنوان مانعی ندارد.
والسلام علی من اتبع الهدی

در مورد نظریه گراف ها  کتاب های خیلی خوبی نوشته شده:


به نظرم یکی از بهترین کتاب های موجود کتاب آشنایی با نظریه گراف ها اثر وست است. کتاب وست یک اثر جامع است که ویرایش دومش برای 2002 است.

برای دانلود کتاب وست روی این لینک کلیک کنید.


کتاب دیگری که قبلا مورد  استفاده بود کتاب باندی و مورتی است. که البته در 2008 ورژن جدیدش را ارائه کردند.

کتاب قدیمی تر از آن هم کتاب ویلسون است.

  • نوید ادهم

محیط های مختلفی برای برنامه نویسی سی پلاس پلاس وجود دارد.

من دو محیط را پیشنهاد می کنم:

اولی کد بلاکس است. یک محیط متن باز که کاملا استاندارد است.

می توانید کد بلاک را از لینک زیر بردارید:


 http://www.codeblocks.org/


دومی هم محیط دو (Dev) است. میحطی که استفاده از آن راحت تر است.

می توانید آن را از لینک زیر بر دارید:


http://www.bloodshed.net/dev/index.html

  • نوید ادهم

در زمینه هوش مصنوعی بحث برنامه سازی منطق مطلب مهمی است. در مقطع کارشناسی ارشد در زمینه سیستم های هوشمند این درس ارائه می شود.


در حال حاضر فقط در دانشگاه صنعتی امیرکبیر این درس ارائه می شود.

در این درس دو بخش مورد نظر است: یکی اصول منطق که به صورت کامل نظری و مجرد است و دیگر پیاده سازی مباحث و الگوریتم های هوشمند.


برای پیاده سازی یکی از بهترین زبان ها پرولوگ است که کاملا منطبق با منطق است.

پرولوگ کلا برای منطق طراحی شده، هر چند که در زمینه پیاده سازی پایگاه داده های هوشمند هم توانایی هم دارد.



کتاب های این درس:


کتاب اصول برنامه نویسی منطق


کتاب برنامه نویسی پرولوگ برای هوش مصنوعی


پاورپوینت بخشی از قضایای کتاب منطق (تهیه شده توسط خودم)


یک فایل مفید برای آشنایی با پرولوگ


چند پاورپونت که توسط دانشجویان کارشناسی ارشد دانشگاه امیرکبیر در مورد این درس درست شده است:


بازی ها با پرولوگ (تهیه شده توسط خانم ریحانه احمدی)


ارتباط بین #C با پرولوگ (تهیه شده توسط میلاد مظفری)


فضای جستجو های گوناگون (تهیه شده توسط رحمت محمدی)



سایت های مربوط به زبان برنامه نویسی پرولوگ:


اس دبلیو آی - پرولوگ


نسخه خوبی از محیط اس دبلیو آی - پرولوگ برای دانلود و برنامه نویسی


توضیحاتی در مورد ویژوال پرولوگ

نسخه ویژوال پرولوگ برای دانلود


جی ان یو پرولوگ توضیحات و دانلود

  • نوید ادهم

دومینو بازی

۱۰
شهریور


صفحه شطرنجی 100*99 به دومینوها افراز شده است. می دانیم برای هر افراز دیگر صفحه شطرنجی به دومینوها ،دومینویی وجود دارد که در هر دو افراز مشترک است .ثابت کنید در افراز اولیه دو ستون متوالی می توان یافت که همه خانه های آن به دومینوهای افقی افراز شده باشد.

  • نوید ادهم

روش مرتب سازی ادغامی از الگوریتم تقسیم و حل (divide-and-conquer) و همچنین ادغام برای مرتب کردن داده‌ها استفاده می‌کند. در این الگوریتم مساله به چند جزء کوچک‌تر تقسیم می‌شود. هر کدوم از این قسمت‌ها رو به طور مجزا حل کرده، و با ترکیب اونها به مساله اصلی می‌رسیم. و اما طرح کلی مرتب سازی ادغام:

در این روش داده‌ها به دو قسمت مساوی تقسیم می‌شوند. و هر کدوم از این قسمت‌ها - به صورت بازگشتی - مرتب، و با ادغام آنها دادها بصورت کامل مرتب می‌شوند.اما توجه به این نکته ضروری است که اگر پس از یک بار تقسیم باز هم لیستهای ایجاد شده بزرگ باشند ، می توانیم برای هر زیر لیست مراحل بالا را دوباره انجام دهیم تا به زیر لیستهایی با تنها 1 عضو برسیم و واضح است که لیست تک عنصری خود مرتب است.


Merge sort algorithm diagram.svg.png




مرتب سازی سریع (Quick Sort) از جمله روشهای محبوب و با سرعت بالا برای مرتب کردن داده‌ها محسوب می‌شه. این روش هم مثل روش ادغام از تقسیم و حل (Divide and Conqure) برای مرتب کردن داده‌ها استفاده می‌کنه. به این ترتیب که داده‌ها رو به دو قسمت مجزا تقسیم، و با مرتب کردن اونها کل داده‌ها رو مرتب می‌کنه. برای اینکار یکی از داده‌ها (مثلاً داده اول) به عنوان محور انتخاب می‌شه. داده‌ها بر اساس محور طوری چینش می‌شن که همه داده‌های کوچک‌تر از محور سمت چپ و داده‌های بزرگ‌تر یا مساوی اون سمت راستش قرار می‌گیرن. با مرتب کردن دو قسمت به دست اومده کل داده‌ها مرتب می‌شن. در این حالت مثل روش ادغام نیازی به ادغام کردن داده‌ها نیست. چرا که قسمت سمت راست همگی از قسمت سمت چپ کوچک‌تر هستن و بالعکس. 





  • نوید ادهم

کتاب آشنایی با الگوریتم ها که توسط چهار نفر (  CLRS ) نوشته شده:


ویرایش سوم کتاب


ویرایش دوم کتاب


جستجو ها و مرتب سازی های تدریس شده:

جستجوی خطی، جستجوی دودویی، مرتب سازی انتخابی، مرتب سازی درجی، مرتب سازی حبابی


جزوه

  • نوید ادهم


در هر خانه از یک جدول مستطیلی یک عدد طبیعی نوشته شده است. در هر مرحله می توان یک واحد از تمامی اعداد یک ستون کم کرده و یا تمام اعداد یک سطر را دو برابر کنیم. آیا همواره می توان تمام اعداد درون جدول را صفر کرد؟

  • نوید ادهم

اگر n یک عدد فرد باشد و اعداد 1 تا 2n بر روی تخته نوشته شده باشد. در هر مرحله دو تا از اعداد را انتخاب کرده و تفاضل آن ها را به جای آن دو عدد بر روی تخته می نویسیم.

آیا در نهایت می توان به عدد صفر رسید؟


  • نوید ادهم

اکسترمال 4

۲۸
ارديبهشت
جزوه اکسترمال از سایت المپیاد رشد که ترجمه فصل سوم کتاب استراتژی های حل مسئله است. به همراه اصل کتاب در زیر آمده است:



  • نوید ادهم

جاده های خاکی

۰۵
ارديبهشت

در یک استان 1000 شهر وجود دارد که بین هر دو شهری دقیقا یک مسیر خاکی وجود دارد. ثابت کنید دولت می تواند بعضی از جاده ها را آسفالت کند به طوری که به هر شهر فرد تا جاده آسفالت وصل باشد.


راه حل: 

  • نوید ادهم