מבני נתונים ואלגוריתמים - מחברת קורס/אלגוריתמים/תכנון דינאמי/תרגילים/תת-מחרוזת משותפת ארוכה ביותר/שאלה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

הגדרה:

מחרוזת היא רצף של תווים. אם ,‏ ,‏ ו הן שלוש מחרוזות, אז:

  1. היא תת-מחרוזת של אם קיימת סדרה עולה ממש של אינדקסים כך ש לכל .
  2. היא תת-מחרוזת משותפת של ו אם היא תת-מחרוזת הן של והן של




דוגמה:

ו הן מחרוזות.

אם ו, אז:

  1. אם נקבע , אז היא תת-מחרוזת של . גם אם נקבע (כלומר עצמה), אז היא תת-מחרוזת של .
  2. אם ו, אז היא תת-מחרוזת משותפת ל ול (מבין כמה תתי-מחרוזות אפשריות).



הגדרה:

אם ו הן מחרוזות, אז היא הLCS (או longest common subsequence), אם היא הארוכה ביותר מבין תתי-המחרוזות המשותפות ל ול.

בשאלה זו עליך למצוא אלגוריתם יעיל למציאת הLCS לכל שתי מחרוזות ו:

  1. אנא תאר אלגוריתם יעיל המוצא את אורך הLCS.
  2. אנא תאר אלגוריתם יעיל המדפיס את הLCS עצמו.


שימו לב:

בכל אחד משני הסעיפים:
  1. הנח שX וY הם שני מערכים גלובליים המתארים את המחרוזות ו, בעלות האורכים ו בהתאמה.
  2. אנא הוכח נכונות תשובתך, ונתח את סיבוכיותה במונחי ו.