การจัดการขั้นตอนวิธี ของ ขั้นตอนวิธีของเฮิร์ชเบิร์ก

เพื่อที่จะเข้าใจขั้นตอนวิธีของเฮิร์ชเบิร์กมันสำคัญมากที่จะต้องเข้าใจระยะทางที่ถูกแก้ไขสามารถคำนวณโดยใช้วิธีการปริภูมิเชิงเส้น (Linear space)

เราจะนิยามโปรแกรมย่อยไปข้างหน้า(Forward subprogram) ซึ่งคำนวณค่าของ Edit(Prefix[x,i],Prefix[y,j]) สำหรับทุกๆ i และ j คล้ายขั้นตอนวิธีของนีดเดิ้ลแมน – วันช์ และคืนค่า array{Edit(x,Prefix[y,j])}0 ≤ j ≤ m อีกส่วนหนึ่งที่เราจะนิยามคือโปรแกรมย่อยถอยหลัง(Backward subprogram) ซึ่งคล้ายกับโปรแกรมย่อยไปข้างหน้าแต่จะทำโปรแกรมแบบพลวัติ (dynamic program) จะสลับทิศทางกัน โดยจะเริ่มจากซ้ายไปขวาและล่างขึ้นบนแทน ซึ่งโปรแกรมนี้จะคืนค่า array {Edit(x,Suffix[y,j])}0 ≤ j ≤ m โดย Suffix[y,j] คือ คำเสริมท้าย(suffix) ของสายอักขระ y ของความยาว j

โปรแกรมย่อยไปข้างหน้า (Forward subprogram) และโปรแกรมย่อยถอยหลัง (Backward subprogram) จะคำนวณค่าในเมทริกซ์(matrix) โดยใช้ค่าที่ถูกคำนวณไว้ก่อนหน้านี้ แต่จะบันทึกช่องว่างโดยการลบค่าที่ไม่จำเป็นต้องใช้อีกต่อไประหว่างการทำงานของโปรแกรมย่อย (subprogram) แต่น่าเสียดายที่บางครั้งค่าที่ถูกลบไปอาจจะต้องนำมาใช้ในการคำนวณทีหลัง ขั้นตอนวิธีของเฮิร์ชเบิร์กจะใช้เวลาในการทำงานเป็น 2 เท่าของขั้นตอนวิธีของนีดเดิ้ลแมน – วันช์ (Needleman-Wunsch algorithm) แต่ก็ยังถือว่าอยู่ในเวลา O(nm)

ใกล้เคียง