Problem spełnienia ograniczeń. w oparciu o: K. Marriott, P.J. Stuckey. Programming with Constraints. An Introduction

Wielkość: px
Rozpocząć pokaz od strony:

Download "Problem spełnienia ograniczeń. w oparciu o: K. Marriott, P.J. Stuckey. Programming with Constraints. An Introduction"

Transkrypt

1 Wykład 9 w oparciu o: K. Marriott, P.J. Stuckey. Programming with Constraints. An Introduction P. Kobylański Wprowadzenie do Sztucznej Inteligencji 204 / 279

2 P. Kobylański Wprowadzenie do Sztucznej Inteligencji 205 / 279

3 Fork Arrow b) c) d) Ell e) Tee + - P. Kobylański Wprowadzenie do Sztucznej Inteligencji 206 / 279

4 Definition () (CSP) składa się z ograniczenia C nad zmiennymi x 1,...,x n oraz dziedziny D, która odwzorowuje każdą zmienną x i na skończony zbiór wartości D(x i ), które może ta zmienna przyjąć. CSP reprezentuje ograniczenie: C ^ x 1 2 D(x 1 ) ^ ^x n 2 D(x n ). P. Kobylański Wprowadzenie do Sztucznej Inteligencji 207 / 279

5 Example (Kolorowanie mapy) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 208 / 279

6 Example (cd.) X 1 X 2 X 3 X 4 X 5 X 1 6= X 2 ^ X 1 6= X 3 ^ X 2 6= X 3 ^ X 2 6= X 4 ^ X 2 6= X 5 ^... P. Kobylański Wprowadzenie do Sztucznej Inteligencji 209 / 279

7 Example (cd.) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 210 / 279

8 Example (Problem n-hetmanów) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 211 / 279

9 Example (cd.) R 1,...,R 4 2{1, 2, 3, 4} C 1,...,C 4 2{1, 2, 3, 4} R 1 6= R 2 ^ R 1 6= R 3 ^ R 1 6= R 4 ^ R 2 6= R 3 ^ R 2 6= R 4 ^ R 3 6= R 4 C 1 6= C 2 ^ C 1 6= C 3 ^ C 1 6= C 4 ^ C 2 6= C 3 ^ C 2 6= C 4 ^ C 3 6= C 4 C 1 C 2 6= R 1 R 2 ^ C 1 C 3 6= R 1 R 3 ^ ^ C 3 C 4 6= R 3 R 4 P. Kobylański Wprowadzenie do Sztucznej Inteligencji 212 / 279

10 Example (Kojarzenie małżeństw) kim nicole peter maria bernd erika likes(x nicole, nicole) ^ likes(x maria, maria) ^ likes(x erika, erika)^ X nicole 6= X maria ^ X nicole 6= X erika ^ X maria 6= X erika P. Kobylański Wprowadzenie do Sztucznej Inteligencji 213 / 279

11 Prosty solver z nawrotami Prosty solver z nawrotami: C, C 1 ograniczenia c 1,...,c n proste ograniczenia D dziedzina x zmienna P. Kobylański Wprowadzenie do Sztucznej Inteligencji 214 / 279

12 Prosty solver z nawrotami function back_solve(c, D) if vars(c) ;then return partial_satisfiable(c) else choose x 2 vars(c) foreach value d 2 D(x) do let C 1 be obtained from C be replacing x by d if partial_satisfiable(c 1 ) then if back_solve(c 1,D)then return true return false P. Kobylański Wprowadzenie do Sztucznej Inteligencji 215 / 279

13 function partial_satisfiable(c) let C be of the form c 1 ^ ^c n for i 1,...,n do if vars(c i ) ;then if satisfiable(c i ) false then return false return true P. Kobylański Wprowadzenie do Sztucznej Inteligencji 216 / 279

14 Prosty solver z nawrotami Example X < Y ^ Y < Z ^ X, Y, Z 2{1, 2} X < Y Y < Z X=1 X=2 1 < Y Y < Z Y=1 Y=2 2 < Y Y < Z Y=1 Y=2 false 1 < 2 2 < Z false false Z=1 Z=2 false false P. Kobylański Wprowadzenie do Sztucznej Inteligencji 217 / 279

15 Zgodność wierzchołkowa i łukowa Definition Dziedzina jest fałszywa, jeśli którejś ze zmiennych przyporządkowuje pusty zbiór wartości. Dziedzina jest waluacją, jeśli każdej zmiennej przyporządkowuje jednoelementowy zbiór wartości. Funkcja satisfiable(c, D) pobiera ograniczenie C oraz dziedzinę będącą waluacją D izwracatrue albo false wskazując na to, czy C jest spełnione czy nie przez waluację D. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 218 / 279

16 Zgodność wierzchołkowa i łukowa Example Rozpatrzmy zmienne X, Y, Z iograniczeniec będące koniunkcją X < Y ^ Y < Z. Dziedzina D 1 przyporządkowująca D 1 (X )=D 1 (Y )={1, 2} i D 1 (Z) =; jest fałszywą dziedziną. Dziedzina D 2, w której D 2 (X )={1}, D 2 (Y )={2}, D 2 (Z) ={1} jest waluacją i satisfiable(c, D 2 ) ma wartość false. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 219 / 279

17 Zgodność wierzchołkowa i łukowa Definition (Zgodność wierzchołkowa) Proste ograniczenie c jest zgodne wierzchołkowo z dziedziną D jeśli albo vars(c) 6= 1albovars(c) ={x} idlakażdegod 2 D(x), {x 7! d} jest rozwiązaniem c. CSP z ograniczeniem c 1 ^ ^c n idziedzinąd jest zgodny wierzchołkowo jeśli każde proste ograniczenie c i jest zgodne wierzchołkowo z D, dla1apple i apple n. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 220 / 279

18 Zgodność wierzchołkowa i łukowa Definition (Zgodność łukowa) Proste ograniczenie c jest zgodne łukowo z dziedziną D jeśli albo vars(c) 6= 2albovars(c) ={x, y} idlakażdegod x 2 D(x) istnieje d y 2 D(y), tż.{x 7! d x, y 7! d y } jest rozwiązaniem c oraz dla każdego d y 2 D(y) istnieje d x 2 D(x), tż.{x 7! d x, y 7! d y } jest rozwiązaniem c. CSP z ograniczeniem c 1 ^ ^c n idziedzinąd jest zgodny łukowo jeśli każde proste ograniczenie c i jest zgodne łukowo z D, dla 1 apple i apple n. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 221 / 279

19 Zgodność wierzchołkowa i łukowa Example Ograniczenie X < Y ^ Y < Z ^ Z apple 2 zdziedzinąd, tż.d(x )=D(Y )=D(Z) ={1, 2, 3} nie jest zgodne wierzchołkowo z powodu wartości 3 dla Z wograniczeniuprostymz apple 2. Nie jest ono również zgodne łukowo gdyż np. dla wartości 1 dla zmiennej Y nie ma w dziedzinie D(X ) wartości d X spełniającej warunek d X < 1. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 222 / 279

20 Zgodność wierzchołkowa i łukowa Algorytm zapewniający zgodność wierzchołkową: x jest zmienną C jest ograniczeniem D jest dziedziną c, c 1,...,c n są prostymi ograniczeniami d wartość z dziedziny P. Kobylański Wprowadzenie do Sztucznej Inteligencji 223 / 279

21 Zgodność wierzchołkowa i łukowa function node_consistent(c, D) let C be of form c 1 ^ ^c n for i 1,...,n do if vars(c) = 1 then let {x} = vars(c) D(x) {d 2 D(x) {x 7! d} is a solution of c} return D P. Kobylański Wprowadzenie do Sztucznej Inteligencji 224 / 279

22 Zgodność wierzchołkowa i łukowa Algorytm zapewniający zgodność łukową: x, y są zmiennymi C jest ograniczeniem D, W są dziedzinami c, c 1,...,c n są prostymi ograniczeniami d x, d y są wartościami z dziedziny P. Kobylański Wprowadzenie do Sztucznej Inteligencji 225 / 279

23 Zgodność wierzchołkowa i łukowa function arc_consistent(c, D); let C be of form c 1 ^ ^c n repeat W D for i 1,...,n do if vars(c) = 2 then let {x, y} = vars(c) D(x) {d x 2 D(x) for some d y 2 D(y), {x 7! d x, y 7! d y } is a solution of c} D(y) {d y 2 D(y) for some d x 2 D(x), {x 7! d x, y 7! d y } is a solution of c} until W D return D P. Kobylański Wprowadzenie do Sztucznej Inteligencji 226 / 279

24 Zgodność wierzchołkowa i łukowa Niepełny solver zgodny wierzchołkowo i łukowo: C jest ograniczeniem D jest dziedziną P. Kobylański Wprowadzenie do Sztucznej Inteligencji 227 / 279

25 Zgodność wierzchołkowa i łukowa function arc_solv(c, D) D node_consistent(c, D) D arc_consistent(c, D) if D is a false domain then return false else if D is a valuation domain then return satisfiable(c, D) else return unknown P. Kobylański Wprowadzenie do Sztucznej Inteligencji 228 / 279

26 Zgodność wierzchołkowa i łukowa Example X < Y ^ Y < Z ^ Z apple 2 D(X ) D(Y ) D(Z) komentarz {1, 2, 3} {1, 2, 3} {1, 2, 3} init {1, 2, 3} {1, 2, 3} {1, 2} node(z apple 2) {1, 2} {2, 3} {1, 2} arc(x < Y ) {1, 2} ; ; arc(y < Z) ; ; ; arc(x < Y ) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 229 / 279

27 Zgodność wierzchołkowa i łukowa Pełny solver zgodny wierzchołkowo i łukowo: C jest ograniczeniem D, D 1 są dziedzinami x jest zmienną d jest wartością z dziedziny P. Kobylański Wprowadzenie do Sztucznej Inteligencji 230 / 279

28 Zgodność wierzchołkowa i łukowa function back_arc_solv(c, D) D node_consistent(c, D) D arc_consistent(c, D) if D is a false domain then return false else if D is a valuation domain then if satisfiable(c, D) then return D else return false choose variable x such that D(x) 2 foreach d 2 D(x) do D 1 back_arc_solv(c ^ x = d, D) if D 1 6 false then return D 1 return false P. Kobylański Wprowadzenie do Sztucznej Inteligencji 231 / 279

29 Zgodność zakresowa Definition (Zgodność hiper-łukowa) Proste ograniczenie c jest zgodne hiper-łukowo z dziedziną D, jeśli dla każdej zmiennej x 2 vars(c) ikażdejwartościd 2 D(x), istnieje przyporządkowanie pozostałym zmiennym x 1,...,x k w c takich wartości d j 2 D(x j ),dla1apple j apple k, że {x 7! d, x 1 7! d 1,...,x k 7! d k } jest rozwiązaniem c. CSP z ograniczeniem c 1 ^ ^c n idziedzinąd jest zgodne hiper-łukowo jeśli każde proste ograniczenie c i jest hiper-łukowo zgodne z dziedziną D, dla1apple i apple n. Rozstrzygnięcie czy proste ograniczenie jest hiper-łukowo zgodne jest problemem NP-trudnym. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 232 / 279

30 Zgodność zakresowa Example Proste ograniczenie X = 3 Y + 5 Z nie jest hiper-łukowo zgodne z dziedziną D, w której D(X )={2, 3, 4, 5, 6, 7}, D(Y )={0, 1, 2}, D(Z) ={ 1, 0, 1, 2}. Powyższe ograniczenie jest hiper-łukowo zgodne z dziedziną D 1, w której D 1 (X )={3, 5, 6}, D 1 (Y )={0, 1, 2}, D 1 (Z) ={0, 1}. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 233 / 279

31 Zgodność zakresowa Definition (Arytmetyczny CSP) CSP jest arytmetyczny jeśli każda zmienna w CSP przyjmuje wartości ze skończonego zbioru wartości całkowitych i każde proste ograniczenie jest ograniczeniem arytmetycznym. Definition (Zakres) Zakres [l..u] reprezentuje zbiór liczb całkowitych {l, l + 1,...,u} gdy l apple u, w przeciwnym przypadku reprezentuje pusty zbiór. Jeśli D jest dziedziną nad liczbami całkowitymi, to min D (x) jest najmniejszym elementem w D(x), natomiastmax D (x) jest największym elementem w D(x). P. Kobylański Wprowadzenie do Sztucznej Inteligencji 234 / 279

32 Zgodność zakresowa Definition (Zgodność zakresowa) Proste ograniczenie arytmetyczne c jest zgodne zakresowo z dziedziną D jeśli dla dowolnej zmiennej x 2 vars(c) idowolnegoprzyporządkowania rzeczywistych liczb d 1,...,d k do wszystkich pozostałych zmiennych x 1,...,x k w c, tż.min D (x j ) apple d j apple max D (x j ),dlakażdegod j zachodzi: {x 7! min D (x), x 1 7! d 1,...,x k 7! d k } jest rozwiązaniem c oraz {x 7! max D (x), x 1 7! d 1,...,x k 7! d k } jest rozwiązaniem c. Arytmetyczny CSP z ograniczeniem c 1 ^ ^c n idziedzinąd jest zgodny zakresowo jeśli każde proste ograniczenie c i jest zgodne zakresowo z D, dla 1 apple i apple n. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 235 / 279

33 Zgodność zakresowa Example Rozpatrzmy ograniczenie X = 3 Y + 5 Z oraz dziedzinę D: D(X )=[2..7], D(Y )=[0..2], D(Z) =[ 1..2]. Powyższe ograniczenie nie jest zgodne zakresowo z D, natomiast jest zgodne zakresowo z D 1, w której: D 1 (X )=[2..7], D 1 (Y )=[0..2], D 1 (Z) =[0..1]. Nie oznacza to jednak, że jest ono zgodne hiper-łukowo z D 1. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 236 / 279

34 Zgodność zakresowa Definition (Reguły propagacji) Reguły propagacji opisują jak efektywnie zawężać dziedzinę zmiennych dla zadanego prostego ograniczenia, tak aby było ono zgodne zakresowo z zawężoną dziedziną. Example Ograniczenie X = Y + Z może być zapisane na trzy sposoby: X = Y + Z, Y = X Z, Z = X Y, z których wynikają następujące ograniczenia na zakresy zmiennych: X min D (Y )+min D (Z), X apple max D (Y )+max D (Z), Y min D (X ) max D (Z), Y apple max D (X ) min D (Z), Z min D (X ) max D (Y ), Z apple max D (X ) min D (Y ). P. Kobylański Wprowadzenie do Sztucznej Inteligencji 237 / 279

35 Zgodność zakresowa Algorytm zapewniający zgodność zakresową: C arytmetyczne ograniczenie C 0 zbiór prostych ograniczeń D, D 1 dziedziny c 1,...,c n proste ograniczenia x zmienna P. Kobylański Wprowadzenie do Sztucznej Inteligencji 238 / 279

36 Zgodność zakresowa function bounds_consistent(c, D) let C be of form c 1 ^ ^c n C 0 {c 1,...,c n } while C 0 6 ; do choose c 2 C 0 C 0 C 0 {c} D 1 bounds_consistent_primitive(c, D) if D 1 is a false domain then return D 1 for i 1,...,n do if there exists x 2 vars(c i ) such that D 1 (x) 6= D(x) then C 0 C 0 [{c i } D D 1 return DP. Kobylański Wprowadzenie do Sztucznej Inteligencji 239 / 279

37 Zgodność zakresowa Niepełny solver zgodny zakresowo: C jest ograniczeniem D jest dziedziną P. Kobylański Wprowadzenie do Sztucznej Inteligencji 240 / 279

38 Zgodność zakresowa function bounds_solv(c, D) D bounds_consistent(c, D) if D is a false domain then return false else if D is a valuation domain then return satisfiable(c, D) else return unknown P. Kobylański Wprowadzenie do Sztucznej Inteligencji 241 / 279

39 Zgodność zakresowa Pełny solver zgodny zakresowo: C jest ograniczeniem D, D 1 są dziedzinami x jest zmienną d jest wartością z dziedziny P. Kobylański Wprowadzenie do Sztucznej Inteligencji 242 / 279

40 Zgodność zakresowa function back_bounds_solv(c, D) D bounds_consistent(c, D) if D is a false domain then return false else if D is a valuation domain then if satisfiable(c, D) then return D else return false choose variable x such that D(x) 2 foreach d 2 D(x) do D 1 back_bounds_solv(c ^ x = d, D) if D 1 6 false then return D 1 return false P. Kobylański Wprowadzenie do Sztucznej Inteligencji 243 / 279

41 Uogólniona zgodność Rozpatrzmy dla n zmiennych X 1,...,X n ograniczenie alldi erent([x 1,...,X n ]), spełnione przez n wartości parami różnych: X i 6= X j, dla i 6= j. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 244 / 279

42 Uogólniona zgodność Example Poniższy CSP nie ma rozwiązania ale samo badanie zgodności łukowej nie jest w stanie tego wykryć: D(X 1 )={0, 1} X 1 X 3 D(X 3 )={0, 1} X 2 D(X 2 )={0, 1} Przykład w GNU Prologu:?- fd_domain([x1, X2, X3], 0, 1), fd_all_different([x1, X2, X3]). X1 = _#0(0..1) X2 = _#19(0..1) X3 = _#38(0..1) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 245 / 279

43 Uogólniona zgodność Example Różnica między predykatem all_different/1 a all_distinct/1 a w SICStus Prologu?- domain([x1, X2, X3], 0, 1), all_different([x1, X2, X3]). X1 in 0..1, X2 in 0..1, X3 in 0..1? yes?- domain([x1, X2, X3], 0, 1), all_distinct([x1, X2, X3]). no a Jean Charles Regin. A filtering algorithm for constraints of difference in CSPs. AAAI-94, Seattle, WA, USA, pp , P. Kobylański Wprowadzenie do Sztucznej Inteligencji 246 / 279

44 Uogólniona zgodność Czy istnieje matching pokrywający wszystkie zmienne? Zmienne Wartości X 1 0 X 2 1 X 3 P. Kobylański Wprowadzenie do Sztucznej Inteligencji 247 / 279

45 Rozpatrzmy n czynności rozpoczynających się w chwilach S 1,...,S n i trwających odpowiednio D 1,...,D n jednostek czasu. Załóżmy, że każda z tych czynności wymaga pewnej liczby zasobu (np. ludzi ją wykonujących). Niech R 1,...,R n będzie wymaganą liczbą zasobu dla n czynności. Dodatkowo załóżmy, że posiadamy jedynie L jednostek zasobu (limit zasobu). Wżadnejchwilisumaprzydzielonychzasobówdoczynności wykonywanych w tej chwili (skumulowany zasób) nie może przekroczyć zadanego limitu. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 248 / 279

46 Uogólniona zgodność Dla chwili t, niechj t jest podzbiorem indeksów {1,...,n}, tż. S i < t < S i + D i. Jest to zbiór indeksów tych czynności jakie wykonywane są w chwili t. Ograniczenie: cumulative([s 1,...,S n ], [D 1,...,D n ], [R 1,...,R n ], L), wyraża warunek, że w każdej chwili skumulowany zasób nie przekracza limitu: 8 t X i2j t R i apple L. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 249 / 279

47 Uogólniona zgodność Example Rozpatrzmy cztery czynności o czasach trwania D 1 = 30, D 2 = 10, D 3 = 20, D 4 = 10 i wymaganej liczbie ludzi R 1 = 3, R 2 = 4, R 3 = 1, R 4 = 1. Czy możliwe jest wykonanie tych czynności w przedziale czasu długości 40 jednostek, jeśli dostępnych jest 4 ludzi? Chwile rozpoczęcia czynności 0 apple S i apple 40 D i,dlai = 1, 2, 3, 4, muszą spełniać ograniczenie: cumulative([s 1, S 2, S 3, S 4 ], [30, 10, 20, 10], [3, 4, 1, 1], 4). P. Kobylański Wprowadzenie do Sztucznej Inteligencji 250 / 279

48 Uogólniona zgodność Example (cd.) Harmonogram wykonania czynności: 4 3 Task 4 L=4 Task R 1 Task 1 D 1 Task P. Kobylański Wprowadzenie do Sztucznej Inteligencji 251 / 279

49 Uogólniona zgodność Rozpatrzmy ograniczenie element(i, [V 1,...,V n ], X ), które wiąże listę wartości całkowitych V 1,...,V n zwartościąx na tej liście ipozycjąi, na której ta wartość występuje na liście. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 252 / 279

50 Uogólniona zgodność Example Przykład w SICStus Prologu:?- element(i, [3, 5, 3, 9, 6, 7, 2], X). I in 1..7, X in 2..9? yes?- element(i, [3, 5, 3, 9, 6, 7, 2], X), X #> 4. I in{2}\/(4..6), X in 5..9? yes P. Kobylański Wprowadzenie do Sztucznej Inteligencji 253 / 279

51 Optymalizacja arytmetycznych CSP Optymalizator całkowitoliczbowy oparty na próbach: C ograniczenie arytmetyczne D dziedzina D val dziedzina będąca waluacją albo false f arytmetyczne wyrażenie rozwiązanie best albo rozwiązanie albo false Wykorzystuje funkcję int_solv(c, D), która dla arytmetycznego ograniczenia C zwraca albo waluację albo false (np. back_bounds_solv). P. Kobylański Wprowadzenie do Sztucznej Inteligencji 254 / 279

52 Optymalizacja arytmetycznych CSP function retry_int_opt(c, D, f, best ) D val int_solv(c, D) if D val false then return best else let be the solution corresponding to D val return retry_int_opt(c ^ f < (f ), D, f, ) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 255 / 279

53 Optymalizacja arytmetycznych CSP Example Przykład w GNU Prologu:?- fd_domain([x,y], 0, 5), 2*X+3*Y #>= 20, F #= X+2*Y, fd_labeling([x, Y]). F = 13 X = 3 Y = 5?- fd_domain([x,y], 0, 5), 2*X+3*Y #>= 20, F #= X+2*Y, F #< 13, fd_labeling([x, Y]). F = 12 X = 4 Y = 4?- fd_domain([x,y], 0, 5), 2*X+3*Y #>= 20, F #= X+2*Y, F #< 12, fd_labeling([x, Y]). no P. Kobylański Wprowadzenie do Sztucznej Inteligencji 256 / 279

54 Optymalizacja arytmetycznych CSP Optymalizator całkowitoliczbowy z nawrotami: C ograniczenie arytmetyczne D dziedzina f arytmetyczne wyrażenie best albo rozwiązanie albo false Wykorzystuje funkcję int_consistent(c, D) będącą solverem opartym na zgodności, który zwraca dziedzinę D 1,tż.C zdziedzinąd ma te same rozwiązania co C zdziedzinąd 1. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 257 / 279

55 Optymalizacja arytmetycznych CSP function back_int_opt(c, D, f, best ) D int_consistent(c, D) if D false then return best else if D is a valuation domain then return the solution corresponding to D choose variable x 2 vars(c) for which D(x) 2 W D(x) foreach d 2 W do if best 6 false then c f < best (f ) else c true best back_int_opt(c ^ c ^ x = d, D, f, best ) return best P. Kobylański Wprowadzenie do Sztucznej Inteligencji 258 / 279

56 Optymalizacja arytmetycznych CSP Całkowitoliczbowy optymalizator korzystający z optymalizatora na liczbach rzeczywistych: d wartość rzeczywista x zmienna f całkowitoliczbowe wyrażenie, best waluacje albo false C całkowitoliczbowe ograniczenie Wykorzystuje funkcję real_opt(c, f ), która albo zwraca false albo zwraca optymalne rozwiązanie na liczbach rzeczywistych. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 259 / 279

57 Optymalizacja arytmetycznych CSP function bb_int_opt(c, f, best ) real_opt(c, f ) if false then return best if best 6 false and (f ) > best (f ) then return best choose variable x such that d = (x) is not an integer best bb_int_opt(c ^ x applebdc, f, best ) best bb_int_opt(c ^ x dde, f, best ) return best P. Kobylański Wprowadzenie do Sztucznej Inteligencji 260 / 279

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański

Bardziej szczegółowo

CLP Programowanie logiczne z ograniczeniami.

CLP Programowanie logiczne z ograniczeniami. CLP Programowanie logiczne z ograniczeniami. Wstęp Programowanie z ograniczeniami (Constraint Programming CP) stało się w ostatnich latach popularnym sposobem modelowania i rozwiązywania wielu problemów

Bardziej szczegółowo

Programowanie w Logice Przykłady programów. Przemysław Kobylański

Programowanie w Logice Przykłady programów. Przemysław Kobylański Programowanie w Logice Przykłady programów Przemysław Kobylański Język Imperator 1 jest prostym językiem imperatywnym. Jego składnię opisuje poniższa gramatyka BNF: PROGRAM ::= PROGRAM ::= INSTRUKCJA ;

Bardziej szczegółowo

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację

Bardziej szczegółowo

Zasada indukcji matematycznej

Zasada indukcji matematycznej Zasada indukcji matematycznej Twierdzenie 1 (Zasada indukcji matematycznej). Niech ϕ(n) będzie formą zdaniową zmiennej n N 0. Załóżmy, że istnieje n 0 N 0 takie, że 1. ϕ(n 0 ) jest zdaniem prawdziwym,.

Bardziej szczegółowo

LOGIKA I TEORIA ZBIORÓW

LOGIKA I TEORIA ZBIORÓW LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja

Bardziej szczegółowo

Programowanie Funkcyjne. Marcin Kubica Świder,

Programowanie Funkcyjne. Marcin Kubica Świder, Programowanie Funkcyjne Marcin Kubica Świder, 28-04-2015 Czym jest programowanie funkcyjne? Obliczalne pojęcia matematyczne. Definicje stałych i funkcji i relacji. Wszystkie definicje są konstruktywne,

Bardziej szczegółowo

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka

Bardziej szczegółowo

Elementy logiki matematycznej

Elementy logiki matematycznej Elementy logiki matematycznej Przedmiotem logiki matematycznej jest badanie tzw. wyrażeń logicznych oraz metod rozumowania i sposobów dowodzenia używanych w matematyce, a także w innych dziedzinach, w

Bardziej szczegółowo

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp

Bardziej szczegółowo

Programowanie w Logice

Programowanie w Logice Programowanie w Logice Przeszukiwanie rozwiązań Przemysław Kobylański Generowanie wszystkich rozwiązań Prolog nie tylko potrafi sprawdzić czy dana spełnia warunek ale również potrafi wygenerować wszystkie

Bardziej szczegółowo

Programowanie liniowe

Programowanie liniowe Programowanie liniowe Mirosław Sobolewski Wydział Matematyki, Informatyki i Mechaniki UW wykład z algebry liniowej Warszawa, styczeń 2015 Mirosław Sobolewski (UW) Warszawa, 2015 1 / 16 Homo oeconomicus=

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Kilka podstawowych pojęć Definition Programy imperatywne zmieniają stan, czyli wartości zmiennych. Asercja = warunek logiczny, który

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą

Bardziej szczegółowo

Programowanie liniowe

Programowanie liniowe Programowanie liniowe Mirosław Sobolewski Wydział Matematyki, Informatyki i Mechaniki UW wykład z algebry liniowej Warszawa, styczeń 2010 Mirosław Sobolewski (UW) Warszawa, 2009 1 / 15 Homo oeconomicus=

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Wyszukiwanie wzorców w tekście 1 Wyszukiwanie wzorców w tekście Problem wyszukiwania wzorca w tekście Na tym wykładzie zajmiemy się

Bardziej szczegółowo

Wykład 7 i 8. Przeszukiwanie z adwersarzem. w oparciu o: S. Russel, P. Norvig. Artificial Intelligence. A Modern Approach

Wykład 7 i 8. Przeszukiwanie z adwersarzem. w oparciu o: S. Russel, P. Norvig. Artificial Intelligence. A Modern Approach (4g) Wykład 7 i 8 w oparciu o: S. Russel, P. Norvig. Artificial Intelligence. A Modern Approach P. Kobylański Wprowadzenie do Sztucznej Inteligencji 177 / 226 (4g) gry optymalne decyzje w grach algorytm

Bardziej szczegółowo

Podstawowe własności grafów. Wykład 3. Własności grafów

Podstawowe własności grafów. Wykład 3. Własności grafów Wykład 3. Własności grafów 1 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2). 2 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2).

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Programowanie funkcyjne. Wykªad 13

Programowanie funkcyjne. Wykªad 13 Programowanie funkcyjne. Wykªad 13 Siªa wyrazu rachunku lambda Zdzisªaw Spªawski Zdzisªaw Spªawski: Programowanie funkcyjne. Wykªad 13, Siªa wyrazu rachunku lambda 1 Wst p Warto±ci logiczne Liczby naturalne

Bardziej szczegółowo

Visual Basic for Application (VBA)

Visual Basic for Application (VBA) Visual Basic for Application (VBA) http://dzono4.w.interia.pl Książka Visual Basic dla aplikacji w Office XP PL, autorzy: Edward C. Willett i Steve Cummings, Wyd. Helion Typy zmiennych Różne dane różnie

Bardziej szczegółowo

Wstęp do programowania. Różne różności

Wstęp do programowania. Różne różności Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Projekt 4: Programowanie w logice

Projekt 4: Programowanie w logice Języki Programowania Projekt 4: Programowanie w logice Środowisko ECL i PS e W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem http://eclipseclp.org/. Po zainstalowaniu

Bardziej szczegółowo

Informatyka A. Algorytmy

Informatyka A. Algorytmy Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część ósma Tablice znaków i przetwarzanie napisów Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Informatyka 1. Przetwarzanie tekstów

Informatyka 1. Przetwarzanie tekstów Informatyka 1 Wykład IX Przetwarzanie tekstów Robert Muszyński ZPCiR ICT PWr Zagadnienia: reprezentacja napisów znakowych, zmienne napisowe w Sun Pascalu, zgodność typów, operowanie na napisach: testowanie

Bardziej szczegółowo

Programowanie w Logice

Programowanie w Logice Programowanie w Logice Działanie Prologu Przemysław Kobylański na podstawie [CM2003] Składnia Programy Prologu składają się z termów. Term to stała, zmienna lub struktura (term złożony). Term zapisuje

Bardziej szczegółowo

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu Informatyka 1 Wykład V Procedury i funkcje, struktura programu w Pascalu Robert Muszyński ZPCiR IIAiR PWr Zagadnienia: deklaracje procedury i funkcji, parametry procedur i funkcji, reguły użycia parametrów

Bardziej szczegółowo

Metody indukcji reguł

Metody indukcji reguł Metody indukcji reguł Indukcja reguł Grupa metod charakteryzująca się wydobywaniem reguł ostrych na podstawie analizy przypadków. Dane doświadczalne składają się z dwóch części: 1) wejściowych X, gdzie

Bardziej szczegółowo

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13 35. O zdaniu 1 T (n) udowodniono, że prawdziwe jest T (1), oraz że dla dowolnego n 6 zachodzi implikacja T (n) T (n+2). Czy można stąd wnioskować, że a) prawdziwe jest T (10), b) prawdziwe jest T (11),

Bardziej szczegółowo

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne: Instrukcje podsumowanie Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne: - grupująca end - warunkowa if

Bardziej szczegółowo

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest

Bardziej szczegółowo

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch Wykład 8 Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. Smok podsuszony zmok (patrz: Zmok). Zmok zmoczony smok (patrz: Smok). L. Peter Deutsch Stanisław Lem Wizja lokalna J. Cichoń, P. Kobylański

Bardziej szczegółowo

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski Systemy ekspertowe i ich zastosowania Katarzyna Karp Marek Grabowski Plan prezentacji Wstęp Własności systemów ekspertowych Rodzaje baz wiedzy Metody reprezentacji wiedzy Metody wnioskowania Języki do

Bardziej szczegółowo

3.Funkcje elementarne - przypomnienie

3.Funkcje elementarne - przypomnienie 3.Funkcje elementarne - przypomnienie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie rzegorz Kosiorowski (Uniwersytet Ekonomiczny3.Funkcje w Krakowie) elementarne - przypomnienie 1 / 51 1 Funkcje

Bardziej szczegółowo

Rachunek różniczkowy funkcji dwóch zmiennych

Rachunek różniczkowy funkcji dwóch zmiennych Rachunek różniczkowy funkcji dwóch zmiennych Definicja Spis treści: Wykres Ciągłość, granica iterowana i podwójna Pochodne cząstkowe Różniczka zupełna Gradient Pochodna kierunkowa Twierdzenie Schwarza

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Funkcje rzeczywiste jednej. Matematyka Studium doktoranckie KAE SGH Semestr letni 2008/2009 R. Łochowski

Funkcje rzeczywiste jednej. Matematyka Studium doktoranckie KAE SGH Semestr letni 2008/2009 R. Łochowski Funkcje rzeczywiste jednej zmiennej rzeczywistej Matematyka Studium doktoranckie KAE SGH Semestr letni 2008/2009 R. Łochowski Definicje Funkcją (odwzorowaniem) f, odwzorowującą zbiór D w zbiór P nazywamy

Bardziej szczegółowo

Programowanie deklaratywne

Programowanie deklaratywne Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne

Bardziej szczegółowo

III. Funkcje rzeczywiste

III. Funkcje rzeczywiste . Pojęcia podstawowe Załóżmy, że dane są dwa niepuste zbiory X i Y. Definicja. Jeżeli każdemu elementowi x X przyporządkujemy dokładnie jeden element y Y, to mówimy, że na zbiorze X została określona funkcja

Bardziej szczegółowo

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel SQL, LIKE, IN, CASE, EXISTS Marcin Orchel Spis treści 1 LIKE 2 2 BETWEEN 4 3 IN 5 4 EXISTS 6 5 WYRAŻENIA CASE 7 6 Zadania 9 1 Rozdział 1 LIKE Predykat LIKE jest testem dopasowującym wzorzec łańcucha. Składnia

Bardziej szczegółowo

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Helena Boguta, klasa 8W, rok szkolny 2018/2019 Poniższy zbiór zadań został wykonany w ramach projektu Mazowiecki program stypendialny dla uczniów szczególnie uzdolnionych - najlepsza inwestycja w człowieka w roku szkolnym 2018/2019. Składają się na

Bardziej szczegółowo

B jest globalnym pokryciem zbioru {d} wtedy i tylko wtedy, gdy {d} zależy od B i nie istnieje B T takie, że {d} zależy od B ;

B jest globalnym pokryciem zbioru {d} wtedy i tylko wtedy, gdy {d} zależy od B i nie istnieje B T takie, że {d} zależy od B ; Algorytm LEM1 Oznaczenia i definicje: U - uniwersum, tj. zbiór obiektów; A - zbiór atrybutów warunkowych; d - atrybut decyzyjny; IND(B) = {(x, y) U U : a B a(x) = a(y)} - relacja nierozróżnialności, tj.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Przykłady problemów optymalizacyjnych

Przykłady problemów optymalizacyjnych Przykłady problemów optymalizacyjnych NAJKRÓTSZA ŚCIEŻKA W zadanym grafie G = (V, A) wyznacz najkrótsza ścieżkę od wierzchołka s do wierzchołka t. 2 7 5 5 3 9 5 s 8 3 1 t 2 2 5 5 1 5 4 Przykłady problemów

Bardziej szczegółowo

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie),

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie), Elementy logiki 1 Przykłady zdań w matematyce Zdania prawdziwe: 1 3 + 1 6 = 1 2, 3 6, 2 Q, Jeśli x = 1, to x 2 = 1 (x oznacza daną liczbę rzeczywistą), Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości

Bardziej szczegółowo

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;

Bardziej szczegółowo

1 Określenie pierścienia

1 Określenie pierścienia 1 Określenie pierścienia Definicja 1. Niech P będzie zbiorem, w którym określone są działania +, (dodawanie i mnożenie). Mówimy, że struktura (P, +, ) jest pierścieniem, jeżeli spełnione są następujące

Bardziej szczegółowo

MiniZinc. Technologie programistyczne,

MiniZinc. Technologie programistyczne, MiniZinc Technologie programistyczne, 2018-2019 http://www.minizinc.org Co to jest MiniZinc? Język do opisów problemów decyzyjnych i optymalizacyjnych z ograniczeniami Zmienne decyzyjne liczbowe (int,

Bardziej szczegółowo

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA? /9/ Zagadnienie transportowe Optymalizacja w procesach biznesowych Wykład --9 Plan wykładu Przykład zagadnienia transportowego Sformułowanie problemu Własności zagadnienia transportowego Metoda potencjałów

Bardziej szczegółowo

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW http://metodycy.torun.pl/ m.informatyka@metodycy.torun.pl 1. Wprowadzenie do Pythona podstawowe informacje Python to język programowania wysokiego poziomu,

Bardziej szczegółowo

Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda

Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda Zdzisław Spławski Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 1 Wstęp Wartości logiczne Liczby naturalne

Bardziej szczegółowo

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy ZAKLESZCZENIA w SO brak środków zapobiegania zakleszczeniom Zamówienia na zasoby => przydział dowolnego egzemplarza danego typu Zasoby w systemie typy; identyczne egzemplarze procesory obszary pamięci

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy i Struktury Danych, 2. ćwiczenia Algorytmy i Struktury Danych, 2. ćwiczenia 2015-10-09 Spis treści 1 Szybkie potęgowanie 1 2 Liczby Fibonacciego 2 3 Dowód, że n 1 porównań jest potrzebne do znajdowania minimum 2 4 Optymalny algorytm do

Bardziej szczegółowo

Prawdopodobieństwo. Prawdopodobieństwo. Jacek Kłopotowski. Katedra Matematyki i Ekonomii Matematycznej SGH. 16 października 2018

Prawdopodobieństwo. Prawdopodobieństwo. Jacek Kłopotowski. Katedra Matematyki i Ekonomii Matematycznej SGH. 16 października 2018 Katedra Matematyki i Ekonomii Matematycznej SGH 16 października 2018 Definicja σ-algebry Definicja Niech Ω oznacza zbiór niepusty. Rodzinę M podzbiorów zbioru Ω nazywamy σ-algebrą (lub σ-ciałem) wtedy

Bardziej szczegółowo

Adam Meissner.

Adam Meissner. Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis SZTUCZNA INTELIGENCJA Podstawy logiki pierwszego rzędu

Bardziej szczegółowo

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski METODA SYMPLEKS Maciej Patan Uniwersytet Zielonogórski WSTĘP Algorytm Sympleks najpotężniejsza metoda rozwiązywania programów liniowych Metoda generuje ciąg dopuszczalnych rozwiązań x k w taki sposób,

Bardziej szczegółowo

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych

Bardziej szczegółowo

Optimizing Programs with Intended Semantics

Optimizing Programs with Intended Semantics Interaktywna optymalizacja programów 26 kwietnia 2010 Spis treści Spis treści Wstęp Omówienie zaproponowanego algorytmu na przykładzie Wewnętrzna reprezentacja reguł dotyczących optymalizacji Wybrane szczegóły

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa Informatyka 1 Wykład III Wyrażenia i instrukcje, złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: składnia wyrażeń, drzewa rozbioru gramatycznego i wyliczenia wartości wyrażeń, operatory

Bardziej szczegółowo

Agenda. Politechnika Poznańska WMRiT ZST. Piotr Sawicki Optymalizacja w transporcie 1. Kluczowe elementy wykładu. WPROWADZENIE Cel i zakres wykładu.

Agenda. Politechnika Poznańska WMRiT ZST. Piotr Sawicki Optymalizacja w transporcie 1. Kluczowe elementy wykładu. WPROWADZENIE Cel i zakres wykładu. Tytuł: 01 Budowa portfela produktowego. Zastosowanie programowania liniowego Autor: Piotr SAWICKI Zakład Systemów Transportowych WMRiT PP piotr.sawicki@put.poznan.pl www.put.poznan.pl/~piotr.sawicki www.facebook.com/piotr.sawicki.put

Bardziej szczegółowo

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI POLITECHNIKA WARSZAWSKA WYDZIAŁ MECHANICZNY ENERGETYKI I LOTNICTWA MEL WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI NS 586 Dr inż. Franciszek Dul 5. ROZWIĄZYWANIE PROBLEMÓW Z OGRANICZENIAMI Problemy z ograniczeniami

Bardziej szczegółowo

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie Wykład 8. Kolorowanie 1 / 62 Kolorowanie wierzchołków - definicja Zbiory niezależne Niech G będzie grafem bez pętli. Definicja Mówimy, że G jest grafem k kolorowalnym, jeśli każdemu wierzchołkowi możemy

Bardziej szczegółowo

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma}; INSTRUKCJA PUSTA Nie składa się z żadnych znaków i symboli, niczego nie robi Przykłady: for i := 1 to 10 do {tu nic nie ma}; while a>0 do {tu nic nie ma}; if a = 0 then {tu nic nie ma}; INSTRUKCJA CASE

Bardziej szczegółowo

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW RELACJE MIEDZY KLASAMI ZŁOŻONOŚCI Bartosz Zieliński Katedra Fizyki Teoretycznej i Informatyki Zima 2011-2012 KLASY ZŁOŻONOŚCI KLASE ZŁOŻONOŚCI OPISUJE SIE PODAJAC: Model

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Złożoność obliczeniowa

Złożoność obliczeniowa Złożoność obliczeniowa Jakub Michaliszyn 26 kwietnia 2017 Są problemy rozstrzygalne i nierozstrzygalne Są problemy rozstrzygalne i nierozstrzygalne Jak rozwiązywać te, które są rozstrzygalne? Są problemy

Bardziej szczegółowo

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym 1 Wykład 6 Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym ELIMINACJA GAUSSA Z WYBOREM CZĘŚCIOWYM ELEMENTÓW PODSTAWOWYCH 2 Przy pomocy klasycznego algorytmu eliminacji

Bardziej szczegółowo

LibreOffice Calc VBA

LibreOffice Calc VBA LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć

Bardziej szczegółowo

Elementy Modelowania Matematycznego

Elementy Modelowania Matematycznego Elementy Modelowania Matematycznego Wykład 6 Metoda simpleks Spis treści Wstęp Zadanie programowania liniowego Wstęp Omówimy algorytm simpleksowy, inaczej metodę simpleks(ów). Jest to stosowana w matematyce

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty

Bardziej szczegółowo

Przykładowe B+ drzewo

Przykładowe B+ drzewo Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku

Bardziej szczegółowo

Prawdopodobieństwo i statystyka

Prawdopodobieństwo i statystyka Wykład VII: Metody specjalne Monte Carlo 24 listopada 2014 Transformacje specjalne Przykład - symulacja rozkładu geometrycznego Niech X Ex(λ). Rozważmy zmienną losową [X ], która przyjmuje wartości naturalne.

Bardziej szczegółowo

Podstawy Sztucznej Inteligencji (PSZT)

Podstawy Sztucznej Inteligencji (PSZT) Podstawy Sztucznej Inteligencji (PSZT) Paweł Wawrzyński Uczenie maszynowe Sztuczne sieci neuronowe Plan na dziś Uczenie maszynowe Problem aproksymacji funkcji Sieci neuronowe PSZT, zima 2013, wykład 12

Bardziej szczegółowo

Programowanie deklaratywne

Programowanie deklaratywne Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne

Bardziej szczegółowo

Sztuczna Inteligencja i Systemy Doradcze

Sztuczna Inteligencja i Systemy Doradcze Sztuczna Inteligencja i Systemy Doradcze Przeszukiwanie przestrzeni stanów problemy z więzami Przeszukiwanie przestrzeni stanów problemy z więzami 1 Problemy z wiezami (CSP) Ogólnie: stan jest czarną skrzynką,

Bardziej szczegółowo

Standardowe zadanie programowania liniowego. Gliwice 1

Standardowe zadanie programowania liniowego. Gliwice 1 Standardowe zadanie programowania liniowego 1 Standardowe zadanie programowania liniowego Rozważamy proces, w którym zmiennymi są x 1, x 2,, x n. Proces poddany jest m ograniczeniom, zapisanymi w postaci

Bardziej szczegółowo

Wykład 6. Wyszukiwanie wzorca w tekście

Wykład 6. Wyszukiwanie wzorca w tekście Wykład 6 Wyszukiwanie wzorca w tekście 1 Wyszukiwanie wzorca (przegląd) Porównywanie łańcuchów Algorytm podstawowy siłowy (naive algorithm) Jak go zrealizować? Algorytm Rabina-Karpa Inteligentne wykorzystanie

Bardziej szczegółowo

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal Instrukcja wyboru, pętle 2 wykład. Podstawy programowania - Paskal Tematy Instrukcja wyboru jeden z wielu wariantów: case Pętle while repeat for Instrukcje sterowania pętli break continue goto Instrukcja

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć

Bardziej szczegółowo

Indukowane Reguły Decyzyjne I. Wykład 3

Indukowane Reguły Decyzyjne I. Wykład 3 Indukowane Reguły Decyzyjne I Wykład 3 IRD Wykład 3 Plan Powtórka Grafy Drzewa klasyfikacyjne Testy wstęp Klasyfikacja obiektów z wykorzystaniem drzewa Reguły decyzyjne generowane przez drzewo 2 Powtórzenie

Bardziej szczegółowo

Elementy języka Scheme

Elementy języka Scheme Elementy języka Scheme Historia języka Lisp Historia języka Lisp Wyrażenia i ewaluacja wyrażeń Identyfikatory i wyrażenie let Wyrażenia lambda Definicje globalne Wyrażenia warunkowe Przypisanie Kontynuacje

Bardziej szczegółowo

Wprowadzenie komentarzy do programu

Wprowadzenie komentarzy do programu Wprowadzenie komentarzy do programu W programach mogą wystąpić objaśnienia, uwagi zamykane w klamrach { } lub nawiasach z gwiazdką (* *). Komentarze ułatwiają zrozumienie programów. Przyjmijmy, że komentarze

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik Programowanie liniowe całkowitoliczbowe Tadeusz Trzaskalik .. Wprowadzenie Słowa kluczowe Rozwiązanie całkowitoliczbowe Założenie podzielności Warunki całkowitoliczbowości Czyste zadanie programowania

Bardziej szczegółowo

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie

Bardziej szczegółowo

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji

Bardziej szczegółowo

Modelowanie złożonych układów cyfrowych (1)

Modelowanie złożonych układów cyfrowych (1) Modelowanie złożonych układów cyfrowych () funkcje i procedury przykłady (przerzutniki, rejestry) style programowania kombinacyjne bloki funkcjonalne bufory trójstanowe multipleksery kodery priorytetowe

Bardziej szczegółowo

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel Wstęp do programowania Listy Piotr Chrząstowski-Wachtel Do czego stosujemy listy? Listy stosuje się wszędzie tam, gdzie występuje duży rozrzut w możliwym rozmiarze danych, np. w reprezentacji grafów jeśli

Bardziej szczegółowo

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie. Wykład 4 Algorytmy + struktury danych = programy Niklaus Wirth Algorytm = logika + sterowanie Robert Kowalski J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 80 / 277 algorytm program język

Bardziej szczegółowo

Sztuczna Inteligencja i Systemy Doradcze

Sztuczna Inteligencja i Systemy Doradcze Sztuczna Inteligencja i Systemy Doradcze Przeszukiwanie przestrzeni stanów algorytmy ślepe Przeszukiwanie przestrzeni stanów algorytmy ślepe 1 Strategie slepe Strategie ślepe korzystają z informacji dostępnej

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0 ĆWICZENIE 1 Klasyczny Rachunek Zdań (KRZ): zdania w sensie logicznym, wartości logiczne, spójniki logiczne, zmienne zdaniowe, tabele prawdziwościowe dla spójników logicznych, formuły, wartościowanie zbioru

Bardziej szczegółowo

Języki i metody programowania

Języki i metody programowania Języki i metody programowania Wykład 3 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Wartości boolowskie

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa. Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa. Maja Czoków, Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2011-10-11 1 Modelowanie funkcji logicznych

Bardziej szczegółowo

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Mechanizmy komunikacji spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Język CSP Hoare (1978r.) Communicating Sequential Processes

Bardziej szczegółowo