Linear time algorithms for linear programming