HW5.pdf

‫ساختمان دادهها و الگوریتمها‬
‫نیم سال دوم ‪93-92‬‬
‫دانشکده مهندسی کامپیوتر‬
‫تمرین پنجم‬
‫مدرس‪ :‬دکتر بیگی‬
‫تاریخ تحویل‪ 1 :‬تیر‬
‫سوال ‪.1‬‬
‫گراف سادهی )‪ G(V,E‬را در نظر بگیرید‪ .‬وزن همهی یالهای این گراف نامنفی است‪ .‬میدانیم که ‪M‬‬
‫زیردرختی فراگیر و وزندار با کمترین وزن در این گراف است‪ .‬همچنین میدانیم که ‪ P‬کوتاهترین مسیر بین‬
‫دو راس ‪ v‬و ‪ u‬است‪ .‬حاال فرض کنید به جای وزن هر یال‪ ،‬مجذور وزن آن را قرار دهیم‪ ،‬مثال اگر وزن یالی ‪3‬‬
‫بوده‪ ،‬وزن آن را ‪ 9‬قرار میدهیم‪.‬‬
‫الف – آیا در گراف جدید‪ ،‬همان ‪ P‬قبلی لزوما کوتاهترین مسیر بین ‪ v‬و ‪ u‬است؟‬
‫ب‪ -‬آیا در گراف جدید همان ‪ M‬قبلی لزوما زیردرخت فراگیر با کمترین وزن است؟‬
‫در هر مورد اگر جواب مثبت است‪ ،‬آن را اثبات کنید و اگر جواب منفی است یک مثال نقض ارائه دهید‪.‬‬
‫سوال ‪.2‬‬
‫فرض کنید )‪ G= (V,E‬یک گراف جهتدار بدون دور است و ‪ K‬بیشترین تعداد یالهای موجود در هر مسیر‬
‫از ‪ G‬میباشد‪ .‬الگوریتمی طراحی کنید که راسها را در حداکثر ‪ K+1‬گروه افراز کند که برای هر دو راس ‪w‬‬
‫و ‪ v‬در یک گروه هیچ مسیری از ‪ v‬به ‪ w‬یا از ‪ w‬به ‪ v‬موجود باشد‪ .‬زمان اجرای الگوریتم را بدست آورید‪.‬‬
‫سوال ‪.3‬‬
‫زمان اجرای سه الگوریتم فلوید‪-‬وارشال‪ ،‬بلمن‪-‬فورد و دایکسرا را بر روی گراف همبند‪ ،‬مسطح و بدون جهت‬
‫با وزنهای مثبت برای یافتن کوتاهترین مسیر بین تمام رئوس مقایسه کنید‪.‬‬
‫سوال ‪.4‬‬
‫مهره اسب شطرنج بر روی یکی از خانههای صفحه قرار دارد‪ .‬قصد داریم مسیری را بیابیم تا این مهره با دقیقاً‬
‫یکبار عبور از تمام خانههای صفحه به جایگاه اولیهاش برگردد‪ .‬الگوریتمی برای یافتن چنین مسیری ارائه‬
‫دهید و پیچیدگی محاسباتی آن را تحلیل نمائید‪.‬‬
‫سوال ‪.5‬‬
‫حمید و پویا میخواهند با هم بازی کنند‪ .‬این بازی با استفاده از ‪ m‬رشته است و طی آن کلمهای ساخته‬
‫میشود که در ابتدا تهی است‪ .‬هر کسی در نوبت خود یک حرف انتخاب کرده و به انتهای رشته میافزاید‪ ،‬به‬
‫صورتی که کلمهی ساختهشده همواره پیشوند حداقل یکی از ‪ m‬رشتهی موجود باشد‪ .‬کسی که نتواند حرکتی‬
‫انجام دهد‪ ،‬بازنده است‪ .‬پویا از شما میخواهد تا الگوریتمی کارا ارائه دهید تا به او کمک کند که در صورت‬
‫وجود استراتژی برای بردن آن را بیابد‪ ( .‬الگوریتم خود را تحلیل کنید)‬
‫سوال ‪.6‬‬
‫در برخی سیستمهای ارزی مشکلی وجود دارد که یک شخص بدون انجام کار مفید و تنها با مبادلهی ارزها‬
‫میتواند سرمایهی خود را زیاد کند‪ .‬مثال اگر بتوان با ‪ 1‬دالر ‪ 49‬روپیه هند خرید‪ ،‬با یک روپیه بتوان دو ین‬
‫ژاپن خرید و با یک ین بتوان ‪ 0.0107‬دالر خرید‪ ،‬میتوان با یک دالر کار را شروع کنیم و سپس ‪ 49‬روپیه‬
‫بخریم و بعد از آن ‪ 98‬ین ژاپن و سپس ‪ 1.0486 = 0.0107*98‬دالر بخریم و سود به دست بیاوریم‪ .‬تعداد‬
‫‪ N‬نوع ارز مختلف ‪ c1, c2,…, cn‬داریم‪ .‬یک جدول هم داریم که اگر در محل تقاطع سطر ‪ i‬و ستون ‪j‬ام آن‬
‫عدد حقیقی ‪ k‬نوشته شدهباشد‪ ،‬یعنی با ‪ 1‬واحد از ارز ‪ i‬میتوانیم ‪ k‬واحد از ارز ‪j‬ام بخریم‪ .‬الگوریتمی ارائه‬
‫دهید که مشخص کند در سیستم موجود چنین مشکلی وجود دارد یا خیر و اگر میتوان سودی بدین شکل‬
‫بدست آورد‪ ،‬دنبالهی ارزهایی که ما را به این سود میرساند چاپ کند‪.‬‬