الگوریتمستان

برنامه‌نویسی، طراحی الگوریتم و حل مسئله‌های الگوریتمی

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

پیمایش گراف

»

مسئله

پل اردوش (اردیش - Paul Erdős) ریاضیدان مشهور و برجسته‌ی قرن بیستم است که تا پایان عمر خود تلاش گسترده‌ای برای انتشار مقالات علمی داشت و همکاری با وی در انتشار مقاله یک افتخار بزرگ برای هر ریاضیدان محسوب می‌گردد.

با توجه به آنکه همکاری با ایشان برای هر کس ممکن نبود، تلاش می‌کردند با نفراتی در انتشار مقاله‌ی علمی همکاری کنند که با این دانشمند بزرگ مقاله داشتند. این رویکرد باعث پدید آمدن عدد اردوش (Erdős number) یا فاصله‌ی همکاری اردوش شد؛ یعنی برای نویسندگانی که به صورت مستقیم با ایشان همکاری داشتند عدد 1 و برای کسانی که با این نفرات مقاله داشتند عدد 2 نسبت داده شد و ارتباطات دورتر نیز به همین ترتیب با اعداد طبیعی بعدی مشخص شدند.

ادامه ...

الگوریتم جستجوی اول عمق (Depth First Search - DFS) الگوریتمی مشابه الگوریتم جستجوی اول سطح (BFS) برای پیمایش گراف است. این دو الگوریتم خواص و کاربردهای مشترک بسیاری دارند و تفاوت اصلی در این است که در هر تکرار الگوریتم DFS تنها یکی از گره‌های مجاور گره پردازش شده برای مرحله‌ی بعد انتخاب می‌شود. به این ترتیب، الگوریتم DFS به جای صف از یک پشته برای مشخص کردن مسیر پیمایش استفاده می‌کند.

ادامه ...

مسئله

ساختمان جدید دپارتمان مهندسی کامپیوتر تنها شامل آسانسور بوده و پله ندارد. برای دسترسی سریع و مناسب به اتاق‌ها و کلاس‌های طبقات مختلف، آسانسورها به گونه‌ای تنظیم شده‌اند که تنها در طبقات مشخصی توقف داشته باشند؛ مثلا تعدادی تنها در طبقات زوج و تعدادی دیگر تنها در طبقات فرد. دکمه‌های داخل آسانسور و کنار ورودی آسانسور نیز تنها برای همین طبقات از پیش مشخص شده فعال هستند. این ایده دسترسی سریع و مناسب به طبقات ساختمان را برای برخی افراد فراهم می‌کند. به عنوان نمونه اعضای هیئت علمی دسترسی مستقیم به طبقات اتاق‌های خود دارند. اما در حالت کلی باعث سردرگمی می‌شود. اگر شخصی بخواهد از طبقه‌ای به طبقه‌ی دیگری برود، ممکن است هیچ آسانسوری در هر دوی آنها توقف نداشته باشد و شخص مجبور به تعویض آسانسور گردد. در چنین شرایطی این سوال پیش می‌آید که کدام آسانسور (یا آسانسورها) باید انتخاب شوند و کدام انتخاب‌ها شخص را در زمان کمتری به مقصد می‌رساند. اگر مسیر حرکت شخص از طبقه‌ی i به طبقه‌ی j به صورت $ i = f_1 \rightarrow f_2 \rightarrow f_3 \rightarrow \cdots \rightarrow f_k = j $ نمایش داده شود، عبارت $ \sum_{r=1}^{k-1} \vert f_i - f_{i+1} \vert $ زمان لازم برای رسیدن به مقصد از طریق آن مسیر است. برنامه‌ای بنویسید که افراد را در استفاده‌ی بهتر (در زمان کمتر) از آسانسورها یاری کند.

ادامه ...

الگوریتم پیمایش اول سطح یا جستجوی اول سطح (Breadth First Search - BFS) از جمله الگوریتم‌های مشهور پیمایش و جستجوی گراف است که در حل مسائل الگوریتمی و هوش مصنوعی کاربرد دارد. این الگوریتم برای پیمایش و جستجوی گراف از یک صف برای نگهداری ترتیب جستجو استفاده می‌کند.

الگوریتم BFS با وارد کردن گره مبدأ به صف پردازش شروع شده و تا خالی نشدن این صف مراحل زیر را تکرار می‌شود:

1- عنصر جلوی صف را به عنوان گره جاری انتخاب و از صف حذف کن.

2- گره جاری را پردازش کن.

ادامه ...

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

ادامه ...

الگوریتمستان در تلگرام

   

 

پیوند کوتاه:
»  دوره‌ی طراحی و تحلیل الگوریتم دانشگاه استنفورد
ویدئوهای آموزشی دوره‌ی Algorithms: Design and Analysis دانشگاه استنفورد با زیرنویس انگلیسی
برچسب‌ها
#الگوریتم‌های عقبگرد #صف #ترجمه‌ی فارسی سوالات UVa Online Judge #آمادگی المپیاد کامپیوتر #مسأله‌های برنامه‌نویسی #کتاب مسابقات برنامه‌نویسی #الگوریتم‌های تقسیم و غلبه #منبع آموزشی #الگوریتم #آمادگی مسابقه برنامه‌نویسی #وبلاگ #سوالات برنامه‌نویسی #مسابقه برنامه نویسی #الگوریتم‌های مرتب‌سازی #گراف #مسابقات برنامه‌نویسی #سوالات UVa Online Judge #نمونه سوال فارسی مسابقات ACM #تمرین طراحی الگوریتم #جستجوی اول عمق #مسئله‌های الگوریتمی #الگوریتم‌های برنامه‌نویسی پویا #جستجوی اول سطح #مسأله‌های الگوریتمی #حل مسئله‌‌ی الگوریتمی #الگوریتم فلوید-وارشال #آموزش طراحی الگوریتم #حل سوالات Timus Online Judge #آموزش برنامه‌نویسی ++C #الگوریتم‌های حریصانه #مسابقه برنامه‌نویسی #تمرین مسابقه برنامه‌نویسی #مسئله‌های برنامه‌نویسی #الگوریتم دایکسترا #سوالات مسابقات ACM-ICPC #آموزش ساختمان داده‌ها #تمرین المپیاد کامپیوتر #مسابقات برنامه‌نویسی ACM #دانلود کتاب #الگوریتم‌های کوتاهترین مسیر #الگوریتم‌های مسیریابی #نکات برنامه‌نویسی #کتابخانه قالب استاندارد ++C #نمونه سوال مسابقه ACM #Python #پیمایش گراف #درخت‌ها #محاسبات ریاضی #الگوریتم‌های گراف #مسئله‌ی کوله‌پشتی #ساختمان داده #نمونه سوال فارسی مسابقات برنامه‌نویسی #سوالات چالشی برنامه‌نویسی #تکنیک‌های طراحی الگوریتم #درخت پوشا #سوالات مسابقات برنامه‌نویسی بیان #نمونه سوال فارسی مسابقه‌ی ACM #ترجمه‌ی فارسی سوالات برنامه‌نویسی #آمادگی مسابقه ACM #حل سوالات مسابقات برنامه‌نویسی #کتاب الکترونیکی #ترجمه فارسی سوالات کتاب Programming Challenges #نمونه سوالات مسابقه برنامه‌نویسی #حل سوالات ACM-ICPC #حل سوالات UVa Online Judge #برنامه‌نویسی ++C #کتاب الگوریتم #ویدئوی آموزشی #تمرین مسابقه‌ی برنامه‌نویسی ای‌سی‌ام #آموزش الگوریتم #ماتریس #معرفی وب‌سایت #الگوریتم‌های بازگشتی #ترجمه‌ی فارسی سوالات ACM #برنامه‌نویسی