Challenger

المپیاد کامپیوتر , الگوریتم , برنامه نویسی , ترکیبیات , گراف , ....

Challenger

المپیاد کامپیوتر , الگوریتم , برنامه نویسی , ترکیبیات , گراف , ....

Challenger
طبقه بندی موضوعی
پیوندهای روزانه

بزرگ‌ترین زیردنباله مشترک

يكشنبه, ۱۶ بهمن ۱۳۹۰، ۱۱:۳۲ ق.ظ

Longest common subsequence

شرح مساله(ویکی پدیا) :

دو رشته زیر را در نظر بگیرید:


S_{1}=ACCGGTCGAGTGCGCGGAGCCGGCCGAA\,\!


S_{2}=GTCGTTCGGAATGCCGTTGCTCTGTAAA\,\!

هدف مقایسه این دو رشته و پیدا کردن شباهت بین آنها است. بزرگترین زیردنباله مشترک این طور تعریف می‌شود که دنباله‌ای مانند S_{3} است به طوری که حروف موجود در S_{3} با حفظ ترتیب در S_{1} و S_{2} موجود باشد. اما مطلقاً لزومی ندارد که متوالی باشد. از طرفی S_{3} باید بزرگترین دنباله ممکن با خواص بالا باشد. به طور کلی اگر دو رشته X=\langle x_{1},x_{2},... ,x_{n}\rangle و Y=\langle y_{1},y_{2},... ,y_{n}\rangle را در نظر بگیریم٫ یک بلندترین زیر دنباله مشترک را می‌توان با استفاده از برنامه نویسی پویا پیدا کرد.

شرح الگوریتم: الگوریتم LCS الگوریتمی برای یافتن بزرگترین زیر دنباله مشترک بین دو دنباله است که با بهره گیری از برنامه ریزی پویا اجرا می شود . این الگوریتم از O ی m*n است ....
فرض کنید دو رشته به صورت a و b  با طول های n و m داریم و ai یعنی کاراکتر i ام رشته a .

آرایه LCS را به این صورت تعریف می کنیم که هر خانه i,j از ارایه نشان گر اندازه بزرگتین زیر دنباله مشترکی باشد که میتوان تنها با استفاده از i کاراکتر اول رشته a و j کاراکتر اول رشته b ساخت .
هر خانه i,j را می توان با توجه با خانه های کوچکتر به دست آور به صورتی که
اگر ai=bj طول بزرگترین زیر دنباله مشترک i,j برابر با طول بزرگترین زیر دنباله مشترک i-1,j-1 به اضافه ی 1 است .
و اگر  ai != bi طول بزرگترین زیر دنباله مشترک آنها برابر با ماکسیمم طول بزرگترین زیر دنباله i-1,j و i,j-1 است .
در نهایت مقدار خروجی برابر با مقدار درایه n,m از آرایه LCS است .
 
کد الگوریتم ( سی پلاس پلاس ) http://snipt.net/JahanaraCo/lcs-1
موافقین ۸ مخالفین ۱ ۹۰/۱۱/۱۶
محمد مهدی جهان آرا

برنامه ریزی پویا

نظرات  (۲)

۰۵ دی ۹۱ ، ۲۰:۳۸ سامان دهستانی
salam.fekr konam soale 1 emrooz ba in soale yekam shabahat dasht .
:)

پاسخ:
نه با این زیاد شبیه نبود

در واقع سوال این بود :

پاسخ پرسش CF-197-C

برای جستجوی شما - الگوریتمی بنویسیدکه برای دانشجویان 91 یک دانشکده ریاضی نام وشماره دانشجویی وتعدادورودی رادریافت کرده وبرای هردانشجونمره وتعدادواحدهردرس رادریافت ومعدل رامحاسبه کندودرپایان میانگین معدل دانشکده وبیشترین وکم ترین معدل دانشکده رابه همراه شماره دانشجویی آن هاچاپ کند

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی