Täisarvude lineaarse programmeerimise probleemid tekivad siis, kui püütakse lahendada lineaarseid süsteeme, täpsustades, et kõik tundmatud muutujad peavad olema täisarvud või täisarvud. Lineaarsed süsteemid on võrrandite komplektid, mis kirjeldavad olukorda, millele programmeerija püüab lahendust leida. Tavaliselt koosnevad need ühest võrrandist, mida tuleb maksimeerida või minimeerida, ja ühest või mitmest piiravast võrrandist, mis seab piirangud tundmatutele muutujatele. Et süsteem oleks lineaarne, peab iga piirang olema lineaarne võrrand; see tähendab, et see ei tohi sisaldada tundmatu muutuja eksemplare, mille eksponendid on suuremad kui üks.
Tavalisi lineaarsüsteeme saab hõlpsasti lahendada arvuti abil. Programm suudab lahenduse tuvastada, leides tuletise ja määrates selle võrdseks nulliga. Seejärel saab see kontrollida, kas punkt on maksimum või miinimum, kontrollides funktsiooni vahetut naabrust. Kuni tuletis on funktsiooni igas punktis määratletud, on arvutil kontrollimiseks vaid piiratud arv võimalikke lahendusi.
Lineaarsest programmeerimisest saab täisarvuline lineaarne programmeerimine koos täisarvupiirangu lisamisega. See tähendab, et probleem jääb samaks, kuid vastus peab koosnema tundmatute väärtuste täisarvudest: need peavad olema täisarvud. Mõnikord tähendab see, et lahendus ei ole optimaalne võrreldes olukorraga, kus murdarvud on lubatud; see peegeldab aga reaalset maailma, kus esemed on sageli diskreetsete, jagamatute üksustena. See muudab täisarvude lineaarse programmeerimise ärirakenduste jaoks oluliseks, kuna ettevõtted soovivad maksimeerida kasumit nii palju kui võimalik, kuid ei saa valida, kas müüa osa tootest.
Kui täisarvude piirangud on paigas, on lineaarse süsteemi lahendamise probleem NP-täielik. See tähendab, et aeg, mis arvutile süsteemi lahendamiseks kulub, on määramatu. Täisarvude piirangutega ei saa arvutid tuletise tööriista kasutada, sest puudub garantii, et tuletise nullpunkt langeb täisarvule. Lahenduseks on kõigist täisarvudest kõrgeima või väikseima väärtusega täisarv, nii et arvuti peaks neid kõiki kontrollima – protsess, mis võib võtta lõpmatult palju aega.
Programmeerijad on nende probleemide keerukuse lahendamiseks välja töötanud heuristika ehk probleemide lahendamise meetodid. Üks täisarvuliste lineaarsete programmeerimisülesannete lahendamise viise on haru ja seotud algoritm, mille puhul arvuti lahendab rea algse probleemiga seotud ülesandeid, et kitsendada saadaolevat väärtuste vahemikku ühe lahenduseni. Keeruliste probleemide korral võib see aga võtta kaua aega.