Linear programming involves solving linear systems with restrictions on variables. Integer linear programming adds the restriction that variables must be integers. This makes it harder to solve, but important for real-world applications. Heuristics like the branch and bound algorithm can be used to solve these problems.
Integer linear programming problems arise when trying to solve linear systems by specifying that all unknown variables must be integers or integers. Linear systems are sets of equations that describe a situation for which the programmer is trying to find a solution. They usually consist of an equation that must be maximized or minimized and one or more restrictive equations that place limits on the unknown variables. For the system to be linear, each restriction must be a linear equation; that is, it must not contain instances of the unknown variable with exponents greater than one.
Regular linear systems can be solved easily using a computer. The program can identify a solution by finding the derivative and setting it equal to zero. He can then verify that the point is a maximum or a minimum by checking its immediate neighborhood on the function. As long as the derivative is defined at every point along the function, the computer has only a limited number of possible solutions to test.
Linear programming becomes integer linear programming with the addition of the integer restriction. This means that the problem remains the same, but the answer must consist of integer values for the unknown values - they must be integers. Sometimes, this means that the solution will be suboptimal compared to the case where fractions are allowed; it does, however, reflect the real world, where elements often occur in discrete, indivisible units. This makes integer linear programming important for business applications, as companies want to maximize profits as much as possible but cannot choose to sell a fraction of a product.
Once the integer restrictions are in place, the problem of solving the linear system is NP-complete. This means that the time it takes for a computer to solve the system is indeterminate. With the restrictions on integers, computers cannot use the derivative tool because there is no guarantee that the zero point of the derivative will fall on an integer. The solution will be the integer with the highest or lowest value of all integers, so the computer would have to check them all, a process that could take forever.
Programmers have developed heuristics, or troubleshooting methods, to deal with the complexity of these problems. One method for solving integer linear programming problems is the branch and bound algorithm, in which the computer solves a series of problems related to the original one to narrow the range of values available to one solution. For complex problems, however, this can be time consuming.
Protect your devices with Threat Protection by NordVPN