E5.pdf

‫داده ساختارها و مبانی الگوریتمها‬
‫نیمسال‌دوم‌‪92-93‬‬
‫‌‬
‫دانشکدهی مهندسی کامپیوتر‬
‫مدرس‪‌:‬مسعود‌صدیقین‬
‫صباغیان‪ ،‬میرفندرسکی‬
‫تمرین پنجم‬
‫مسئله ‪ .1‬درخت فراگیر گلوگاهی‬
‫درخت فراگیر گلوگاهی‪ 1‬برای یک گراف وزندار‪ ،‬یک درخت فراگیر است که وزن بیشینه یال آن بین تمام درختهای‬
‫فراگیر مینیمم باشد‪.‬‬
‫‪)1‬‬
‫ثابت یا رد کنید‪ :‬هر درخت کمینهی فراگیر‪ 2‬یک درخت فراگیر گلوگاهی است‪.‬‬
‫‪)2‬‬
‫ثابت یا رد کنید‪ :‬هر درخت فراگیر گلوگاهی یک درخت کمینهی فراگیر است‪.‬‬
‫‪)3‬‬
‫| |‬
‫الگوریتمی خطی ( | |‬
‫) ارائه دهید که با گرفتن یک گراف وزندار (لیست مجاورت گراف) و عدد ‪،b‬‬
‫مشخص کند که وزن بیشینه یال در گراف درخت فراگیر گلوگاهی کمتر یا مساوی ‪ b‬هست یا نه‪.‬‬
‫‪ )4‬با استفاده از الگوریتم باال‪ ،‬الگوریتمی خطی ( | |‬
‫| |‬
‫) ارائه دهید که با دریافت یک گراف وزندار (لیست‬
‫مجاورت گراف)‪ ،‬درخت فراگیر گلوگاهی گراف را به دست آورد‪.‬‬
‫مسئله ‪ .2‬جدول برعکس‬
‫یک جدول ‪ n×n‬داریم که در هر سطر و هر ستون آن‪ ،‬دقیقا یک بار عدد ‪ 1‬و یک بار عدد ‪ -1‬آمده است‪ ،‬با این شرط که‬
‫روی قطر اصلی عددی نیست و اگر عدد موجود در خانهی سطر ‪ i‬و ستون ‪ j‬جدول را با‬
‫نشان دهیم‪ ،‬داریم‪:‬‬
‫‪ .‬الگوریتمی ارائه دهید که با جابهجا کردن تعدادی سطر با هم و تعدادی ستون با هم‪ ،‬تمام ‪ 1‬ها تبدیل به ‪ -1‬شوند و برعکس‪.‬‬
‫مسئله ‪ .3‬دنبالهی ‪de Bruijn‬‬
‫دنبالهی ‪ de Bruijn‬برای عدد ‪ n‬به یک دنبالهی حلقوی از ‪ 0‬و ‪ 1‬به طول ‪ 2n‬گفته میشود که هر دنبالهی ممکن از ‪ 0‬و‬
‫‪ 1‬به طول ‪ n‬دقیقا یک بار در آن ظاهر شده باشد‪ .‬مثال به ازای ‪ ، n=3‬دنبالهی ‪ 11111111‬یک دنبالهی ‪ de Bruijn‬است‪.‬‬
‫الگوریتمی ارائه دهید که بتواند یک دنبالهی ‪ de Bruijn‬بسازد‪( .‬راهنمایی‪ :‬یک گراف با ‪ 2n‬رأس در نظر بگیرید که هر رأس‬
‫آن نشانگر یک دنبالهی ‪ n‬بیتی باشد‪ .‬دو رأس با دنبالههای‬
‫هم متصل کنید اگر‬
‫=‬
‫و‬
‫را با یالی جهتدار به‬
‫‪).‬‬
‫‪Bottleneck Spanning Tree‬‬
‫‪Minimum Spanning Tree‬‬
‫‪1‬‬
‫‪2‬‬
‫مسئله ‪-k .4‬دستهبندی‬
‫‪ n‬گونهی جانوری ‪ a1‬تا ‪ an‬داریم که برای هر جفت آنها یک فاصله‪ ،‬به صورت زیر‪ ،‬تعریف شده است‪:‬‬
‫⇔‬
‫)‬
‫)‬
‫(‬
‫)‬
‫(‬
‫(‬
‫(‬
‫)‬
‫هر چه فاصلهی دو گونهی جانوری بیشتر باشد‪ ،‬یعنی شباهت آن دو گونه کمتر است‪ .‬میخواهیم این جانوران را در ‪k‬‬
‫دستهی ‪ c1‬تا ‪( ck‬‬
‫)‪ ،‬دستهبندی کنیم‪ .‬فاصلهی بین دو دسته جانور را‪ ،‬مینیمم فاصلهی بین تمام جفت جانورهای آن دو‬
‫)‬
‫گروه مینامیم‪:‬‬
‫(‬
‫‪ n‬شی را به نحوی در ‪ k‬دسته قرار دهید که شبیهترین جانوران در یک دسته قرار بگیرند‪ ،‬به عبارت دیگر‪ ،‬مجموع‬
‫فاصلهی بین دستهها بیشترین شود‪.‬‬
‫مسئله ‪ .5‬کوتاهترین مسیر‬
‫یک درخت با یالهای وزندار داریم‪ .‬الگوریتمی از مرتبهی زمانی | |‬
‫ارائه دهید که طول مسیر از یک رأس مشخص‬
‫به هر رأس دیگر را حساب کند‪.‬‬
‫مسئله ‪ .6‬جد بزرگ‬
‫یک درخت ریشهدار داریم‪ ،‬الگوریتمی ارائه دهید که با پیشپردازشی از مرتبهی زمانی | |‬
‫‪ ،‬در‬
‫پاسخ دهد که‬
‫آیا رأس ‪ v‬جد رأس ‪ u‬هست یا نه‪.‬‬
‫مسئله ‪ .7‬برچسبگذاری‬
‫در گراف ‪ G‬رئوس از ‪ 1‬تا ‪ n‬شمارهگذاری شدهاند‪ .‬میخواهیم برای رأسها برچسب بگذاریم‪ ،‬به طوری که برچسب هر‬
‫رأس ‪ ،u‬شمارهی کوچکترین رأسی است که مسیری از آن به ‪ u‬وجود دارد‪ .‬الگوریتمی از مرتبهی زمانی | |‬
‫برچسب گذاری ارائه دهید وقتی که‪:‬‬
‫الف) ‪ G‬گراف بیجهت است‪.‬‬
‫ب) ‪ G‬گراف جهتدار است‪.‬‬
‫برای‬
‫مسئله ‪k .8‬اُمین بهترین‬
‫الگوریتمی از مرتبهی زمانی‬
‫ارائه کنید که ‪k‬اُمین بهترین درخت پوشای کمینه را بیابید‪.‬‬
‫مالحظات‪:‬‬
‫‪ ‬توجه کنید تمرینها نمرهای را در بر نخواهند داشت و فقط جنبهی یادگیری دارند‪.‬‬
‫‪ ‬زمان برگزاری کالس حل تمرین مربوط به این تمرین متعاقبا در فروم اعالم خواهد شد‪.‬‬