Rozhodovací procedury a verifikace Pavel Surynek, KTIML

Podobné dokumenty
Lineární programování

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

4EK213 Lineární modely. 10. Celočíselné programování

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

1 Úvod do celočíselné lineární optimalizace

6 Simplexová metoda: Principy

1 Báze a dimenze vektorového prostoru 1

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

13. Lineární programování

3. ANTAGONISTICKÉ HRY

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

1. července 2010

12. Lineární programování

Parametrické programování

Výroková logika - opakování

IB112 Základy matematiky

Obecná úloha lineárního programování

ANTAGONISTICKE HRY 172

Teorie her a ekonomické rozhodování. 2. Maticové hry

Lineární zobrazení. 1. A(x y) = A(x) A(y) (vlastnost aditivity) 2. A(α x) = α A(x) (vlastnost homogenity)

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Problém lineární komplementarity a kvadratické programování

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy

Výroková a predikátová logika - VII

Výroková a predikátová logika - V

Základy matematiky pro FEK

Lineární algebra : Lineární prostor

1 Lineární prostory a podprostory

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Báze a dimenze vektorových prostorů

Úvod do celočíselné optimalizace

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

(Cramerovo pravidlo, determinanty, inverzní matice)

Základní pojmy teorie množin Vektorové prostory

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Výroková a predikátová logika - III

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Operace s maticemi

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matice. a m1 a m2... a mn

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Aplikovaná numerická matematika - ANM

4EK213 LINEÁRNÍ MODELY

Výroková a predikátová logika - X

4EK213 Lineární modely. 4. Simplexová metoda - závěr

Výroková a predikátová logika - VII

Soustavy linea rnı ch rovnic

Západočeská univerzita v Plzni. Fakulta aplikovaných věd. Ivana Kozlová. Modely analýzy obalu dat

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

Cvičení z Lineární algebry 1

Lineární algebra : Skalární součin a ortogonalita

Výroková a predikátová logika - XII

Operace s maticemi. 19. února 2018

4EK212 Kvantitativní management. 2. Lineární programování

Základy maticového počtu Matice, determinant, definitnost

Grafové algoritmy. Programovací techniky

(ne)závislost. α 1 x 1 + α 2 x α n x n. x + ( 1) x Vektoru y = ( 1) y říkáme opačný vektor k vektoru y. x x = 1. x = x = 0.

1 Linearní prostory nad komplexními čísly

Výroková a predikátová logika - III

Riemannův určitý integrál

Vzdálenost uzlů v neorientovaném grafu

4EK201 Matematické modelování. 2. Lineární programování

Výroková a predikátová logika - II

1 Polynomiální interpolace

NP-úplnost problému SAT

Přijímací zkouška - matematika

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

1 Vektorové prostory.

4EK213 LINEÁRNÍ MODELY

5 Orientované grafy, Toky v sítích

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

5. Lokální, vázané a globální extrémy

Lineární algebra : Metrická geometrie

Úlohy nejmenších čtverců

Úvod do lineární algebry

Výroková a predikátová logika - II

Lineární algebra : Skalární součin a ortogonalita

1 Determinanty a inverzní matice

Matematická analýza pro informatiky I. Limita funkce

Četba: Texty o lineární algebře (odkazy na webových stránkách přednášejícího).

Lineární algebra : Báze a dimenze

Četba: Texty o lineární algebře (odkazy na webových stránkách přednášejícího).

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Výroková a predikátová logika - XIII

15. Moduly. a platí (p + q)(x) = p(x) + q(x), 1(X) = id. Vzniká tak struktura P [x]-modulu na V.

Arnoldiho a Lanczosova metoda

Vlastní čísla a vlastní vektory

1 Řešení soustav lineárních rovnic

19. Druhý rozklad lineární transformace

1 Pravdivost formulí v interpretaci a daném ohodnocení

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Transkript:

6 Rozhodovací procedury a verifikace Pavel Surynek, KTIML http://ktiml.mff.cuni.cz/~surynek/nail094 Matematicko-fyzikální fakulta Univerzita Karlova v Praze 1

Lineární aritmetika Budeme zabývat rozhodovacími procedurami pro konjunkce lineárních podmínek. Definice 11.1 (formule lineární aritmetiky). Nechť Var je množina symbolů pro proměnné, Cons nechť je množina symbolů pro konstanty (VarCons=). Formule lineární aritmetiky je slovo dané následující gramatikou: Počáteční neterminál I, další neterminály T, A, S Množina terminálů = VarCons {,=,<,,+,(,)} I II (I) I A A S = S S < S S S S T S S + T T v c cv pro vvar, ccons I odpovídá formuli, A odpovídá atomu, S odpovídá součtu, T odpovídá termu. 2 / Rozhodovací procedury a verifikace, 11. přednáška

Lineární aritmetika - poznámky Z formálního hlediska je lineární aritmetika teorie obsahující axiomy pro binární relace =, <,, binární funkci + a unární funkce c pro ccons (násobení konstantou). Jako doménu uvažujeme buď racionální nebo celá čísla: Rozhodování o splnitelnosti je v prvním případě polynomiální, v druhém NPúplný problém. Příklad formule lineární aritmetiky: 3y 1 + 2y 2 5y 3 2y 1-2 y 2 = 0 Tělo smyčky Motivační příklad: for (i = 1; i <= 10; i++) { a[j+i] = a[j] } R4 mem[a+r2] R5 R2 + R1 mem*a+r5+ R4 R1 R1 + 1 R4 mem[a+r2] Mimo tělo smyčky Tělo smyčky R5 R2 + R1 mem*a+r5+ R4 R1 R1 + 1 a[j] se nesmí měnit, tj. formule (i 1 i 10 j+i=j) musí být nesplnitelná. 3 / Rozhodovací procedury a verifikace, 11. přednáška

Rozhodování lineární aritmetiky Lineární programování (LP) Zadání: konjunkce lineárních nerovností a lineární objektivní funkce (=lineární program). Hledáme ohodnocení proměnných racionálními čísly, které splňuje nerovnosti a maximalizuje (minimalizuje) objektivní funkci. Celočíselné lineární programování (ILP) Zadání: opět lineární program (nerovnosti a objektivní funkce) Hledáme celočíselné ohodnocení proměnných, které splňuje stejné podmínky. Rozhodování lineární aritmetiky Zadání: konjunkce lineárních nerovností, tj. formule lineární aritmetiky. Chceme odpověď, zda existuje ohodnocení proměnných racionálními čísly splňující danou formuli. 4 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex (1) Obecný simplex je metoda pro rozhodování lineární aritmetiky s rovnostmi a neostrými nerovnostmi. Lineární nerovnosti tvořící formuli lineární aritmetiky jsou požadovány ve speciálním tvaru, tzv. obecný tvar: Rovnosti tvaru: a 1 x 1 + a 2 x 2 + + a n x n = 0, kde x 1, x 2,, x n jsou racionální proměnné a a 1, a 2,, a n racionální konstanty. Dolní a horní mez pro proměnné: l i x i u i pro i = 1,2,,n, kde l i a u i jsou racionální konstanty nebo - resp. +. Poznámka: V klasickém simplexovém algoritmu požadujeme proměnné nezáporné. Převod na obecný tvar: Nechť se formule skládá z m lineárních podmínek ve tvaru L i Δ R i, kde Δ,=,, -, pro I = 1,2,,m. 5 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex (2) Převod na obecný tvar: Případ L i R i (resp. L i R i ) Podmínku L i R i, převedeme na tvar L i b i, kde b i je racionální konstanta. Zavedeme novou proměnnou s i, původní podmínku nahradíme podmínkami L i - s i = 0 a s i b i. Případ L i = R i : Podmínku L i = R i, převedeme na tvar L i = b i, kde b i je racionální konstanta. Zavedeme novou proměnnou s i, původní podmínku nahradíme podmínkami L i - s i = 0, s i b i a s i b i. Původní proměnné y 1, y 2,, y n se nazývají problémové proměnné, proměnné s 1, s 2,, s m se nazývají dodatečné. Příklad: y 1 + y 2 2 2y 1 y 2 0 -y 1 + 2y 2 1 y 1 + y 2 s 1 = 0 2y 1 x 2 s 2 = 0 -y 1 + 2y 2 s 3 = 0 s 1 2 s 2 0 s 3 1. 6 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex (3) Úlohu nalezení splňujícího ohodnocení proměnných je možné nahlížet geometricky: Každá proměnná představuje dimenzi, podmínky představují nadroviny (rovnosti) a poloprostory (nerovnosti). Uzavřený podprostor splňujících ohodnocení je průnikem nadrovin a poloprostorů, jedná se o konvexní polytop. y 1 + y 2 2 2y 1 y 2 0 -y 1 + 2y 2 1 y 2 4 2y 1 - y 2 0 3 2 1 0 y 1 + y 2 2 1 2 3 4 -y 1 + 2y 2 0 y 1 7 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex (4) Koeficienty v zadání úlohy reprezentujeme jako matici A typu m (n + m), proměnné y 1, y 2,, y n, s 1, s 2,,s m reprezentujeme jako vektor x (prvky matice značíme a ij pro i=1,2,,m a j=1,2,,n+m). Lze použít ekvivalentní formulaci: Ax = 0 a i=1 n+m l i x i u i y 1 + y 2 s 1 = 0 2y 1 y 2 s 2 = 0 -y 1 + 2y 2 s 3 = 0 s 1 2 s 2 0 s 3 1 A = 1 1-1 0 0 2-1 0-1 0-1 2 0 0-1 Nebo se používá tabulková reprezentace (matice A bez diagonální podmatice s -1). 2 s 1 ( + ) (- y 1 + ) 0 s 2 ( + ) (- y 2 + ) 1 s 3 ( + ) y 1 y 2 s 1 1 1 s 2 2-1 s 3-1 2 A je pro pořadí proměnných: x = (y 1, y 2, s 1, s 2, s 3 ) 2 s 1 ( + ) 0 s 2 ( + ) 1 s 3 ( + ) (- y 1 + ) (- y 2 + ) 8 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex (5) V průběhu obecného simplexu se bude matice A (tabulka) měnit, ovšem sloupce odpovídající diagonální podmatici s -1 budou stále přítomné (permutovaně). Definice 11.2 (bázické, nebázické proměnné). Množina proměnných odpovídající sloupcům diagonální podmatice s -1 se nazývá množina bázických proměnných, značí se B. Ostatní proměnné se nazývají nebázické a značí se N. Lze psát: xib (x i = xjn a ij x j ), toto plyne přímo z Ax=0 a definice 11.2. Algoritmus bude udržovat následující: Ohodnocení α:bn Q (racionální čísla) Invarianty (i) a (ii): (i): Ax α = 0, kde x α = (α(x 1 ), α(x 2 ),, α(x n+m )) (ii): (x j N) l j α(x j ) u j 9 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex (6) - algoritmus Na vstupu nechť je formule L lineární aritmetiky s m rovnostmi a neostrými nerovnostmi. function GENERAL-SIMPLEX(L): boolean převeď formuli L na obecný tvar: Ax = 0 a m i=1 l i s i u i B {s 1,s 2,, s m } s 1,s 2,, s m jsou bázické proměnné N {y 1,y 2,, y n } y 1,y 2,, y n jsou nebázické proměnné for i=1,2,,n+m do α(x i ) 0 while True do Satisfied True for i=1,2,,n+m do [y 1,y 2,, y n, s 1,s 2,, s m ] = [x 1,x 2,, x n+m ] Pořadí proměnných je pevné if x i B and (l i > α(x i ) or α(x i ) > u i ) then Satisfied False, Pivot False for j=1,2,,n+m do if x j N and x i a x j lze pivotovat then Pivot True proveď pivotaci s x i a x j if not Pivot then return False if Satisfied then return True Formule je nesplnitelná Formule je splnitelná 10 / Rozhodovací procedury a verifikace, 11. přednáška

Operace pivotace (1) Nechť x i B je taková, že α(x i ) > u i (bez újmy na obecnosti). Je tedy třeba snížit hodnotu α(x i ). Platí, že x i = xjn a ij x j, tedy hodnota α(x i ) může být redukována snížením hodnoty x j N, kde a ij > 0 a l j <α(x j ), nebo zvýšením hodnoty x k N, kde a ik < 0 a α(x k )<u k. Když taková x j N ani x k N neexistuje říkáme, že nelze pivotovat (algoritmus v tomto případě odpovídá, že formule je nesplnitelná). θ = (u i - α(x i ))/a ij, resp. ι= (u i - α(x i ))/a ik, položíme α(x j ) = α(x j ) + θ, resp. α(x j ) = α(x j ) ι x i nyní splňuje podmínku α(x i ) u i, mohlo se ale stát, že α(x j ) porušuje invariant (ii) (tedy nemusí platit l j α(x j ) u j ) Je třeba x j zařadit mezi bázické a x i mezi nebázické. 11 / Rozhodovací procedury a verifikace, 11. přednáška

Operace pivotace (2) Chceme tedy přehodit x i a x j. Definice 11.3 (pivot, pivotový sloupec, pivotový řádek). Pro proměnné x i a x j se koeficient a ij tabulky nazývá pivot. Sloupec s proměnnou x j se nazývá pivotový sloupec (x j nebázická, nebázické odpovídají sloupcům), řádek s proměnnou x i se nazývá pivotový řádek (x i bázická, bázické odpovídají řádkům). Platí, že a ij 0: Vyřešíme řádek i pro x j. tj. z rovnosti x i = xln a il x l obdržíme rovnost x j = xln l j (-a il /a ij )x l + (1/a ij )x i Ve všech ostatních řádcích k i eliminujeme proměnnou x j pomocí získané rovnosti. Vypočteme novou hodnotu ohodnocení pro bázické proměnné. V algoritmu postupujeme při výběru pivota podle pevného pořadí proměnných (Blandovo pravidlo), žádní množina bázických proměnných se nezopakuje, algoritmus vždy skončí (bez důkazu). 12 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex příklad (1) Uvažujme formuli: y 1 + y 2 2 2y 1 y 2 0 -y 1 + 2y 2 1 y 1 + y 2 s 1 = 0 2y 1 x 2 s 2 = 0 -y 1 + 2y 2 s 3 = 0 s 1 2 s 2 0 s 3 1. y 1 y 2 s 1 1 1 s 2 2-1 s 3-1 2 2 s 1 ( + ) 0 s 2 ( + ) 1 s 3 ( + ) (- y 1 + ) (- y 2 + ) Dolní mez pro s 1 je porušená, protože α(s 1 ) < 2. Zvýšíme proměnnou y 1 o θ = (2-0)/1 (první, se kterou lze pivotovat, shora neomezená). Vyřešíme rovnost pro y 1 : s 1 = y 1 + y 2 y 1 = s 1 y 2 α(s 1 )=0 N={y 1, y 2 } α(s 2 )=0 B={s 1, s 2, s 3 } α(s 3 )=0 pořadí: y 1, y 2, s 1, s 2, s 3 α(y 1 )=0 α(y 2 )=0 y 2 4 3 2 1 0 2y 1 - y 2 0 y 1 + y 2 2 1 2 3 4 -y 1 + 2y 2 0 y 1 13 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex příklad (2) Nahradíme (eliminujeme) y 1 v ostatních rovnostech pravou stranou s 1 y 2 : s 2 = 2(s 1 - y 2 ) y 2 s 2 = 2s 1 3y 2 s 3 = -(s 1 - y 2 ) 2y 2 s 3 = -s 1 + 3y 2 s 1 y 2 y 1 1-1 s 2 2-3 s 3-1 3 2 s 1 ( + ) 0 s 2 ( + ) 1 s 3 ( + ) (- y 1 + ) (- y 2 + ) Dolní mez pro s 3 je porušená, protože α(s 3 ) < 1. Zvýšíme proměnnou y 2 o θ = (1 (-2))/3=1 (jediná, se kterou lze pivotovat, shora neomezená (s 1 bychom museli snižovat, což nejde)). Vyřešíme rovnost pro y 2 a eliminujeme y 2 α(s 1 )=2 N={s 1, y 2 } α(s 2 )=4 B={y 1, s 2, s 3 } α(s 3 )=-2 α(y 1 )=2 α(y 2 )=0 y 2 4 3 2 1 0 2y 1 - y 2 0 y 1 + y 2 2 1 2 3 4 -y 1 + 2y 2 0 y 1 14 / Rozhodovací procedury a verifikace, 11. přednáška

Obecný simplex příklad (3) Algoritmus končí, získáme splňující ohodnocení: y 1 1, y 2 1 s 1 s 3 y 1 2/3-1/3 s 2 1-1 y 2 1/3 1/3 2 s 1 ( + ) 0 s 2 ( + ) 1 s 3 ( + ) (- y 1 + ) (- y 2 + ) α(s 1 )=1 N={s 1, s 3 } α(s 2 )=1 B={y 1, s 2, y 2 } α(s 3 )=2 α(y 1 )=1 α(y 2 )=1 y 2 4 3 2y 1 - y 2 0 2 1 0 y 1 + y 2 2 1 2 3 4 -y 1 + 2y 2 0 y 1 15 / Rozhodovací procedury a verifikace, 11. přednáška

Metoda větví a mezí (1) Metoda pro řešení celočíselného lineárního programování (ILP). Zde nás zajímá rozhodovací varianta, čili nebudeme mít objektivní funkci. Zadání stejné jako pro obecný simplex (tedy formule lineární aritmetiky), pouze vyžadujeme, aby ohodnocení proměnných byla celá čísla. Poznámka: lze snadno podporovat ostré nerovnosti, stačí přičíst či odečíst 1 od konstanty na pravé straně nerovnosti. Definice 11.4 (problém, relaxovaný problém). Mějme systém systém lineárních nerovností S, problém nalezení celočíselného ohodnocení proměnných, které splňuje nerovnosti, nechť je problém. Relaxovaný problém potom je tatáž úloha, ale bez požadavku na celočíselnost ohodnocení, značíme relaxed(s). Předpokládejme existenci funkce LP feasible, která rozhoduje splnitelnost pro formuli lineární aritmetiky (vrací dvojici - indikátor splnitelnosti, případně splňující ohodnocení). Lze použít například obecný simplex. 16 / Rozhodovací procedury a verifikace, 11. přednáška

Metoda větví a mezí (2) Na vstupu je formule lineární aritmetiky s celočíselnými proměnnými S. function FEASIBILITY-BRANCH-AND-BOUND(S): boolean SEARCH-INTEGRAL-SOLUTION(S) return False procedure SEARCH-INTEGRAL-SOLUTION(S) (satisfiable, α) LP feasible (relaxed(s)) if not satisfiable then return else if α je celočíselné then abort(true) else let x je proměnní, že α(x)=rz SEARCH-INTEGRAL-SOLUTION(S (x r)) SEARCH-INTEGRAL-SOLUTION(S (x r)) V aktuální větvi není celočíselné řešení Snadno lze dovolit některé proměnné racionální a jiné celočíselné (MIP smíšení celočíselné programování) V aktuální větvi není přípustné ohodnocení, tedy ani celočíselné Celočíselné přípustné ohodnocení nalezeno, formule splnitelná, konec. Proměnná x je ohodnocením α ohodnocena neceločíselně 17 / Rozhodovací procedury a verifikace, 11. přednáška

Metoda větví a mezí příklad a poznámky Příklad: Nechť x 1, x 2, x 3, x 4 jsou proměnné formule lineární aritmetiky. Předpokládejme, že funkce LP feasible vrátila řešení (1, 0.7, 2.5, 3) Dále je možno vybrat neceločíselně ohodnocenou proměnnou, v tomto případě buď x 2, nebo x 3. Nechť byla vybrána x 2 : Přidá se podmínka x 2 0 a rekurzivně se pokračuje v řešení, nechť není nalezeno přípustné ohodnocení v této větvi. Přidá se tedy podmínka x 2 1 a opět se rekurzivně pokračuje v řešení. Algoritmus není úplný, nemusí zastavit. Pro formuli lineární aritmetiky: 1 3x 3y 2 nezastaví (úloha nemá celočíselné přípustné řešení). Lze vyřešit odhadem na velikost domény proměnných: Tvrzení 11.1 (odhad proměnných): Nechť koeficienty formule φ tvoří matici A typu m n a vektor b (pravé strany), x 1, x 2,, x n nechť jsou proměnné a nechť μ je největší z abs. hodnot koeficientů a abs. hodnot konstant. Potom je-li φ celočíselně splnitelná, existuje celočíselné ohodnocení α, že α(x j ) ((m+n)*n*μ) n pro j=1,2,,n. Bez důkazu. 18 / Rozhodovací procedury a verifikace, 11. přednáška

Ořezávání pomocí nadrovin (1) Ořezávací nadrovina je podmínka, která když se přidá k formuli lineární aritmetiky, nezmění množinu přípustných celočíselných řešení. Ořezávací nadroviny mohou pomoci zmenšit prohledávaný prostor přípustných (neceločíselných) ohodnocení. 19 / Rozhodovací procedury a verifikace, 11. přednáška

Ořezávání pomocí nadrovin (2) Popíšeme ořezávací nadroviny nazývané Gomoryho řezy, nejdříve příklad: Nechť x 1, x 2, x 3 jsou proměnné a nechť dolní meze jsou 1 x 1 a 0.5 x 2, předpokládáme, že konečná tabulka v obecném simplexu obsahuje rovnost: x 3 = 0.5x 1 +2.5x 2. Konečné přípustné ohodnocení nechť je: α: {x 1 1, x 2 0.5, x 3 1.75}. Odečteme přípustné ohodnocení od rovnosti: x 3 1.75 = 0.5(x 1 1) +2.5(x 2 0.5) x 3 1 = 0.75 + 0.5(x 1 1) +2.5(x 2 0.5) 0.75 + 0.5(x 1 1) +2.5(x 2 0.5) 1 Poslední nerovnost přidáme jako novou podmínku, aktuální ohodnocení α ji nesplňuje, α bude oříznuto. 20 / Rozhodovací procedury a verifikace, 11. přednáška

Ořezávání pomocí nadrovin (3) Budeme odvozovat řez z rovnosti, ta musí splňovat dvě podmínky: (i) Ohodnocení bázických proměnných musí být zlomkové. (ii) Ohodnocení všech nebázických proměnných musí odpovídat jedné z jejích mezí (hodní nebo dolní). Uvažme rovnost: x i = xjn a ij x j, kde x i je bázická proměnná (1) α nechť je ohodnocení nalezené obecným simplexem, tedy: α(x i )= xjn a ij α(x j ) (2) Rozdělíme nebázické proměnné podle toho, zda mají přiřazenou hodní nebo dolní mez: J = {j x j N α(x j ) = l j } K = {j x j N α(x j ) = u j } 21 / Rozhodovací procedury a verifikace, 11. přednáška

Ořezávání pomocí nadrovin (4) Provedeme odečtení (2) od (1): x i - α(x i )= jj a ij (x j l j ) - jk a ij (u j - x j ) Nechť f 0 = α(x i ) - α(x i ), jelikož předpokládáme, že α(x i ) není celé číslo, platí, že 0 < f 0 < 1, můžeme tedy psát: x i - α(x i ) = f 0 + jj a ij (x j l j ) - jk a ij (u j - x j ) Všimněme si, že levá strana je celé číslo. Nyní rozlišíme dva případy: (a) Když jj a ij (x j l j ) - jk a ij (u j - x j ) > 0, pak jelikož pravá strana je celé číslo, platí: f 0 + jj a ij (x j l j ) - jk a ij (u j - x j ) 1, provedeme rozdělení indexů: J + = { j jj a ij > 0} J - = { j jj a ij < 0} K + = { j jk a ij > 0} K - = { j jk a ij < 0} 22 / Rozhodovací procedury a verifikace, 11. přednáška

Ořezávání pomocí nadrovin (5) Na levou stranu shromáždíme pozitivní členy: jj+ a ij (x j l j ) - jk- a ij (u j - x j ) 1 - f 0, ekvivalentně také jj+ (a ij /(1- f 0 ))(x j l j ) - jk- (a ij /(1- f 0 ))(u j - x j ) 1 (b) Když jj a ij (x j l j ) - jk a ij (u j - x j ) 0, pak jelikož pravá strana je celé číslo, platí: f 0 + jj a ij (x j l j ) - jk a ij (u j - x j ) 0 Podobně jako v předchozím obdržíme: jj- a ij (x j l j ) - jk+ a ij (u j - x j ) - f 0, ekvivalentně také - jj- (a ij /f 0 )(x j l j ) + jk+ (a ij /f 0 )(u j - x j ) 1 Celkem dostáváme, že: jj+ (a ij /(1- f 0 ))(x j l j ) - jj- (a ij /f 0 )(x j l j ) + jk+ (a ij /f 0 )(u j - x j ) - jk- (a ij /(1- f 0 ))(u j - x j ) 1 Nová podmínka zakáže ohodnocení α, jelikož při něm jsou členy na levé straně nulové. 23 / Rozhodovací procedury a verifikace, 11. přednáška

Diferenční logika (1) Rozhodovací procedura pro konjunkci diferenčních podmínek, jedná se o fragment lineární aritmetiky. Definice 11.5 (formule diferenční logiky). Nechť Var je množina symbolů pro proměnné, Cons nechť je množina symbolů pro konstanty (VarCons=). Formule diferenční logiky je slovo dané následující gramatikou: Počáteční neterminál I, další neterminál A, T Množina terminálů = VarCons {,<,,(,)} I II (I) I A A T T < c T T c pro ccons T v pro vvar I odpovídá formuli, A odpovídá atomu, T odpovídá termu, který v tomto případě je proměnná. 24 / Rozhodovací procedury a verifikace, 11. přednáška

Diferenční logika (2) Lze modelovat i další podmínky podle následujících pravidel: x y = c lze zapsat jako x y c y x -c x y c lze zapsat jako y x -c x y > c lze zapsat jako y x < -c Podmínka s jednou proměnnou jako například x < 5 lze napsat jako x-x 0 < 5, kde x 0 je nová proměnná (tzv. nulová proměnná). Vyžaduje se, aby hodnota nulové proměnné byla 0. Uvažujme formuli: x < y + 5 y 4 x = z 1 Tuto formuli lze přepsat jako formuli diferenční logiky: x y < 5 y x 0 4 x z -1 z x 1 25 / Rozhodovací procedury a verifikace, 11. přednáška

Diferenční logika (3) Podívejme se na rozhodovací proceduru pro diferenční logiku. Definice 11.6 (graf nerovností). Nechť δ je formule diferenční logiky ve formě konjunkce nerovností. Potom orientovaný graf s váhami G=(V,E,c) je graf nerovností, jestliže vrcholy odpovídají proměnným a je přítomna hrana e=(x,y) s váhou c(e) pro každou nerovnost x-y c(e) ve formuli. Tvrzení 11.2 (splňování diferenční logiky): Nechť δ je formule diferenční logiky ve formě konjunkce nerovností a nechť G je odpovídající graf nerovností. Potom δ je splnitelná, právě když G neobsahuje negativní cyklus. Důkaz: Použijeme Bellman-Fordův algoritmus pro nalezení nejkratších cest grafu. 26 / Rozhodovací procedury a verifikace, 11. přednáška

Předzpracování pro neceločíselné formule Dva jednoduché způsoby předzpracování vstupní formule (konjunkce podmínek): 1. Uvažujme formuli lineární aritmetiky: x 1 + x 2 2 x 1 1 x 2 1, zde vidíme, že první podmínka je redundantní. Obecně: ve formuli a 0 x 0 + j=1n a j x j b j=0n (l j x j u j ) je podmínka a 0 x 0 + j=1n a j x j b redundantní, jestliže: j aj>0 a j u j + j aj<0 a j l j b. Jinými slovy, když při dosazení extrémních hodnot proměnným součet nepřevýší konstantu b, pak ani pro jiné přípustné ohodnocení proměnných nepřevýší konstantu b. 2. Uvažujme formuli lineární aritmetiky: 2x 1 + x 2 2 x 2 4 x 1 3, zde je vidět, že z první a druhé nerovnosti plyne x 1-1. Obecně: když a 0 > 0, pak x 0 (b - j j>0 aj>0 a j l j - j aj<0 a j u j ) / a 0, podobně, když a 0 < 0, pak x 0 (b - j aj>0 a j l j - j j>0 aj<0 a j u j ) / a 0 27 / Rozhodovací procedury a verifikace, 11. přednáška

Předzpracování pro celočíselné formule Používají se dvě jednoduché úpravy: V každé podmínce vstupní formule nejprve vynásobíme všechny koeficienty a konstanty podmínky nejmenším společným násobkem jmenovatelů všech koeficientů a konstant podmínky. Obdržíme formuli, kde všechny konstanty a koeficienty jsou celočíselné (předpokládá racionální konstanty a koeficienty ve vstupním zadání). Poté je možné zavést neostré nerovnosti místo ostrých: Podmínka i=1n a i x i < b může být nahrazena podmínkou i=1n a i x i b 1. Speciální případ představují 0-1 formule (proměnné mohou nabývat hodnoty 0 nebo 1): Uvažujme formuli: 5x 1 3x 2 4, z této podmínky lze odvodit, že x 1 =1 x 2 =1, tedy můžeme přidat podmínku x 1 x 2. Uvažujme formuli: x 1 + x 2 1 x 2 1, z podmínek lze odvodit x 1 =0. 28 / Rozhodovací procedury a verifikace, 11. přednáška