Bài toán xác định trực giao hoá các toán tử logic

Một phần của tài liệu (LUẬN văn THẠC sĩ) các phương pháp đánh giá độ tin cậy của hệ thống tính toán qua cấu trúc hệ thống (Trang 33 - 37)

CHƢƠNG 1 : CƠ SỞ LÝ THUYẾT

2.3 Bài toán xác định trực giao hoá các toán tử logic

Có thể nói giai đoạn trực giao hoá là giai đoạn phức tạp nhất của quá trình tính toán độ tin cậy của hệ thống.

Vị từ 1 ngôi (ký hiệu là f(x)) đƣợc gọi là trực giao nhau khi và chỉ khi kết quả của chúng bằng 0. Tuy nhiên nếu vị từ mà ta xét không phải là vị từ 1 ngôi mà là vị từ n ngôi (ký hiệu là f(x1, x2, ..., xn)) thì chúng đƣợc gọi là trực giao khi và chỉ khi các phần tử của chúng là trực giao và cho kết quả bằng 0. Vậy phƣơng pháp trực giao chính là phƣơng pháp biến đổi logic sao cho kết quả của các toán tử đều bằng 0.

Trong mục này tôi sẽ nói rõ về phƣơng pháp trực giao hoá, và các thuật toán đƣợc sử dụng để trực giao hoá là gì.

2.3.1 Các phƣơng pháp giảm thiểu các hàm đại số logic đối với các hình thức trực giao và trực giao không lặp. thức trực giao và trực giao không lặp.

a) Phương pháp cắt giảm

Phƣơng pháp này dựa trên việc triển khai các hàm logic cho ta kết quả là các hàm logic đã trực giao, trực giao không lặp và trƣờng hợp đặc biệt đó là dạng chuẩn tắc tuyển trực giao. Phƣơng pháp cắt giảm cụ thể nhƣ sau:

1. Chúng ta đi xét hàm f(xn) và thống kê số lần xuất hiện của mỗi biến xi (i=1,2, … n) dƣới dạng sau:

M = {m1, m2, … mn}

2. M đƣợc sắp xếp tăng dần khi đó mn là tần số xuất hiện nhiều nhất tƣơng ứng với biến xi nào đó.

f(x1, …, xi , … xn) = 𝑥𝑖 f(x1, …, 0, …, xn) ˅ xi f(x1, …, 1, …, xn) = 𝑥𝑖fi(0) ˅ xi fi(1).

4. Áp dụng các luật của đại số logic làm tối thiểu, đơn giản hoá các hàm fi(0) và fi(1). Kết quả có thể nhận đƣợc sẽ thuộc 1 trong 4 trƣờng hợp sau:

- Kết quả là hằng số 0 hoặc 1.

- Một hàm đƣợc đƣa về dạng chuẩn tắc tuyển trực giao. - Không có biến nào bị lặp lại trong hàm logic.

- Nếu có biến bị lặp lại trong hàm logic thì đƣợc loại bỏ bớt đi chỉ viết 1 lần.

5. Nếu kết quả hàm đã có sự kết hợp của cả trƣờng hợp 1và 2 thì việc chuyển hàm logic thành trực giao coi nhƣ đã xong. Nếu kết quả là trƣờng hợp 3 thì tiếp tục áp dụng các luật biến đổi logic để hoàn tất việc trực giao hàm logic. Nếu kết quả là trƣờng hợp 4 thì tiếp tục quay trở lại bƣớc 1, thực hiện các phép biến đổi để đƣa về dạng trực giao. Chắc chắn thủ tục này sẽ dừng vì số biến xn là hữu hạn. khi đó ta đƣợc hàm logic đã trực giao.

Quá trình thực hiện thuật toán cắt giảm đối với các hình thức trực giao này tƣơng đối mất thời gian và số lƣợng các biến tăng lên nhiều làm ta rối mắt. Tuy nhiên thuật toán này lại có ƣu điểm đó là vẫn nhanh hơn phƣơng pháp tìm kiếm đầy đủ truyền thống, các hàm thu đƣợc bằng cách áp dụng các luật biến đổi logic sau khi áp dụng thuật toán hầu nhƣ sẽ không bị thay đổi gì nữa.

b) Phương pháp trực giao hoá theo công thức của Poresky

Phƣơng pháp trực giao hoá theo công thức của Poresky [9] viết dƣới dạng giả mã gồm các bƣớc sau:

1. i_line_AB = 1 AND Leng_AB[0] = LengK1[i_line-1] 2. if t1 = 0 AND t1 < Leng_AB[0] AND t1 ++

AB[0][t1] = K1[i_line-1][t1] 3. If t1 = (i_line - 2) AND t1 > -1 AND t1 --

a[t2] = K1[t1][t2] 4. Leng_a = LengK1[t1]

5. Nhân dòng a với chiều dài leng_a của ma trận AB và kết quả lƣu trong ma trận AB

6. Kết thúc.

Ta thấy rằng việc sử dụng phƣơng pháp này đƣa hàm logic về dạng chuẩn tắc tuyển đã trực giao này khá phức tạp trong việc triển khai các toán tử. Số lƣợng các biến khi khai triển là khá dài. Tuy nhiên đây chính là một cách để phát triển chƣơng trình trực giao hoá của hàm logic trên máy tính.

c) Phương pháp cắt giảm hàm đại số logic bằng cách đưa về dạng chuẩn tắc tuyển

Nhƣ ta đã biết PDNF – dạng chuẩn tắc tuyển hoàn toàn đƣợc coi nhƣ một dạng chuẩn tắc tuyển đã đƣợc trực giao hoá, vì vậy ta có thể sử dụng nó để cắt giảm các hàm logic. Phƣơng pháp gồm các bƣớc sau đây:

1. Đây là một hàm của dạng chuẩn tắc tuyển.

2. Tìm các phép hội sơ cấp xuất hiện trong dạng chuẩn tắc tuyển. 3. Tìm tất cả các tập hợp đƣợc bao phủ bởi mỗi phép hội sơ cấp

4. Khai triển tất cả các tập hợp, ta sẽ đƣợc hàm ban đầu trong dạng chuẩn tắc tuyển hoàn toàn.

Từ dạng chuẩn tắc tuyển hoàn toàn ta có thể dễ dàng tính đƣợc các hàm xác suất. Tuy nhiên nếu một hàm đƣợc viết ở dạng chuẩn tắc tuyển thì sẽ dài hơn khi viết ở dạng đã đƣợc trực giao, đây chính là một nhƣợc điểm của phƣơng pháp này khi đƣa một hàm logic về dạng chuẩn tắc tuyển hoàn toàn. Nhƣng việc triển khai một hàm logic về dạng chuẩn tắc tuyển hoàn toàn lại đơn giản hơn trong việc lập trình bằng máy tính.

2.3.2 Các quy tắc chuyển đổi hàm logic sang dạng xác suất trong dạng chuẩn tắc tuyển chuẩn tắc tuyển

Bất kỳ một sự kiện phức tạp nào cũng có thể viết đƣợc dƣới dạng hàm logic với các phép toán logic. Xác suất của hàm f(xi) luôn bằng một, đƣợc ký hiệu là P[f(xi)]=1.

Khi hàm logic đã đƣợc chuyển đổi về dạng chuẩn tắc tuyển trực giao thì ta có thể tính xác suất của hàm một cách đơn giản theo quy tắc sau:

1. Các ký hiệu phép cộng và nhân logic đƣợc thay thế bởi dấu các phép cộng và phép nhân đại số.

2. Các ký hiệu xi và 𝑥𝑖 đƣợc thay thế bằng các xác suất Pi và Qi tƣơng ứng

Quá trình chuyển đổi về hàm xác suất đƣợc thực hiện theo quy tắc sau:

1. Sử dụng công thức De Morgan để đƣa về dạng chuẩn tắc hội, không chứa phép cộng logic nào.

2. Các ký hiệu phép cộng và nhân logic đƣợc thay thế bởi dấu các phép cộng và phép nhân đại số.

3. Các ký hiệu xi và 𝑥𝑖 đƣợc thay thế bằng các xác suất Pi và Qi tƣơng ứng. 4. 𝑃 (𝑓=1) đƣợc thay thế bởi 1-𝑃 (𝑓=1).

2.3.3 Kết luận

- Thuật toán cắt giảm thích hợp để tính bằng tay vì khi khai triển hàm thì sẽ làm giảm các kết quả trung gian.

- Việc sử dụng thuật toán cắt giảm để đƣa về dạng chuẩn tắc tuyển có thể nhìn sẽ dài dòng hơn nhƣng nó lại dễ dàng hơn khi lập trình trên máy tính. - Thuật toán trực giao hoá theo công thức Poresky không đơn giản khi giải

CHƢƠNG 3. THIẾT LẬP VÀ XÂY DỰNG CHƢƠNG TRÌNH TÍNH ĐỘ TIN CẬY CỦA HỆ THỐNG MẠNG MÁY TÍNH

Sau khi đã hiểu rõ về cách thức cũng nhƣ phƣơng pháp để tính toán độ tin cậy của hệ thống thì ta sẽ phải cụ thể hoá các phƣơng pháp đó bằng một ngôn ngữ lập trình cụ thể. Trong chƣơng này tôi sẽ phân tích xem cần phải thiết lập những hàm chức năng nào và từ đó xây dựng một chƣơng trình hoàn chỉnh để tính toán độ tin cậy của hệ thống.

Một phần của tài liệu (LUẬN văn THẠC sĩ) các phương pháp đánh giá độ tin cậy của hệ thống tính toán qua cấu trúc hệ thống (Trang 33 - 37)