một thẻ, thì chuyển tiếp này là có thểvượt qua ñược, n u chuyển tiếp này ñược thực hiện thì tất cảcác nút vào của chuyển tiếp sẽbị ấy ñi một thẻ, và một thẻ sẽ ñược thêm vào tất cảcác nú
Trang 6S ố ñ úng
S ố sai
B ấ m s ố
K ế t n ố ñượ c
Trang 10t1
Trang 11một thẻ, thì chuyển tiếp này là có thểvượt qua ñược,
n u chuyển tiếp này ñược thực hiện thì tất cảcác nút
vào của chuyển tiếp sẽbị ấy ñi một thẻ, và một thẻ
sẽ ñược thêm vào tất cảcác nút ra của chuyển tiế
n u nhiều chuyển tiếp là có thể vượt qua thì chọn
chuyển tiếp nào cũng ñược
hoặc t3 ñược vượt qua
hoặc t4 ñược vượt qua
Trang 12Ví d ụ
Trang 14green2
yr2
gy2safe2
safe1
Trang 15Ví d ụ 2: mô t ả chu k ỳ s ố ng c ủ a m ộ t ng ườ i
thanh niêntrẻ con
send_mail
read_mail
Mô tả trường hợp 1 người viết và 2 người ñọc ?
Mô tả trường hợp hộp thư nhận chỉchứa nhiều nhất 3 thư ?
Trang 16Ví d ụ 4: tình hu ố ng ngh ẽ n (dead-lock)
2 2
P6
P4
P3 P1
Ví d ụ 4: gi ả i pháp ch ố ng ngh ẽ
2 2
P6
P4
P3 P1
Trang 18S ả n xu ấ t
P2
C2 C1
pre-condiition: ñặc tảcác ràng buộc trên các tham
sốtrước khi hàm ñược thực thi
post-condition: ñặc tảcác ràng buộc trên các tham
sốsau khi hàm ñược thực thi
Trang 19pre ∀i, 1 ≤i ≤n, a[i] ≤a[i+1]
post result = (∃i, 1 ≤i ≤n, a[i] = e)
Trang 20¬_ : Boolean →Boolean _ ∧∧∧∧_ : Boolean x Boolean →Boolean _ ∨∨∨∨_ : Boolean x Boolean →Boolean
một thao tác không có tham sốlà một hằng số
một giá trịcủa kiểu trừu tượng ñịnh nghĩa ñược biểu diễn bởi kí tự“_”
Trang 21¬_ : Boolean →Boolean _ ∧∧∧∧_ : Boolean x Boolean →Boolean _ ∨∨∨∨_ : Boolean x Boolean →Boolean
một thao tác không có tham sốlà một hằng số
một giá trịcủa kiểu trừu tượng ñịnh nghĩa ñược biểu diễn bởi kí tự“_”
vect : Integer x Integer →Vector
init : Vector x Integer →Boolean
ith : Vector x Integer →Element
change-ith : Vector x Integer x Element →Vector
supborder : Vector →Integer
infborder : Vector →Integer
Trang 22infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) ⇒ith(change-ith(v, i, e), i) = e
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) &infborder(v) ≤≤≤≤j ≤≤≤≤supborder(v) &i ≠≠≠≠j ⇒
ith(change-ith(v, i, e), j) = ith(v, j)
init(vect(i, j), k) = false
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) ⇒init(change-ith(v, i, e), i) = true
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) &i ≠≠≠≠j ⇒init(change-ith(v, i, e), j) = init(v, j)