Row replacement algorithms for screen editors

  • Authors:
  • Eugene W. Meyers;Webb Miller

  • Affiliations:
  • Univ. of Arizona, Tucson;Pennsylvania State Univ., University Park

  • Venue:
  • ACM Transactions on Programming Languages and Systems (TOPLAS)
  • Year:
  • 1989

Quantified Score

Hi-index 0.00

Visualization

Abstract

Interactive screen editors repeatedly determine terminal command sequences to update a screen row. Computing an optimal command sequence differs from the traditional sequence comparison problem in that there is a cost for moving the cursor over unedited characters and the cost of an n-character command is not always the cost of n one-character commands. For example, on an ANSI-standard terminal, it takes nine bytes to insert one character, ten to insert two, eleven to insert three, and so on. This paper presents an O(MN) dynamic programming algorithm for row replacement where an n-character command costs &agr;n + &bgr; for constants &agr; and &bgr;. M is the length of the original row and N is the length of its replacement. Also given is an O(Cost × (M + N)) “greedy” algorithm for optimal row replacement. Here Cost is the optimal cost (in bytes) of the replacement, so the algorithm is fast when the required update is small. Though the algorithm is rather complicated, it is fast enough to be useful in practice.