In this paper, we design and analyze a simple, greedy algorithm for checking the linear and integer feasibility of a class of linear programs called Horn programs. This algorithm, which we term the "Lifting Algorithm", runs in time O(mṡn2) on a Horn system (Horn program) with m constraints and n variables. The Lifting Algorithm is a variant of the Stressing Algorithm which was proposed for checking the feasibility of Difference Constraint systems. Inasmuch as Horn constraints subsume difference constraints, and all known algorithms for the problem of checking feasibility of Difference Constraint Systems run in time Ω(mṡn), the running time of our algorithm is only a factor n worse than the best known running time for checking the feasibility of Difference Constraint Systems. Horn programs arise in a number of application areas including econometrics and program verification; consequently, their study is well-motivated. An important feature of our algorithm is that it uses only one operator, viz., addition. We also show that our algorithm can identify the linear and lattice point feasibility of Extended Horn Systems in O(mṡn2) time. © 2013 Elsevier B.V. All rights reserved.
Chandrasekaran, R., & Subramani, K. (2013). A combinatorial algorithm for Horn programs. Discrete Optimization, 10(2), 85–101. https://doi.org/10.1016/j.disopt.2012.11.001