0% found this document useful (0 votes)
9 views3 pages

Answer-Assignment3- Data Structure and Algorithm Design

Answer-Assignment3- Data Structure and Algorithm Design

Uploaded by

kasra.re138406
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views3 pages

Answer-Assignment3- Data Structure and Algorithm Design

Answer-Assignment3- Data Structure and Algorithm Design

Uploaded by

kasra.re138406
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

‫بسمه تعالی‬

‫ساختمان دادهها و طراحی الگوریتم ها‬


‫تمرین شماره سه‬

‫دانشجویان گرامی‪ ،‬ضمن آرزوی موفقیت‬

‫لطفا با دقت موارد زیر را مطالعه کرده و در تهیه پاسخنامه نهایی تمرین رعایت فرمائید‪.‬‬

‫پاسخنامه تمرینات به صورت دست نویس‪ ،‬نهایتا در قالب یک فایل ‪ pdf‬باید ارسال گردد‪ .‬نام فایل را به صورت‬
‫‪( StudentNumber_HW3.pdf‬به عنوان مثال ‪ )9831055_HW3.pdf‬از طریق سامانه ‪ courses.aut.ac.ir‬در بازه زمانی‬
‫تعیین شده ارسال نمائید‪.‬‬

‫در توصیف الگوریتم ها می توانید از هر زبان برنامه نویسی دلخواه همچون ‪ Python ،Java ،C‬و یا شبه کدها استفاده نمائید‪ .‬اما توجه‬
‫نمائید که در صورت استفاده از داده ساختارهای پیچیده مانند انواع درخت ها‪ ،‬یا انواع داده ای غیرپایه ‪1‬باید هزینه های مربوط به آنها نیز‬
‫در تحلیل پیچیدگی الگوریتم درنظر گرفته شود‪.‬‬

‫در صورت نیاز به راهنمایی یا بروز هر گونه مشکلی می توانید از ایمیل ‪ [email protected]‬استفاده کنید یا از طریق‬
‫تلگرام با تدریسیاران درس در ارتباط باشید‪.‬‬

‫آخرین مهلت ارسال تمرین شماره سه تا ساعت ‪ ۸‬صبح جمعه ‪ ۱۸‬آبان می باشد‪.‬‬

‫در صورت تاخیر در ارسال پاسخنامه‪ ،‬به ازای هر روز تاخیر ‪ %۲۰‬از نمره تمرین کسر خواهد شد‪.‬‬

‫هرگونه شباهت در کل یا بخشی از پاسخنامهها فارغ از اینکه از چه منبعی تهیه شده باشند‪ ،‬به عنوان عدم رعایت حق کپی‬
‫رایت لحاظ خواهد شد و نمره بین تمامی نسخه های مشابه تقسیم خواهد شد‪.‬‬

‫پاسخنامه نهایی باید به صورت شخصی و با بیان و ادبیات شخصی تهیه شده و منحصربفرد باشد‪ .‬لذا کلیه دانشجویانی که به‬
‫صورت مشترک اقدام به حل مساله ها مینمایند و یا بخشی از پاسخها را از اینترنت یا سایر منابع تهیه میکنند‪ ،‬بعد از‬
‫فراگیری کامل راهحل‪ ،‬به صورت انفرادی اقدام به تهیه پاسخنامه نمایند‪.‬‬

‫موفق باشید‬

‫سواالت تشریحی‪:‬‬

‫‪ -1‬شبه کد تابعی را بنویسید که اولین گره یک لینک لیست یک طرفه را ورودی میگیرد و اولین گره "لینک لیست وارون‬
‫)‪ (reverse‬شده آن" را خروجی میدهد‪ .‬زمان اجرا تابع شما باید از )‪ O(n‬و حافظه از )‪ O(1‬باشد‪ .‬وارون لینک لیست یعنی‬
‫هر گره به گره قبلی خود‪ ،‬در صورت وجود‪ ،‬اشاره کند و شروع )‪ (begin‬لینک لیست جدید‪ ،‬پایان )‪ (end‬لینک لیست قدیمی‬
‫باشد‪ ۲۵( .‬امتیاز)‬

‫‪1‬‬
‫‪Non-Primitive Data types‬‬
‫بسمه تعالی‬

‫ساختمان دادهها و طراحی الگوریتم ها‬


‫تمرین شماره سه‬

‫راه حل‪:‬‬

‫‪node* reverse (node* list_begin):‬‬


‫‪if list_begin->next != NULL:‬‬
‫)‪node* newHead = reverse(list_begin->next‬‬
‫‪list_begin->next->next = list_begin‬‬
‫‪return newHead‬‬
‫‪else:‬‬
‫‪return list_begin‬‬

‫‪ -2‬گراف ‪ G‬با ‪ n‬راس و ‪ m‬یال در اختیار داریم‪ ،‬الگوریتمی برای پیدا کردن یک دور فرد‪ ،‬در صورت وجود‪ ،‬در زمان اجرایی‬
‫)‪ O(m+n‬پیدا کنید‪ ۲۵( .‬امتیاز)‬

‫راه حل‪:‬‬
‫بر روی گراف از یک راس دلخواه الگوریتم ‪ BFS‬را اجرا میکنیم‪ .‬در صورتی که در یک طبقه از ‪ BFS‬دو راس مجاور باشند‬
‫(بین آن ها یالی وجود داشته باشد)‪ ،‬دور فردی پیدا کردهایم‪ ،‬به این صورت که یال بین این ‪ ۲‬راس و مسیر آن ها تا اولین جد‬
‫مشترکشان (در درخت ‪ )BFS‬یک دور فرد تشکیل میدهد‪.‬‬
‫اگر چنین یالی وجود نداشته باشد آنگاه گراف دوبخشی بوده و دور فرد ندارد‪.‬‬
‫زمان اجرایی)‪O(n+m‬‬

‫‪ -3‬کشوری با ‪ n‬شهر و ‪ m‬جاده دو طرفه داریم هر جاده دو شهر را به هم متصل می کند در این کشور دزدی زیاد شده است و‬
‫هدفمان دستگیری دزد ها است برای همین می توانیم در یک شهر پلیس قرار دهیم و یک شهر امن است اگر و تنها اگر‬
‫پلیسی وجود داشته باشد که آن پلیس بتواند با عبور از جاده ها به شهر مدنظر برسد از آنجایی که قرار دادن پلیس در هر شهر‬
‫هزینه دارد می خواهیم با کمترین هزینه ممکن همه شهر های کشور را امن کنیم حداقل به چند پلیس نیاز داریم برای یک‬
‫کشور که به ما داده شده است‪ .‬سوال باید در )‪ O(n+m‬حل شود‪ ۲۵( .‬امتیاز)‬

‫راه حل‪:‬‬
‫کافی است کشور را به صورت یک گراف بدون جهت در نظر بگیریم و تعداد مولفه های گراف را بدست آوریم‪.‬‬
‫مولفه‪ :‬مجموعه ای از راس ها در یک مولفه اند اگر وتنها اگر از هر کدام به دیگری مسیری وجود داشته باشد‪.‬‬
‫یک آرایه به اندازه ‪ n‬از ‪ ۰‬و ‪ ۱‬در نظر می گیریم و از شهر ‪ ۱‬شروع کرده تا شهر ‪ n‬پیش می رویم هر کدام از راس هایی را که‬
‫رویشان حلقه انداختیم اگر از قبل مقدار آرایه برای آن شهر که گرفتیم ‪ ۱‬باشد کاری نمی کنیم در غیر این صورت از آن شهر‬
‫‪ dfs‬می زنیم و وارد هر راسی که شدیم مقدار آرایه مربوط به آن راس را ‪ ۱‬می کنیم و در انتها یک واحد به جواب می افزاییم‬
‫این الگوریتم تعداد مولفه ها را بدست می آورد که همان جواب سوال است‪.‬‬
‫بسمه تعالی‬

‫ساختمان دادهها و طراحی الگوریتم ها‬


‫تمرین شماره سه‬

‫‪ -4‬کشوری وجود دارد با ‪ n‬شهر و ‪ m‬جاده دو طرفه که هر کدام از جاده ها دو شهر را به هم متصل می کنند‪.‬‬
‫گروهی از دزدان پس از دزدی از موزه که در شهر ‪ ۱‬قرار دارند می خواهند به فرودگاه که در شهر ‪ n‬است برسند و از آنجا‬
‫کشور را ترک کنند‪ .‬پلیس به دنبال آنها است پس باید در عبور از جاده ها مراقب باشد در این شهر ‪ m‬جاده وجود دارد که از‬
‫این ‪ m‬جاده ‪ k‬تایشان تحدنظر پلیس اند دزد ها می دانند اگر از بیشتر یکی از این جاده ها استفاده کنند پلیس مشکوک می‬
‫شود و دستگیرشان می کند فرض کنیم دزد ها نقشه کشور و همه جاده هایی که تحدنظر پلیس می باشند را می دانند از‬
‫طرفی می خواهند با کمترین زمان به فرودگاه برسند پس باید از کمترین تعداد جاده عبور کنند‪ .‬حال از شما می خواهند که‬
‫حداقل تعداد جاده را که باید بپیمایند تا به فرودگاه برسند و پلیس آن ها را دستگیر نکنند به آن ها بدهید تضمین می شود‬
‫همیشه راهی وجود دارد‪ .‬الگوریتم شما باید در )‪ O(n+m‬اجرا شود‪.‬‬
‫توجه ‪ :‬ممکن است مسیری انتخابی اصال شامل هیچ جاده تحدنظر پلیس نباشد یا تنها یک جاده تحدنظر پلیس باشد‪.‬‬
‫(‪ ۲۵‬امتیاز)‬

‫راه حل‪:‬‬
‫با استفاده ار الگوریتم ‪ bfs‬و بدون در نظر گرفتن جاده های تحدنظر از راس ‪ ۱‬و ‪ n‬الگوریتم ‪ bfs‬را اجرا می کنیم و فاصله‬
‫همه راس ها را از راس ‪ ۱‬و ‪ n‬به دست می آوریم حال اگر از جاده های تحدنظر استفاده نکنیم کمترین فاصله را بدست‬
‫آوردیم در غیر این صورت روی تمام یال های تحدنظر می رویم و فرض می کنیم از راس ‪ ۱‬با کمترین تعداد جاده های‬
‫معمولی به یک سمت یال رسیده باشیم و از سمت دیگر به راس ‪ n‬رسیده باشیم با بررسی تمام این ‪ k2‬حالت و حالتی که در‬
‫ابتدا مطرح شد به جواب سوال می رسیم که چون دو تا ‪ bfs‬و یک حلقه روی یال های تحدنظر زدیم پس الگوریتم از‬
‫)‪ O(n + k + m‬است چون ‪ k‬کمتر مساوی ‪ m‬است پس از )‪ O(n + m‬می باشد‪.‬‬

‫موفق باشید‬

You might also like