Trờng đại học bách khoa Hà Nộikhoa công nghệ thông tin ---o0o---Báo cáo thực tập tốt nghiệp đề tài : bảng phơng án Giáo viên hớng dẫn : Nguyễn Thanh Tùng Sinh viên thực hiện : Hà Nội
Trang 1Trờng đại học bách khoa Hà Nội
khoa công nghệ thông tin
-o0o -Báo cáo thực tập tốt nghiệp
đề tài : bảng phơng án
Giáo viên hớng dẫn : Nguyễn Thanh Tùng
Sinh viên thực hiện :
Hà Nội 02 2004–
BảNG PHƯƠNG áN
I Bảng phơng án (Decision table)
- Bảng phơng án là công cụ mô tả các hành động cần thực hiện của các
điều kiện logic
- Giá trị trong chơng trình có nhiều điều kiện C1, C2, C3, …., Cn
Trang 2Điều kiện Ci nhận giá trị Ui ứng với dữ liệu vào Vậy ứng với một dữ liệu vào ta có một bộ giá trị
V = (V1; V2; V3; …, Vn;) Gọi là vector điều kiện Khi đó một vector V cần phải thực hiện một hành động A nào đó Khi
đó cấp {V; U) đợc gọi là quy tắc hành động, tập hợp các quy tắc hành động bảng phơng án Nh vậy bảng phơng án là:
+ Xét riêng từng hành động, các hành động này không vào nhau
+ Thích nghi với việc mô tả việc xử lý toàn tin trong thực hiện có các
điều kiện phức tạp (vì không phải móc nối các điều kiện phức tạp)
+ Tự động hoá mô tả các quy tắc thành điều khiển
- Là bảng 2 chiều nhng không có hớng dễ xây dựng hơn
- User chỏ có thể giải quyết đợc ≤ 5 điều kiện nếu mà lồng nhau (32 nhánh)
- Nếu vị chỉ = Đ (true)
S (False) Thể là bảng phơng án nhị phân
Ngợc lại bảng phơng án mở rộng và mỗi bảng phơng án mở rộng cần bảng phơng án nhị phân bằng cách thtêm một số điều kiện bổ trợ
Ví dụ: x có thể nhận các giá trị P1; P2; P3
Khi đó có thể biểu diễn
Yi = (1) 0
(2) 1
Và y1 + y2 + y3 = 1 thay vào xét x ta xét
y1, y2, y3 về lý thuyết ta chỉ xét bảng phơng án nhị phân còn bảng
ph-ơng án mở rộng có thể biến đổi đa về bảng phph-ơng án nhị phân
- Thờng bảng phơng án biểu diễn dới dạng bảng 2 chiều mà mỗi cột
t-ơng đt-ơng nội dung quy tắc hành động
C2 U21 U2n ← Giá trị điều kiện
Trang 3
Cn Un1 Unn
A1 Ann ← Hành động (Actions)
Ta không biểu diễn ở dạng này vì quá ít giá trị trên thực tế ứng với mỗi
điều kiện trong một quy tắc hành động có thể có 4 khả năng xảy ra do Vij của Ci
F {F, T}
(T or F phụ của tổ hợp một tập các điều kiện tơng
đ-ơng với hành động chuẩn)
Và có nhiều cách biểu diễn khác nhau, trong đó có một cách ngời ta biểu diễn
Vij phụ của Ci Y
N
- ; Biểu diễn điều kiện này trong quy tắc không -; Đóng vai trò quan trọng
Có 4 điều kiện
C4 không đóng vai trò trong hành động A1
- Quy tắc hành động: Để biểu diễn chận cần thêm quy tắc hành động ELSE C trong thực hiện còn lại
Ví dụ:
Trang 4C2 Y N N Else
- Tính chất bảng phơng án: Muốn thành lập bảng phơng án đúng cần bảo đảm 2 tính chất:
Không mẫu thuẫn: không tồn tại vector điều kiện tơng ứng với 2 hành động khác nhau C tức là 2 không tồn tại quy tắc hành động mà giao của
điều kiện khác nhau
Bảng phơng án fải đầy đủ tức là phải bao quát hết mỗi trơng hớp (Có hành động rỗng hay trơng hớp không phải làm gì cả)
- Nếu không có ELSE có 2n quy tắc hành động (quy tắc rút gọi): điều kiện cần kiểm tra tró đi để đảm bảo tính đầy đủ
- Cho phép một vecto điều kiện đợc mô tả ở nhiều quy tức hành động miễn là không dẫn đến mâu thuẫn
- Các hành đồng thờng đợc cho bởi vector các lời gọi {call} i lời gọi
đ-ợc đánh số từ 1 trở đi {0 dành cho hành động khác nhau} cần có ánh xạ từ tập {đối tợng} N+, việc ánh xạ thờng đợc thực hiện theo thứ tự từ điển nhng nhợc
điểm là: với dữ liệu không có chơng trình ta lại phải biến đổi thành dữ liệu có chơng trình (ví dụ với các tập hợp số {1, 2, 3,} và {3, 2, 1} ta ánh xạ {1, 2, 3}
về tập tự nhiên nhánh {1, 2, 3} và {3, 2, 1} cần phải chuẩn hoá
- Bảng phơng án đợc xây dựng nh trên phúc hợp với các chơng trình Macro (thông dịch) tuy nhiên không thích hợp với computer
- Biểu diễn dới dạng ma trận đánh dấu
Với bảng phơng án Bn x m → (Pn x m) trong đó các phân tử của P, Q là 0 và 1: Loại bỏ cột ELSE tơng ứng trong bảng B
Vậy Bij = Y
→ Pij =
1 Hay Pij
0
Đánh dấu những điều kiện thực sự cần phải kiểm tra còn
Qij =
1 (Đánh dấu những điều kiện thực sự cần kiểm tra) và nhận giá trị: Y (true)
1 0
Trang 5Ví dụ:
1 + 22 + 21 +1 : 8 đầy đủ Kiểm tra mẫu thuận không trùng cách kiểm tra từng cấp cột (1, 2) (1, 3) một → bảng này không mâu thuận
→ P =
1 0
0 1
1 1
1 1
1 1
0 1
; 0 =
0 0
0 1
0 0
1 0
1 0
0 1
: 2
Bảng nhị phân
P và Q thờng là ma trận tha, còn P thờng còn số lợng φ ít → ta còn Pđói với φ; Q có số 1 ít Q→ tha đối với 1→ ta có AP không thực hiện lu trữ ma trận cha đối với cả P và Q → biểu diễn đợc với ma trận có m x n lớn dùng các ma trận khối móc nối các điều kiện với nhau:
Những gì không biểu biểu diễn đợc với P và Q ⇒ biểu diễn = Z (phần tử)
Số điều khiển (n) số lợng chơng trình tờng đơng (Sn)
nối các đ/k với nhau
/N
C 1
or
1
2
Trang 6⇒ Sn+1 = (n + 1) S2
Xét bảng phơng án không có quy tắc ELSE, có 3 nhóm phơng pháp chính:
1 Phơng pháp khoá Số (Numberi key).
Input: - Bảng phơng án
- Vector điều kiện Output: - Hành động
- Bớc 1: Tính V = (V1, V2, …, Vn)
- Bớc 2: Xây dựng khoá là 1 số n Gọi Ki là bit thứ i = thứ
Ki = 0 nếu Vi = F
1 nếu Vi = T
- Bớc 3: Rẽ nhánh theo lệnh CAS
End;
m = 2n (nếu m < 2n → tức là có quy tắc ELSE)
1 K of
2 K of else
end;
Trang 7- Ưu điểm của phơng pháp này:
+ Đơn giản:
Nhng có nhợc điểm: quam trpọng là ĸ >> 1 → dạng biểu diễn không còn là dạng chuẩn và việc duyệt giá trị của ĸ là khó khăn
+ Không nếu đo hành động dới dạng rút gọn
+ Tính đầy đủ n giá trị của n điều kiện
Để đánh giá ngời ta tính số lợng kiểm tra trung bình (đẻ đi theo một nhánh nào đó ta phải tính) trong trờng hợp này 1 nhánh → ta phải tính ≤ n
điều kiện
- Dùng phơng pháp này khi các quy tắc hành động thực sự ít nhng đó phải ánh xạ sang tập giá trị thật sự
2 Lựa chọn theo ma trận đánh dấu.
- Bớc 1: Tính V = (V1, V2, … Vn)
x = (v1, v2, … , vn) Nhợc lại điểm phải tính giá trị của n điều kiện có vectơ
Nhị phân vi = 0 nếu Vi = F
1 nếu Vi = T
- Bớc 2: Kí hiệu Pi = j của P Tính Y = (y1, y2, … , yn)
Yi = Pji * vi
- Bớc 3: So sánh Y với cột Qj
Nếy Y = Qj → thực hiện hành động j
Ngợc lại tặng lên và quay lại bớc 2
Ví dụ:
P =
=
0 0 0 1
0 0 1 0
1 0 0 Q
1 0
0 1 0 0 1
1 1 1 1
1 1 0
1
Trang 8B =
3 2 1
C
C
C
N
N
N Y
Y
N
Y Y N
- Giả sử V (N N Y) → thực hiện hành động nào
G: x = (0, 0, 1)
Y =
1 0 0 1
0 0 0 0
0 0 0 0
4 3 2 1
Việc so sánh ở đây la so sánh bit → nhánh, số phép so sánh trung bình
(số lần thực hiện bớc 2 và bớc 3) là
2
m : 0n)
3 Phơng pháp rẽ nhánh lần lợt.
- Sơ đồ rẽ nhánh
+ Xây dựng điều kiện để kiểm tra đầu tiên chọn điều kiện sao cho tránh
đợc nhiều nhất việc tính các giá trị điều kiện không cần kiểm tra tiêu chuẩn chọn
Chọn điều kiện có số lợng – Min
Ví dụ: Trớc → chọn điều kiện 2 và dùng một vector đánh dấu điều kiện
đã kiểm tra (giá trị tơng ứng = 0)
Ví dụ: chọn điều kiện 2 để kiểm tra → (1, 0, 1)
C2
A
1 A
2 A
3
1
A
2
0 1
D
n
Đánh dấy hàng tham gia với bảng
PA con
Để biểu diễn ma trận này → biểu diễn C Vector 1 0 1 1 2 = 1
1 → C = N
Trang 9N Y N N
Số phép kiểm tra trung bình để xác định một hành động:
8
14 8
1
=
= +
+ +3 1 3 1 2 2 4
Không cần phải lu trữ toàn bộ cây xác định trên mà cần xác định điều kiện phụ / số lợng Y – số lợng N / → số phép kiểm tra trung bình giảm
Ví dụ ứng dụng bảng phơng án
Ví dụ 1: Các bài toán logic phức tạp Ví dụ: trò chơI xét trò chơi 2 ngời:
Có 5 quân bài đánh số từ 1: 5; ban đầu 5 quân bài đều ở trạng thái ngửa Tổng của 2 ngời bạn đầu ≥ 0 Hai ngời lần lợt đi theo quy tắc sau:
Mỗi ngời đến lợt mình úp 1 quân đang ở trạng thái ngửa cộng số quân bài vào 5 và bật quân bài bị úp trớc đó, ngời đấu trên có thể úp 1 quân bất kỳ trong các quân ở trạng thái ngời kết thúc khi ai làm cho S > 35 → thua
Lần t → 5 khả năng → 5 x 4 x 4 …
Lần t trở đi → 4 = 5 x 4k≥ 5 x 46
-C2
C
2
C3 Y N A
1 A
2
A3
A2
A
1
C2
C1
C3
A4
A
2
A
3
Y
Số phép kiểm tra
Trang 10Căn cứ vào 5 bớc đi đầu có thể đánh giá đợc mớc đi thắng hoặc thua →
35 x 5 = 165 trờng hợp
Nó đi ứng với trờng hợp S = 33 và S = 28 → goi là ngời thua
1 + + - - - - + + - - - + +
2 - + + - - - - + - - - +
3 - + + - - - + - - + - - +
4 - - - + - - - + - - -
-5 - - + - + - - - - + + - - -
-Nếu S = 20 → bỏ đi từ cột 14 đến cột 1 với ngời t không có khả thắng → Từ bảng phơng án ta có thể làm trò chơi dàn nhánh hoặc chậm đa dạng Chơng trình BEGIN clrscr; B-fan; {xây dựng bảng phơng án } nhap ; repeat if luật đi them computer else user ; Kiểm tra – kết thúc ; Until kết thúc xử lý kết thúc ; END Cột đầu không có 5 cột giá trị trớc đó để tính → đặt là thắng hết vì nếu đi vào đó → ngời đi tiếp theo đều sẽ thua cả + = 1 - = 0 Var B: array [1 …… 5, ∅ …… 40];
Procadure B.fan ;
Trang 11i, j: byte;
Begin
fillchar (B, size of (B), ∅) for i : = 36 to 40 do
for j : = 1 to 5 do b [i, j] : = 1;
for 35 down to ∅ do for i : = 1 to 5 do giá trị (i, j);
End;
Procedune giá trị (x, y : byte)
(* Nh vậy ta thực hiện biểu thức∑
=
n
1
i i
b ) Var
j, j, t : byte
Begin
t : = 0 ;
j : = x + y
for i = 1 to 5 do
t : = t + b [i, j]
t : = t – b [x, j]
(* x + y phải tính lại theo từng giá trị i trùng lặp for (j : = 1-5) phải thực hiện 5 lần giá trị (v + y) → nhanh hơn; thừa 2 phép tính t : = t + b [v + y] vào sau đó thực hiện t : = t
-t : = -t – b [v ; j]*)
jf t : > 0 then b [v, y) : = 0
else b [v, y] : = 1;
end;
- Thời gian IP chỉ đọc lệnh tiếp theo → thực hiện 1 lệnh và xử lý lệnh tiếp theo đợc xử lý song song
- Chờ đợi xong và đọc ra → tính giá tăng gấp đôi
- Chờ đợi, kiểm tra thay đổi thới gan IP một cách thích hợp tốn thời gian hơn
if f: Lệnh gán có điều khiển
Trang 12- Thủ tục nó đi của computer cần xác định
S : tổng
Up : con bài i úp
- Giả sử up [u] cộng tất cả các giá trị –up, thử kiểm tra đến nớc thắng Nếu S = 0 → máy thua, S > 0 máy thắng
- Điều khiển trò chơi trong điều kiện thắng Lựa chọn nớc đi lớn
→ đi tìm kiếm từ dới lên cho tới khi b [i, s] > 0
→ để trò chơi kéo dài → tìm kiếm từ trên xuống sao cho b [i, s] > 0
→ Xây dựng chơng trình một cách ngẫu nhiên
Procudune xây dựng – i;
Var Begin
Repeat
i : = random (5) + 1 Until (b [1] = 1) and (i < > up) (;) End ;
- Không cần (;) tốt hơn, chơng trình dịch chạy nhanh hơn, tốt hơn Do khi thực hiện một lệnh thòi gian IP chỉ đến lệnh tiếp theo → thực hiện ⊥ lệnh sau đó: do lệnh sau đó là end Proce nên nó không phải thực hiện → bỏ qua →
tốn thời gian hơn
(Phù hợp với lí thuyết và năng suất lao động hơn)
- Dấu (;) trong Pascal đóng vai trò
1> Chức năng đánh dấu phân biệt phân tách 2> Chức năng kết thúc
Nguyên tắc của máy tính là phải nhìn thấy mỗi chuyện sau đó mới thực hiện Ngầm định máy tính không nhìn thấy gì khi không thực hiện điều gì cả
Trong Pascal (;) đóng vai trò phân tách, là phơng tiện để tách câu lệnh này tách rời so với câu lệnh khác
Trong ⊥ số lợng hợp, dấu phân biệt đồng thời là dấu hiệu kết thúc
- Hệ điều hành ra soát bảng đánh dấu
- Tính chất của hệ điều hành: + tin cậy
+ chuẩn xác
→ Nguyên tắc làm việc trên bảng phơng án (Nguyên lý điều khiển)
Trang 13Chuẩn HP → MP1 → MP3: / thống nhất về âm thanh
MP4: cha thành chuẩn MP3 : Nén xuống về cấu trúc dữ liệu →tác động lên cách xử lý
IV Bảng phơng án mở rộng
Vi nhận nhiều hơn 2 giá trị → i = 1, 2, 3 …
ánh xạ tập đối tợng bất kỳ sang tập số tự nhiên {1, 2, 3 ….}
Sắp xếp theo thứ tự từ điển
- Bảng phơng án:
Cij giá trị nguyên (thuộc tập giá trị của nó)
dấu gạch ngang giá trị còn lại
- Dịch gắn liền với quá trình thực hiện: chọn điều kiện tiếp theo để kiểm tra
1 bit có 2 kernel : + Đơn vị đl để xoay quanh nó xử lý
+ Đơn vị xử lý: bao giờ cũng áp dụng vào đơn vị đó
- Công cụ gđ dịch: mô tả cho CT dịch, tạo ra các câu lệnh mức ct nguồn
- Chọn điều kiện: Thống kê xem mỗi giá trị xuất hiện bao nhiêu lần →
áp dụng cho quy tắc thồng minh
{1 ữ 3} {1 ữ 2} {1 ữ 4}
{48} trờng hợp Xét bảng p/a
C1 4 3 1 - (lần) lấy vì C1 = C2 = 4 ⇒ max C2 4 2 1 1 (tỉ lệ xuất hiện max)
C3 3 3 1 1 ⇒ có thể đánh giá Y chọn C1hay C2
Trang 14Ví dụ:
hiện
Giá trị các hành động Ai không phụ thuộc vào trình tự kiểm tra khi thay
đổi A1, A2, A3 không làm thay đổi giá trị các biến (hiệu ứng phụ)
A
1
C1
C2
A2
3
A3
A4