Linear programming is a mathematical modeling technique useful for allocating scarce or limited resources to competing activities based on an optimality criterion. There are four key components of any linear programming model: decision variables, objective function, constraints, and non-negativity assumptions. Linear programming models make simplifying assumptions like certainty of parameters, additivity, linearity/proportionality, and divisibility of decision variables. The technique helps decision-makers use resources effectively and arrive at optimal solutions subject to constraints, but it has limitations if variables are not continuous or parameters uncertain.