بلند ترين زير دنباله مشترك Longest common subsequence (LCS)
About DNA دی ان ای مولکولی است که دستورهای ژنتیکی مورد استفاده در توسعه و عملکرد تمام موجودات زنده شناخته شده و بسیاری از ویروسها را کدگذاری میکند. دی ان ای اسید نوکلئیکی است که شامل پروتئین و کربوهیدراتها میباشد. اسیدهای نوکلئیک از سه ماکرو مولکول اصلی تشکیل شده اند که برای زندگی همه گونههای شناخته شده ضروری میباشد. اکثر مولکول دی ان ای از دو رشته پلیمری زیستی تشکیل میشوند که به صورت حلقه دور هم پیچ خورده و به شکل یک مارپیچ دوگانه درآمده اند.
About DNA هر نوکلئوتید از یک باز آلی، گوانین (G)، یا سیتوزین (C)، یا از یک قند مونوساکاریدی به نام دئوکسی ریبوز و یک گروه فسفات تشکیل شده است. نوکلئوتیدها به وسیله پیوند کوالانسی به صورت زنجیرهای به هم متصل میشوند، نوکلئوتیدها از محل قند یک نوکلئوتید با فسفات نوکلئوتید دیگر پیوند ایجاد کرده و ساختاری شبیه ستون فقرات (رشته بلند) قند و فسفاتی را ایجاد میکنند.
About DNA در هر کروموزوم واحدهای توارثی منفردی بهنان ژن هست. حامل اصلی اطلاعات وراثت محسوب میشود. همه مولکولهای دیاناِ ترکیب شیمیائی واحدی دارند. بهسبب ویژگیهای ساختاری این بازها، همواره A با T و G با C جفت میشود. این بازها بهترتیبهای گوناگون در طول رشته قرار میگیرند و این ترتیب، همان رمز توارث است. آرایشهای گوناگون بازها، تنوع بسیار به دیاناِ از جهت پیامهای وراثتی (ژنتیک) میدهد.
About DNA همین چهار باز تعیینکننده ویژگیهای همه جانداران هستند و اینکه جاندار پرنده بشود یا ماهی یا شیر یا انسان، ناشی از آرایش این بازها است. G : گوانین C : سیتوزین A : آدنین T : تیمین
بلند ترين زير دنباله مشترك Longest common subsequence (LCS) در كاربرد هاي بيولوژي ، وقتيكه ميخواهيم DNA دو ارگان متفاوت را با هم مقايسه كنيم، ميتوانيم از مفهوم بلند ترين زير دنباله مشترك استفاده نماییم. يك رشته DNA شامل يك دنباله اي از مولكول هائي است كه به آنها Base ميگويند. برخي از اين Base ها عبارتند از , Guanine, Cytosine, Thymine Adenine هركدام از اين Base ها با حرف اول خود نشان داده ميشوند. بعنوان مثال {A, G, C, T } ميتواند يك رشته DNA باشد.
بلند ترين زير دنباله مشترك Longest common subsequence (LCS) یک هدف مقایسه دو رشته DNA پیدا کردن میزان شباهت بین آنها است. این شباهت را میتوان از جمله به یکی از سه روش زیر پیدا کرد: الف - اگر با حد اقل تعداد تغییرات روی base ها ، یک رشته به رشته دیگر تبدیل گردد. ب - اگر یک رشته زیر دنباله رشته دیگر باشد.
بلند ترين زير دنباله مشترك Longest common subsequence (LCS) ج – برای دو رشته S1, S2 ، رشته جدیدی مانند S3 پیدا کنید بطوریکه، base های S3 در S1 و S2 ظاهر شوند ، اما ترتیب حضور این base ها در S1 و S2 باید همان ترتیب حضور در S3 باشد. طبق تعریف، عناصر یک زیر دنباله در لیست میتوانند دقیقا بطور متوالی ظاهرنشوند. هر چقدر رشته S3 طولانی تر باشد ، شباهت بیشتری بین S1 و S2 وجود دارد.
بلند ترين زير دنباله مشترك Longest common subsequence (LCS)
بلند ترين زير دنباله مشترك Longest common subsequence (LCS)
بلند ترين زير دنباله مشترك (LCS)
چكونه ميتوانيم LCS دو رشته را پيدا كنيم يك راه حل بنظر ساده ولي غير معقول اين است كه ابتدا كليه زير دنباله هاي موجود در رشته X را پيدا كنيم سپس ببينيم كدام يك از اين زير دنباله ها در Y وجود دارند و از بین زیر دنباله هائی که درY وجود داشتند، آن زير دنباله اي را انتخاب كنيم كه بلند ترين طول را دارد.
چكونه ميتوانيم LCS دو رشته را پيدا كنيم
چكونه ميتوانيم LCS دو رشته را پيدا كنيم (Optimal sub-structure) است که باعث میشود بتوانیم آنرا به زیر مسئله های کوچکتر تقسیم کنیم. این زیر مسئله ها مربوط میشوند به ذوج پیشوند های (Prefixes) دو دنباله ورودی.
مدل داده ليست List Data Model
چكونه ميتوانيم LCS دو رشته را پيدا كنيم تعریف پیشوند:
بلند ترين زير دنباله مشترك (LCS)
چكونه ميتوانيم LCS دو رشته را پيدا كنيم (Optimal sub-structure) است که باعث میشود بتوانیم آنرا به زیر مسئله های کوچکتر تقسیم کنیم.
قضيه : زير ساختار بهينه براي يك LCS
يك راه حل بازگشتي براي پيدا كردن LCS
يك راه حل بازگشتي براي پيدا كردن LCS
يك راه حل بازگشتي براي پيدا كردن LCS
بلند ترين زير دنباله مشترك Longest common subsequence (LCS) بطور كلي اگر دو رشته X = ( x1, x2, … xm) و Y = (y1,y2, … , yn) را در نظر بگيريد. يك بلند ترين زير دنباله مشترك را ميتوان با استقاده از روش برنامه نويسي ديناميك پيدا كنيم. Dynamic Programming
الگوريتم زير طول يك LCS را به روش برنامه نويسي ديناميك حساب ميكند برای حل این مسئله ابتدا دو آرایه بنام های C[0..m, 0..n] و b[1..m, 1..n] را مقدار دهی می کنیم. این مقدار دهی به روش row-major انجام میشود.
الگوريتم زير طول يك LCS را به روش برنامه نويسي ديناميك حساب ميكند
الگوريتم زير طول يك LCS را به روش برنامه نويسي ديناميك حساب ميكند
How to construct array c and array b
How to construct array c and array b
How to construct array c and array b
عناصر تشكيل دهنده LCS را چگونه بدست آوريم
How to find the LCS using arrays c and b
عناصر تشكيل دهنده LCS را چگونه بدست آوريم در این مثال ، الگوریتم بازگشتی زیر با مقادیر i = 7 & j = 6 فراخوانی میشود. یعنی آرایه b از گوشه سمت راست پائین پردازش میشود.
عناصر تشكيل دهنده LCS را چگونه بدست آوريم اين الگوريتم بازگشتي ، دنباله Z = < B C B A > را بعنوان بلند ترين زير دنباله مشترك دو دنباله زیر چاپ ميكند. توجه کنید که چون الگوریتم بازگشتی است، دستوالعمل print وقتی عمل میکند که به حالت مبنا برسیم. پس از رسیدن به مبنا، مقادیر به ترتیب از اولین حالت بعد از مبنا تا به انتها چاپ میشوند. در نتیجه، ما ترتیب درست مقادیر LCS را دریافت میکنیم. X = < A B C B D A B > , Y= < B D C A B A > زمان اجراي اين الگوريتم O(mn) است. در مثال فوق m = 7, n = 6
Garbage Collection
تعريف مفهوم Garbage Collection
تعريف مفهوم Garbage Collection
تعريف مفهوم Garbage Collection در عمل برنامه نویسان هیچ گرهی را آزاد نمی کنند، بلکه تنها علامت فیلد mark bit را عوض میکنند. وقتیکه سیستم نتواند حافظه مورد نیاز را برای یک تقاضای تخصیص حافظه (malloc) تامین نماید (یعنی عدم وجود حافظه آزاد) ، برنامه ای بنام Garbage collection اجرا میشود. این برنامه با چک کردن mark bit همه گره ها، گره هائی که باید آزاد شوند را پیدا کرده و فضای آنها را آزاد میکند. این فضای آزاد شده به فضای حافظه قابل دسترس اضافه میشود.
تعريف مفهوم Garbage Collection چون حافظه کافی برای نسبت دادن به تقاضای تخصیص حافظه ایجاد شده است.
پایان فصل