Mám k lineárne nerovnosti v n premenných (0 <k <n). Nevadí mi to, čo je to riešenie, chcem len otestovať, či je alebo nie je prázdny - t akýkoľvek priradenie k mojim n premenným vyhovuje systému. Každý, kto vie, ako to vyriešiť?
Vďaka!
odpovede:
5 pre odpoveď č. 1Môžete to urobiť pomocou tlačidla a lineárne programovanie s konštantnou objektívnou funkciou. To je len kontrola uskutočniteľnosť programu.
2 pre odpoveď č. 2
Použite SMT riešiteľ pre teóriu lineárnejaritmetika (Yices, Z3, ...). Tieto programy sú určené na vyhľadanie modelov pre zadaný vstup. Existujúce algoritmy môžete samozrejme využívať aj inými spôsobmi.
2 pre odpoveď č. 3
Na riešenie systému nerovností môžete použiť Fourier-Motzkinovu elimináciu. Budete musieť poznať základné algebry pochopiť riešenie hoci.
http://en.wikipedia.org/wiki/Fourier%E2%80%93Motzkin_elimination
1 pre odpoveď č. 4
Stačí len pretiahnuť rozsahy. Tu je návod, ako v pseudokóde:
// An array that has the ranges (inequalities) to test:
fromToArray = [[0, 10], [5, 20], [-5, Infinity]]
currentRange = [-Infinity, Infinity];
for each pair myRange in fromToArray
if currentRange[0] < myRange[0]
then currentRange[0] = myRange[0]
if currentRange[1] > myRange[1]
then currentRange[1] = myRange[1]
if currentRange[0] >= currentRange[1] // from greater than to, so set is empty.
then return "NO SOLUTION"
end for each
return "Solution is: " + currentRange
0 pre odpoveď č. 5
Vypočítajte determinant príslušnej matice; ak je nenulové, existuje jedinečné riešenie, ak je nula, existuje buď nekonečne veľa riešení alebo žiadne - http://en.wikipedia.org/wiki/System_of_linear_equations
Alebo použite Gaussovu elimináciu - http://en.wikipedia.org/wiki/Gaussian_elimination