### A.33.3 Solving LPs with special structure

The following predicates allow you to solve specific kinds of LPs more efficiently:

**transportation**(`+Supplies, +Demands, +Costs, -Transport`)- Solves a transportation problem.
`Supplies`and`Demands`must be lists of non-negative integers. Their respective sums must be equal.`Costs`is a list of lists representing the cost matrix, where an entry (*i*,*j*) denotes the integer cost of transporting one unit from*i*to*j*. A transportation plan having minimum cost is computed and unified with`Transport`in the form of a list of lists that represents the transportation matrix, where element (*i*,*j*) denotes how many units to ship from*i*to*j*. **assignment**(`+Cost, -Assignment`)- Solves a linear assignment problem.
`Cost`is a list of lists representing the quadratic cost matrix, where element (i,j) denotes the integer cost of assigning entity $i$ to entity $j$. An assignment with minimal cost is computed and unified with`Assignment`as a list of lists, representing an adjacency matrix.