Việc đánh giá độ tin cậy của hệ thống dựa trên cấu trúc của hệ thống, thông qua độ tin cậy của từng thành phần hệ thống là một bài toán khó, mà để giải nó cần đến các công cụ như lý thuy
Trang 1Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
ĐINH ÚT ĐIỆP
NGHIÊN CỨU BÀI TOÁN TÍNH ĐỘ TIN CẬY CỦA HỆ THỐNG
THÔNG QUA CẤU TRÚC CỦA HỆ THỐNG
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 60 48 01 01
2014
Trang 2LỜI CẢM ƠN
Để hoàn thành chương trình cao học và viết luận văn này, tôi đã nhận được sự hướng dẫn, giúp đỡ và góp ý nhiệt tình của quý thầy cô trường Đại học Công nghệ
và Truyền thông Thái Nguyên
Trước hết, tôi xin bày tỏ lòng biết ơn sâu sắc đến TS Lê Quang Minh đã hướng dẫn tôi thực hiện luận văn này
Xin cùng bày tỏ lòng biết ơn chân thành tới các thầy cô giáo, người đã đem lại cho tôi những kiến thức bổ trợ vô cùng có ích trong những năm học vừa qua
Cũng xin gửi lời cám ơn chân thành tới Ban Giám hiệu, Phòng Đào tạo sau đại học, Đại học Công nghệ và Truyền thông Thái Nguyên đã tạo điều kiện cho tôi trong quá trình học tập
Cuối cùng tôi xin gửi lời cám ơn đến gia đình, bạn bè, những người đã luôn bên tôi, động viên và khuyến khích tôi trong quá trình thực hiện đề tài nghiên cứu của mình
Thái Nguyên, ngày tháng năm 2014
Đinh Út Điệp
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan rằng, đây là kết quả nghiên cứu của tôi trong đó có sự giúp
đỡ rất lớn của thầy hướng dẫn và bạn bè Các nội dung nghiên cứu và kết quả trong
đề tài này hoàn toàn trung thực
Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả được liệt kê tại phần tài liệu tham khảo ở cuối luận văn
Học viên
Đinh Út Điệp
Trang 4MỤC LỤC
MỞ ĐẦU 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 6
1.1 Khái niệm cơ bản về độ tin cậy 6
1.1.1 Tổng quan 6
1.1.2 Định nghĩa về độ tin cậy 6
1.1.3 Dạng chung của xác suất an toàn 7
1.2 Chỉ số độ tin cậy của hệ thống 7
1.2.1 Phần tử không phục hồi 7
1.2.2 Phần tử phục hồi 13
1.3 Phương pháp tính độ tin cậy của hệ thống thông qua cấu trúc của hệ thống 16
1.3.1 Sơ đồ khối độ tin cậy của các phần tử nối tiếp 17
1.3.2 Sơ đồ khối độ tin cậy của các phần tử song song 19
1.4 Các biện pháp để nâng cao độ tin cậy của hệ thống 21
1.5 Kết luận 22
CHƯƠNG 2 PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY CỦA HỆ THỐNG QUA CẤU TRÚC HỆ THỐNG 23
2.1 Bài toán tìm đường đi trong đồ thị hệ thống 24
2.1.1 Thuật toán chuyển đổi sơ đồ cấu trúc logic thành sơ đồ khối 24
2.1.2 Phân loại các đỉnh và các cạnh của đồ thị liên kết 24
2.1.3 Thuật toán chuyển đổi sơ đồ cấu trúc logic sang đồ thị liên kết: 25
2.1.4 Thuật toán tìm tất cả các đường đi trong ma trận liên kết 25
2.1.5 Thuật toán tìm tất cảđường đi của ma trận liên kết trong lý thuyết đồ thị 27 2.1.6 Kêt luận 32
2.2 Bài toán tối thiểu các toán tử logic 32
2.2.1 Định nghĩa và các phép toán trong đại số Boole 32
2.2.2 Các phương pháp cơ bản để tối thiểu hoá các toán tử logic 34
Trang 52.3 Bài toán xác định trực giao hoá các toán tử logic 35
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 36
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……… 38
2.3.3 Kết luận 39
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, VÍ DỤ CỤ THỂ 40
3.1 Thiết lập bài toán 40
3.1.1 Viết chương trình để tìm các đường đi trong ma trận liên kết 40
3.1.2 Xây dựng chương trình trực giao hoá hàm đại số logic 43
3.2 Các ví dụ sử dụng các hàm đã xây dựng 46
3.3 Phát triển các chức năng và các yêu cầu cần thiết bổ sung cho việc tính toán 50 3.4 Đặc tả hệ thống 59
3.5 Nghiên cứu thuật toán phát triển các hàm: 62
3.6 Kết quả thu được từ chương trình tính toán độ tin cậy của hệ thống 63
3.7 Kết luận 72
KẾT KUẬN 74
TÀI LIỆU THAM KHẢO 76
Trang 6MỞ ĐẦU
1 Lý do chọn đề tài
Xã hội hiện đại ngày càng phát triển kéo theo đó là đời sống của con người ngày càng đi lên, nhưng bên cạnh còn tồn tại những thách thức và khó khăn mà cuộc sống hiện đại mang lại Phải kể đến công cuộc bùng nổ cách mạng khoa học kỹ thuật đã bắt đầu tạo ra các hệ thống phức tạp trong khoa học máy tính, giao thông vận tải, năng lượng và các ngành khác của nền kinh tế Đây là những hệ thống có tính ứng dụng cao, tham gia vào trong tất cả các lĩnh vực của đời sống của con người Tuy nhiên, cũng chính vì điều này mà xã hội luôn phải đối mặt với nguy cơ các thiết bị không sẵn sàng để hoạt động một cách đúng đắn, việc thao tác sai cùng với những sai lầm đáng tiếc trong quá trình thiết kế, chế tạo thiết bị, làm cho cấu trúc hệ thống bị phá vỡ, các chức năng của hệ thống hoạt động không chính xác Mà như ta đã biết nó không đơn thuần chỉ là một hệ thống đơn giản mà là hệ thống bao gồm một số lượng lớn các yếu tố thành phần có cấu trúc phức tạp với các chương trình điều khiển các hoạt động của nó
Thấy được quy cơ tiềm tàng đang xảy ra đối với mỗi hệ thống, ta càng hiểu rõ hơn tầm quan trọng của các vấn đề liên quan đến độ tin cậy, khả năng sống sót và việc phát triển nhanh chóng các phương pháp để đảm bảo độ tin cậy cao của các hệ thống ở tất cả các giai đoạn thiết kế, thử nghiệm, sản xuất và hoạt động Trong các
hệ thống kỹ thuật hiện đại nếu không đảm bảo được độ tin cậy thì hệ thống coi như không tồn tại Chính điều này đòi hỏi phải phát triển phương pháp đặc biệt để đảm bảo, tăng cường và duy trì độ tin cậy của những hệ thống này, các phương pháp toán học dựa trên tính toán ưu tiên và đánh giá thử nghiệm, phương pháp đánh giá dựa trên cơ sở lý thuyết xác suất và quá trình ngẫu nhiên, đã và đang được áp dụng
và đạt được những kết quả khả quan Việc đánh giá độ tin cậy của hệ thống dựa trên cấu trúc của hệ thống, thông qua độ tin cậy của từng thành phần hệ thống là một bài toán khó, mà để giải nó cần đến các công cụ như lý thuyết xác suất, lý thuyết đồ thị, logic Vấn đề độ tin cậy tiếp tục là một trong những chìa khóa để phát triển công nghệ hiện đại
Phương pháp đánh giá độ tin cậy của hệ thống mang tính kinh tế rất cao, nó liên quan đến sản xuất và lập trình dự toán như thế nào, chi phí bảo trì, các chi phí
Trang 7tối thiểu cấu hình hệ thống, nói cách khác tổng số lợi nhuận dự kiến sẽ được tối đa nếu độ tin cậy hệ thống được chọn theo một công thức dựa trên tính toán tuổi thọ của thiết bị, dịch vụ đời sống thực tế của thiết bị cho đến khi nó không hoạt động tốt Điều này dẫn đến lựa chọn một cấu hình chi phí tối thiểu đáp ứng một mức
độ dự phòng quy định
Ta dễ dàng thấy được độ tin cậy và khả năng hoạt động an toàn của hệ thống phụ thuộc vào cấu trúc của nó (cấu trúc logic) và độ tin cậy của các thành phần cấu thành bên trong hệ thống đó Vì vậy, đối với các hệ thống phức tạp, có hai cách để tăng độ tin cậy: tăng độ tin cậy của các yếu tố thành phần và thay đổi chương trình Trong hai cách ở trên thì nâng cao độ tin cậy của các yếu tố thành phần là phương pháp đơn giản nhất để tăng độ tin cậy của hệ thống và để thực hiện người ta đã sử dụng một kỹ thuật rất phổ biến và đơn giản đó là bổ sung các yếu tố dư thừa, hay còn gọi là hệ thống có dự phòng Tuy nhiên không phải lúc nào cũng xây dựng được hệ thống có dự phòng Thật vậy, ngày nay nhờ sự phát triển của khoa học kỹ thuật mà chất lượng các thành phần đã được nâng cao đáng kể dẫn đến chất lượng của cả hệ thống cũng được nâng cao Việc xem xét làm thế nào để đảm bảo độ tin cậy của các yếu tố kỹ thuật của hệ thống còn tùy thuộc vào khoa học công nghệ, vật
lý và hóa học đặc biệt, và vượt ra ngoài phạm vi của lý thuyết độ tin cậy sẽ đề cập trong luận văn này
Việc đảm bảo độ tin cậy cũng như hoạt động an toàn cho các hệ thống đã trở thành một vấn đề được cả thế giới quan tâm và bàn luận, nhưng đó vẫn là vấn đề
còn mới mẻ ở Việt Nam Tôi đã chọn đề tài “Nghiên cứu bài toán tính độ tin cậy của hệ thống thông qua cấu trúc của hệ thống” để nghiên cứu Thông qua luận
văn này tôi muốn tập trung đi sâu vào nghiên cứu cơ sở lý thuyết cũng như các thông số cơ bản ảnh hưởng đến độ tin cậy của hệ thống, phát triển các thuật toán và xây dựng chương trình để tính toán được độ tin cậy của hệ thống đơn giản Bước đầu tiên là nghiên cứu thuật toán chuyển từ sơ đồ cấu trúc logic của hệ thống sang
sơ đồ khối, sau đó sử dụng đồ thị và ma trận liên kết lưu trữ các kết quả trung gian làm cơ sở để tính toán, các thuật toán tối thiểu hàm logic, thuật toán trực giao hoá các toán tử logic và chuyển từ mô hình logic sang mô hình đại số để tính các giá trị xác suất có liên quan Và để chứng minh hệ thống đã xây dựng hoạt động đúng đắn tôi sẽ đi xét ví dụ về một hệ thống máy chủ, từ đó đưa ra các kết quả để chứng minh lập luận của mình
Trang 8Hy vọng luận văn sẽ là một tài liệu tham khảo có ích đối với tất cả các bạn sinh viên, các thầy cô khi nghiên cứu về lĩnh vực này
2 Mục đích nghiên cứu
Mục đích nghiên cứu của đề tài là nghiên cứu các bài toán tính độ tin cậy của hệ thống thông qua cấu trúc hệ thống và xây dựng thành công phần mềm đánh giá độ tin cậy của hệ thống Khi biết được độ tin cậy của hệ thống chúng ta có thể lên kế hoạch bảo trì, lên kế hoạch dự phòng, nâng cao độ tin cậy, tránh được các sự cố lỗi
có thể gây ra
3 Giả thuyết khoa học
Nếu xây dựng thành công phần mềm đánh giá độ tin cậy của hệ thống có sử dụng phương pháp đánh giá độ tin cậy một cách đúng đắn sẽ là cơ sở, nền tảng cho
sự ra đời của các phần mềm đánh giá độ tin cậy của các hệ thống phức tạp sau này
4 Nhiệm vụ nghiên cứu
Xuất phát từ mục đích trên, nhiệm vụ của đề tài đặt ra như sau:
- Nghiên cứu các khái niệm liên quan đến độ tin cậy của hệ thống, phương pháp tính độ tin cậy qua cấu trúc hệ thống
- Phương pháp đánh giá độ tin cậy của hệ thống qua cấu trúc hệ thống
- 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
- Sử dụng chương trình tính độ tin cậy đã xây dựng để tính độ tin cậy và khả năng hệ thống hoạt động an toàn thông qua ví dụ cụ thể
5 Phương pháp nghiên cứu
Sử dụng phối hợp các phương pháp:
- Phương pháp phân tích, tổng hợp lý luận: Nghiên cứu, tìm hiểu, phân tích các tài liệu có liên quan đến độ tin cậy của hệ thống cũng như các phương pháp tính, đánh giá độ tin cậy của hệ thống
- Phương pháp sử dụng toán học: Sử dụng phương pháp xác suất thống kê, xử lý các kết quảvà xây dựng đồ thị trực quan
6 Đóng góp của luận văn
Trang 9- Hệ thống hoá cơ sở lý luận của việc đánh giá độ tin cậy của hệ thống
- Xây dựng thành công phần mềm tính toán độ tin cậy của hệ thống, là cơ sở, nền tảng cho việc nghiên cứu và xây dựng các phần mềm tính toán độ tin cậy cho các hệ thống phức tạp và tinh vi hơn về sau
7 Cấu trúc luận văn
Ngoài phần mở đầu và kết luận, luận văn gồm có 3 chương:
CHƯƠNG I KHÁI NIỆM CƠ BẢN VỀ ĐỘ TIN CẬY
Đưa ra một số khái niệm cơ bản về độ tin cậy cũng như các chỉ số liên quan đến chúng Phương pháp tính độ tin cậy của hệ thống qua cấu trúc nối tiếp và song song CHƯƠNG II PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY CỦA HỆ THỐNG QUA CẤU TRÚC HỆ THỐNG
Đưa ra một số bài toán cơ bản, các thuật toán cũng như các phương pháp để giải quyết chúng
CHƯƠNG III ĐỘ TIN CẬY VÀ KHẢ NĂNG HOẠT ĐỘNG AN TOÀN CỦA
Trang 10CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Khái niệm cơ bản về độ tin cậy
1.1.1 Tổng quan
Độ tin cậy là đặc tính then chốt trong sự phát triển kỹ thuật, đặc biệt là khi xuất hiện những hệ thống phức tạp nhằm hoàn thành những chức năng quan trọng trong các lĩnh vực công nghiệp khác nhau Định lượng độ tin cậy của phần tử hoặc của cả
hệ thống được đánh giá bằng cách phân tích, tính toán các chỉ số của độ tin cậy, dựa trên hai yếu tố cơ bản là: Tính làm việc an toàn và tính sửa chữa được
Quan niệm về hệ thống, thiết bị kỹ thuật theo cách nhìn của độ tin cậy sẽ làm
cơ sở cho việc tính toán các chỉ số của độ tin cậy cho các hệ thống với các mức độ
và phương pháp dự phòng khác nhau
“Hệ thống là một tập hợp gồm nhiều phần tử tương tác, có các mối quan hệ ràng buộc lẫn nhau và cùng hoạt động hướng tới một mục tiêu chung thông qua chấp thuận các đầu vào, biến đổi có tổ chức để tạo kết quả đầu ra”
Hay “Hệ thống là một tập hợp gồm nhiều phần tử có các mối quan hệ ràng
buộc tương tác lẫn nhau để thực hiện một mục đích chung”[6]
“Hệ thống thông tin là một tập hợp và kết hợp của các phần cứng, phần mềm và các hệ mạng truyền thông được xây dựng và sử dụng để thu thập, tạo, tái tạo, phân phối và chia sẻ các dữ liệu, thông tin và tri thức nhằm phục vụ các mục tiêu của tổ chức”[10,11]
Phần tử là một bộ phận tạo thành hệ thống mà trong quá trình nghiên cứu độ tin cậy nhất định nó được xem như là một tổng thể không chia cắt được (ví dụ như: linh kiện, thiết bị… ) mà độ tin cậy đã cho trước, hoặc xác định dựa trên những số liệu thống kê
Phần tử ở đây có thể hiểu theo một cách rộng rãi hơn, bản thân phần tử cũng có thể có cấu trúc phức tạp, nếu xét riêng nó là một hệ thống
1.1.2 Định nghĩa về độ tin cậy
Độ tin cậy P(t) của phần tử hoặc của hệ thống là xác suất để trong suốt khoảng thời gian khảo sát t phần tử đó hoặc hệ thống đó vận hành an toàn.[2-4,10,11]
P(t) được định nghĩa như biểu thức sau:P(t) = P{ ≥ t} (1.1)
Trang 11Trong đó: là thời gian liên tục vận hành an toàn của phần tử
Biểu thức trên chỉ ra rằng phần tử muốn vận hành an toàn trong khoảng thời gian t thì giá trị của t phải bé hơn giá trị quy định
Đồng thời biểu thức trên cũng chỉ rằng phần tử chỉ vận hành an toàn với một xác suất nào đó (0 ≤ P ≤ 1) trong suốt khoảng thời gian t Khi bắt đầu vận hành nghĩa là
ở thời điểm t = 0, phần tử bao giờ cũng hoạt động tốt nên P(0)= 1 Ngược lại thời gian càng kéo dài, khả năng vận hành an toàn của phần tử càng giảm đi và tới khi
t ∞ thì theo quy luật phát triển của vật chất trong tác động tàn phá của thời gian, nhất định phần tử phải hỏng dó đó P(∞) = 0
1.1.3 Dạng chung của xác suất an toàn
Kiến thức cơ bản cần thiết để phân tích độ tin cậy của hệ thống là:
- Kiến thức về lý thuyết xác suất và quá trình ngẫu nhiên;
- Kiến thức về các thành phần, thông số kỹ thuật của hệ thống
Bước đầu tiên trong việc tính toán xác suất an toàn hoặc xác suất hỏng của một
hệ thống là chọn tiêu chuẩn áp dụng cụ thể và các thông số kỹ thuật của các phần tử một cách thích hợp, mối quan hệ giữa các phần tử với nhau
Theo định nghĩa về độ tin cậy đã nói ở trên thì độ tin cậy của hệ thống còn được gọi theo cách khác là xác suất an toàn [1]: P(t) = P{ ≥ t}
Theo định nghĩa xác suất thì xác suất không an toàn (Q(t)) hay còn gọi là xác suất hỏng của hệ thống [1] sẽ là: Q(t) = 1-P(t)
1.2 Chỉ số độ tin cậy của hệ thống
Các hệ thống, thiết bị kỹ thuật (các phần tử) tồn tại trong thực tiễn thường tồn tại dưới 2 dạng là phục hồi được và không phục hồi được Và để dễ xác định độ tin cậy của các phần tử ta cũng sẽ phân chia các phần tử thành 2 dạng như trên
1.2.1 Phần tử không phục hồi
Phần tử không phục hồi[2] là phần tử khi được đưa vào sử dụng, nếu bị hư hỏng thì sẽ loại bỏ ngay mà không tiến hành sửa chữa do không thể hoặc việc sửa chữa không mang lại hiệu quả, ví dụ như: linh kiện điện trở, tụ điện, IC … ta chỉ quan tâm đến sự kiện xảy ra sự cố đầu tiên
Trang 12Những thông số cơ bản của phần tử không phục hồi là:
a Thời gian vận hành an toàn
Giả thiết ở thời điểm t = 0 phần tử bắt đầu hoạt động và đến thời điểm t = thì phần tử bị sự cố Khoảng thời gian đƣợc gọi là thời gian liên tục vận hành an toàn của phần tử Vì sự cố không xảy ra tất định nên là một đại lƣợng ngẫu nhiên có các giá trị trong khoảng 0 ≤ ≤ ∞
Giả thiết trong khoảng thời gian khảo sát t thì phần tử xảy ra sự cố với xác suất Q(t) Khi đó: Q(t) = P{ < t} (1.2)
Vì là đại lƣợng ngẫu nhiên liên tục nên:
- Q(t) đƣợc gọi là hàm phân phối của biến ngẫu nhiên liên tục
- q(t) là hàm mật độ phân phối xác suất của
Trên hình 1.1[1], biểu diễn hàm mật độ phân phối xác suất của thời gian trung bình vận hành an toàn Theo tính chất của hàm mật độ phân phối xác suất của biến ngẫu nhiên liên tục, ta có:
q(t)=Q’(t) {Đạo hàm bậc 1của hàm phân phối xác suất }, do đó:
Trang 13Vậy hàm mật độ phân phối xác suất của là:
Có q(t).∆t là xác suất để thời gian hoạt động nằm trong khoảng (t t+∆t) với ∆t
đủ nhỏ
b Độ tin cậy của phần tử P(t)
Ta có hàm Q(t) mô tả xác suất sự cố của phần tử, vậy hàm mô tả độ tin cậy của phần tử đƣợc ký hiệu là P(t) và sẽ đƣợc tính theo định nghĩa hàm xác suất:
P(t) = 1 – Q(t) = P{ ≥ t} (1.5) Nhƣ vậy P(t) là xác suất để phần tử vận hành an toàn trong khoảng thời gian t vì
ở đây ta đã giả thiết có ≥ t
Trang 14thì (t).∆t chính là xác suất để phần tử đã hoạt động tốt đến thời điểm t sẽ hỏng hóc trong khoảng thời gian ∆t tiếp theo Hay đó chính là số lần hỏng hóc trên một đơn
vị thời gian trong khoảng thời gian ∆t
là xác suất có điều kiện, là xác suất để phần tử hỏng hóc trong khoảng thời gian từ t đến (sự kiện A) nếu phần tử đó hoạt động tốt đến thời điểm t (sự kiện B)
Theo lý thuyết xác suất, xác suất nhân giữa hai sự kiện A và B là:
P(AB) = P(A).P(B|A) = P(B).P(A|B) Hay:
Nếu (A kéo theo B: Nếu A xảy ra thì B xảy ra) theo giả thiết ban đầu khi
thì ta có: P(AB) = P(A)
Và
Từ (1.8) và (1.9) suy ra:
Công thức (1.10) cho ta quan hệ giữa bốn đại lượng: cường độ hỏng hóc, hàm mật
độ xác suất, hàm phân bố xác suất và độ tin cậy của phần tử
Vậy độ tin cậy của phần tử được tính như sau:
Từ (1.3) và (1.5) ta có:
(do đạo hàm của 1 bằng 0) Thay vào (1.10) ta có: <=>
Trang 15Do P(0) = 1
Công thức (1.11) cho phép tính được độ tin cậy của phần tử không phục hồi khi đã biết cường độ hỏng hóc (t), mà cường độ hỏng hóc (t) này xác định được nhờ phương pháp thống kê quá trình hỏng hóc của phần tử trong quá khứ
Trong các hệ thống hiện giờ thường sử dụng điều kiện (t) = = hằng số (λ tương đối nhỏ), thực hiện được nhờ bảo quản định kỳ Khi đó cường độ hỏng hóc là giá trị trung bình số lần sự cố xảy ra trong một đơn vị thời gian
Biểu diễn mối quan hệ giữa các thông số trên như hình 1.3[3] sau:
Theo nhiều số liệu thống kê quan hệ của cường độ hỏng hóc (t) theo thời gian thường có dạng như hình 1.3[3] Đường cong của cường độ hỏng hóc (t) được chia làm ba miền:
Miền 1: Mô tả thời kỳ “chạy thử”, những hỏng hóc ở giai đoạn này thường do
lắp ráp, vận chuyển Tuy giá trị ở giai đoạn này cao nhưng thời gian kéo dài ít, giảm dần và nhờ chế tạo, nghiệm thu có chất lượng nên giá trị cường độ hỏng hóc (t) ở giai đoạn này có thể giảm nhiều
Hình 1.3: Biểu diễn cường độ hỏng hóc
(t)
t
0
Trang 16Miền 2: Mô tả giai đoạn sử dụng bình thường, cũng là giai đoạn chủ yếu của
tuổi thọ các phần tử Ở giai đoạn này, các sự cố thường xảy ra ngẫu nhiên, đột ngột
do nhiều nguyên nhân khác nhau, vì vậy thường giả thiết cường độ hỏng hóc (t) bằng hằng số
Miền 3: Mô tả giai đoạn già cỗi của phần tử theo thời gian, cường độ hỏng hóc
(t) tăng dần, đó là điều tất yếu xảy ra sự cố khi t ∞
d Thời gian hoạt động an toàn trung bình T HD
Thời gian hoạt động an toàn trung bình THD hay còn được gọi là thời gian trung bình đến lúc hư hỏng (MTTF: Mean Time To Failure) là thời gian mà phần tử đảm bảo hoạt động tốt
Thời gian hoạt động được định nghĩa là giá trị trung bình của thời gian vận hành an toàn dựa trên số liệu thống kê của nhiều phần tử cùng loại, nghĩa là THD
là kỳ vọng toán hay còn gọi là giá trị trung bình của biến ngẫu nhiên [9] và được xác định:
Từ (1.3) và (1.5) ta có:
Sử dụng phương pháp tính tích phân từng phần:
Đặt u=t; dv=P’(t)dt ta có:
Do
Vậy với (t) = hằng số, thì (phân bố hàm mũ)
Trong đó: Người ta thường chọn [ ] = 1/giờ và [THD] = giờ
Trang 171.2.2 Phần tử phục hồi
Phần tử phục hồi [2] là phần tử khi đưa vào sử dụng đến khi xảy ra sự cố có thể được đem đi sửa chữa phục hồi Trong quá trình vận hành phần tử chỉ nhận một trong hai trạng thái: Trạng thái hoạt động an toàn và trạng thái sửa chữa định kỳ hoặc sửa chữa sự cố
Những thông số cơ bản của phần tử phục hồi là:
a Thông số dòng hỏng hóc
Thời điểm xảy ra sự cố và thời gian sửa chữa sự cố tương ứng là những đại lượng ngẫu nhiên, có thể mô tả trên trục thời gian như hình 1.4 dưới đây
Trong đó:
- T1, T2, T3 … biểu thị các khoảng thời gian hoạt động an toàn của các phần tử giữa các lần sự cố xảy ra
- 1, 2, 3 … là thời gian sửa chữa sự cố tương ứng
Định nghĩa thông số dòng hỏng hóc (là cường độ hỏng hóc đối với các phần tử không phục hồi):
Có là xác suất để hỏng hóc xảy ra trong khoảng thời gian t đến
So với (t), trong trường hợp này sẽ không đòi hỏi điều kiện phần tử hoạt động tốt từ đầu đến thời điểm t mà chỉ cần đến thời điểm t phần tử vẫn hoạt động (điều kiện này luôn luôn đúng vì phần tử là phục hồi)
(t).∆t là xác suất để hỏng hóc xảy ra trong khoảng thời gian t đến với ∆t
đủ nhỏ Giả thiết xác suất của thời gian hoạt động an toàn THD của phần tử có phân
Hình 1.4
Trang 18bố mũ, với cường độ hỏng hóc = hằng số, khi đó khoảng thời gian giữa hai lần sự
cố liên tiếp là T1, T2 … cũng có phân bố mũ và thông số dòng hỏng hóc là tối giản Vậy thông số dòng hỏng hóc là: (t) = = hằng số
Vì vậy thông số dòng hỏng hóc và cường độ hỏng hóc thường hiểu là một, trừ các trường hợp riêng khi thời gian hoạt động không tuân theo phân bố mũ thì phải phân biệt
Đối với các phần tử phục hồi thuật ngữ MTBF (Mean Time Between Failure) được dùng thay thế cho MTTF (Mean Time To Failure)
b Thời gian trung bình sửa chữa sự cố s
s là kỳ vọng toán của 1, 2, 3 … là thời gian trung bình sửa chữa sự cố - MTTR (Mean Time To Repair)
Để đơn giản ta cũng xét xác suất của s cũng tuân theo luật phân bố mũ Khi đó tương tự đối với xác suất hoạt động an toàn của phần tử, ta có thể biểu thị xác suất ở trong khoảng thời gian t phần tử đang ở trạng thái hỏng hóc – nghĩa là chưa sửa xong
Xác suất phần tử ở trạng thái hỏng có giá trị là:
Trong đó = 1/ s là cường độ phục hồi hỏng hóc, (1/giờ)
Xác suất để sửa chữa kết thúc trong khoảng thời gian t, cũng chính là hàm phân
bố xác suất của thời gian s là:
Và hàm mật độ phân bố xác suất là:
Vậy thời gian trung bình sửa chữa sự cố là:
Trang 19Phần tử có tính sửa chữa cao khi s càng nhỏ ( càng lớn) nghĩa là chỉ sau một khoảng thời gian ngắn phần tử đã có khả năng hoạt động lại
T là kỳ vọng toán của T1, T2, T3, ., Tn Vì thời gian trung bình giữa hai hƣ hỏng liên tiếp có một lần sửa chữa ngay nên:
MTBF = MTTR + MTTF T = s + THDVới giả thiết T tuân theo luật phân bố mũ, giống nhƣ ở trên đã xét ta có:
Dựa vào sơ đồ ở hình 1.5[7] ta có thể thấy đƣợc mối quan hệ giữa thời gian trung bình để bị lỗi, phát hiện lỗi và sửa lỗi:
Hình 1.5: Một kịch bản phát hiện lỗi và sửa lỗi
c Khả năng sẵn sàng hoạt động A (Availability)
Hệ số sẵn sàng A là phần lƣợng thời gian hoạt động trên toàn bộ thời gian khảo sát của phần tử:
d Hàm tin cậy của phần tử R(t)
Độ tin cậy là xác suất mà thiết bị đảm bảo hoạt động không hƣ hỏng trong thời gian t Vậy R(t) là xác suất của giao hai sự kiện:
- Làm việc tốt tại t = 0
- Tin cậy trong khoảng 0 đến t
Trang 20Giả thiết hai sự kiện này độc lập với nhau, ta có:R(t) = A.P(t) (1.22)
Theo luật phân bố mũ:
Trong đó: là hệ số sẵn sàng
1.3 Phương pháp tính độ tin cậy của hệ thống thông qua cấu trúc của hệ thống
Cấu trúc của một hệ thống dù phức tạp đến đâu thì cũng chỉ quy về 2 dạng là cấu trúc nối tiếp hoặc cấu trúc song song [4] Phương pháp tính độ tin cậy của hệ thống qua cấu trúc nối tiếp và song song hay còn được biết đến với tên gọi khác là: Phương pháp tính độ tin cậy của hệ thống không có dự phòng và có dự phòng của
hệ thống [2]
Phương pháp này xây dựng mối quan hệ trực tiếp giữa độ tin cậy của hệ thống với độ tin cậy của các phần tử đã biết Sơ đồ khối độ tin cậy (Reliability Block Diagrams - RBD) của hệ thống được xây dựng trên cơ sở phân tích ảnh hưởng của hỏng hóc phần tử đến hỏng hóc của hệ thống Sơ đồ khối độ tin cậy [11] có thể được xem xét một cách độc lập bởi các thành phần của hệ thống có thể được ước tính độ tin cậy và khả năng sẵn sàng (hoặc không) Việc xây dựng sơ đồ khối độ tin cậy có thể khó khăn đối với hệ thống lớn và phức tạp
Sơ đồ khối độ tin cậy bao gồm:
- Các nút: Nút nguồn, nút tải và các nút trung gian
- Các nhánh: Được vẽ bằng các khối hình chữ nhật mô tả trạng thái tốt của phần tử Phần tử bị hỏng tương ứng với việc xóa khối của phần tử đó ra khỏi sơ đồ Nhánh và nút tạo thành mạng lưới nối liền nút phát và nút tải của sơ đồ Có thể
có nhiều đường nối từ nút phát đến nút tải, mỗi đường gồm nhiều nhánh nối tiếp, vì vậy số đường đi từ nút phát đến nút tải là rất lớn đối với các hệ thống phức tạp Theo sơ đồ:
- Trạng thái tốt của hệ thống là trạng thái trong đó có ít nhất một đường có thể
đi từ nút phát đến nút tải
- Trạng thái hỏng của hệ thống khi nút phát bị tách rời với nút tải do hỏng hóc của phần tử trung gian
Trang 211.3.1 Sơ đồ khối độ tin cậy của các phần tử nối tiếp
Lúc này coi các phần tử có độ tin cậy cần được xác định sẽ được xem như một
hệ thống phức tạp S được tạo nên bởi các phần tử (khối) riêng biệt [8], ví dụ như trong các hệ thống tự động hoặc thông tin được xây dựng trên cơ sở các phần tử rơle hoặc các phần tử bán dẫn Nhiệm vụ tính toán độ tin cậy của một hệ thống sẽ là việc xác định các chỉ số độ tin cậy của nó nếu như đã biết các chỉ số độ tin cậy của các phần tử riêng biệt và cấu trúc của hệ thống, tức là đặc tính liên hệ giữa các phần
tử theo cách nhìn của độ tin cậy
Cấu trúc đơn giản hơn cả là cấu trúc không có dự phòng của một hệ thống được tạo nên bởi n phần tử, mỗi trở ngại của một phần tử riêng biệt đều dẫn đến trở ngại của cả hệ thống Trong trường hợp này hệ thống S được tạo nên bởi bởi các phần tử nối tiếp nhau Xét sơ đồ tin cậy của hệ thống gồm n phần tử nối tiếp như hình 1.6[8]:
Trong đó N là nút nguồn (nút phát) và T là nút tải Cho rằng trở ngại của các phần tử là độc lập với nhau Giả sử đã biết cường độ hỏng hóc của n phần tử lần lượt là 1, 2, 3 … n và thời gian phục hồi trung bình i của các phần tử Vì các phần tử nối tiếp trong sơ đồ tin cậy nên hệ thống chỉ hoạt động an toàn khi tất cả n phần tử đều hoạt động tốt, giả thiết các phần tử độc lập nhau
Độ tin cậy của hệ thống [2] là:
Trong đó: Pi(t) là xác suất hoạt động tốt (trạng thái tốt) của phần tử thứ i
Hình 1.6: sơ đồ nối tiếp
Trang 22Các phần tử của hệ thống có độ tin cậy tuân theo quy luật hàm số mũ: P(t)= ,
và đã biết cường độ hỏng hóc của chúng Như thế toàn bộ hệ thống tuân theo quy luật hàm số mũ độ tin cậy [7]s:
Trong đó: được gọi là cường độ hỏng hóc của hệ thống và bằng tổng các cường
độ hỏng hóc các phần tử của nó:
Thời gian hoạt động an toàn trung bình của hệ thống là:
Giả thiết thời gian phục hồi (thời gian sửa chữa sự cố) của phần tử có phân bố
mũ, khi đó cường độ phục hồi i = 1/ i, từ đây có thể xác định được thời gian phục hồi trung bình của hệ thống là:
Hoặc:
Trong đó: = 1/ H và ta thấy TH>> H
Hệ số sẵn sàng của hệ thống là:
Hàm tin cậy của toàn hệ thống sẽ là:
Xác suất trạng thái hỏng của hệ thống:
Các công thức trên cho phép ta đẳng trị các phần tử nối tiếp thành một phần tử tương đương khi biến đổi sơ đồ
Ví dụ: Một hệ thống tự động điều khiển trong đường sắt được tạo thành bởi 500
rơle loại A có cường độ trở ngại là λ=0,11.10-6
Trang 23= (500.0,11+300.0,149+100.0,073+100.0,531).10-6 = 0,1601.10-3.1/h
Khi đó xác suất làm việc không có trở ngại trong 100 giờ là:
Thời gian làm việc trung bình đến trở ngại là:
1.3.2 Sơ đồ khối độ tin cậy của các phần tử song song
Trong sơ đồ các phần tử song song [8] (hệ thống có dự phòng), sự cố của 1 phần tử nào đó không nhất định là sẽ dẫn đến sự cố cho toàn hệ thống, ở sơ đồ này hệ thống
Giả thiết độ tin cậy tuân theo quy luật hàm số mũ:
Thì ta có xác suất sự cố của toàn hệ thống [7] là:
Hình 1.7: Sơ đồ song song
1
2
n
Trang 24Độ tin cậy của hệ thống:
So sánh công thức 1.35 này với công thức 1.24 ở trên ta thấy rõ ràng xác suất làm việc không có sự cố của hệ thống song song luôn cao hơn xác suất làm việc không
có sự cố của hệ thống nối tiếp
Cường độ hỏng hóc của hệ thống:
Nếu n phần tử hoàn toàn như nhau thì 1 = 2 = … = n = ta có:
Thời gian hoạt động an toàn trung bình của hệ thống là:
Vì với i = 1/ i và i chạy tử 1 đến n nên:
Trong đó gọi là cường độ phục hồi của hệ thống
Tính xác suất của các chuyến bay thành công của máy bay?
Giải:
Trang 25P(t) = 1-(1-0.99)(1-0.97) = 0.9997
Vậy tỷ lệ bay thành công của máy bay là 99.97%
1.4 Các biện pháp để nâng cao độ tin cậy của hệ thống
Vì mọi hư hỏng đều có nguồn gốc là các lỗi gây trở ngại đến hoạt động của hệ thống ta phải lựa chọn và phối hợp nhiều giải pháp bảo vệ chống lỗi Các giải pháp
- Chấp nhận lỗi trong hệ thống bằng có chế dự phòng (redundancy)
- Hệ thống có dự phòng cho phép tồn tại các lỗi bằng cơ chế sống chung với lỗi, có khả năng che chắn các lỗi Việc dự phòng có thể chỉ tác động lên một bộ phận hệ thống hoặc dự phòng toàn bộ Nhiều nhà chế tạo theo phương pháp dự phòng bộ phận vì nó kinh tế hơn
Sau khi đã nhận dạng các chức năng dễ mắc lỗi trong hệ thống bằng cách nghiên cứu xác suất hư hỏng của từng bộ phận ta tạo nên các hệ con có dự phòng
Ví dụ đối với server là có hai nguồn cấp, đĩa gương… Giải pháp này được dự kiến trong thiết kế hệ thống, tuy nhiên trong quá trình làm việc có thể sau vài năm hệ thống không còn đủ khả năng che chắn lỗi cho các hệ con Ví dụ một nguồn hư hỏng do quá điện áp làm nguồn dự phòng mắc song song với nó cũng bị ảnh hưởng Nguồn dự phòng này có thể chỉ che chắn được 9 trong 10 lỗi có thể xảy ra
Dự phòng có thể là bậc n, nghĩa là số hệ con có thể lớn hơn 1 Dự phòng đơn giản nhất là dự phòng kép nghĩa là có hai hệ con được điều khiển để thay thế cho nhau Một hệ có dự phòng có thể bao gồm các hệ con giống nhau gọi là hệ đồng nhất (homogeneous redundancy) hoặc không đồng nhất (heterogeneous
Trang 26redundancy) Các hệ con có thể làm việc đồng bộ hoặc không đồng bộ Vậy câu hỏi đặt ra là dự phòng có thể làm hệ thống tin cậy với thời gian vô hạn được không ? Cho dù áp dụng mọi biện pháp dự phòng vẫn có khả năng đến một lúc nào đấy hệ thống của chúng ta hoạt động không tin cậy Lý do có rất nhiều nhưng chắc chắn là
thời gian làm việc tin cậy của hệ thống kéo dài thêm rất nhiều.=>Chiến lược bảo dưỡng thích hợp
Việc bảo dưỡng và thay thế các bộ phận hư hỏng phải được tiến hành theo phương hướng nâng cao độ tin cậy bằng cách không bảo dưỡng tràn lan mà tập trung vào những bộ phận hay hư hỏng Đảm bảo sửa chữa khắc phục lỗi trong thời gian ngắn nhất bằng cách huy động vật tư, nhân lực thích hợp
1.5 Kết luận
Xác suất vận hành an toàn của phần tử giảm dần theo thời gian
Xác suất vận hành an toàn của hệ thống song song luôn cao hơn xác suất vận hành an toàn của hệ thống nối tiếp
Độ tin cậy của một hệ thống có một ý nghĩa hết sức quan trọng đối với các hệ thống lớn như máy bay, phi thuyền, tên lửa, dây chuyền sản xuất công nghiệp, …
Để đảm bảo độ tin cậy của toàn hệ thống trước hết cần thiết kế đảm bảo độ tin cậy riêng cho các thành phần trong hệ thống
Độ tin cậy của sản phẩm phải được thể hiện bằng khả năng sản phẩm hoạt động hoàn hảo trong thời gian xác định cụ thể
Các công thức phân phối xác suất được sử dụng để tính toán, đánh giá độ tin cậy của từng phần tử cũng như của cả hệ thống Việc tính toán chính xác độ tin cậy của hệ thống đặc biệt quan trọng bởi trong công tác bảo trì độ tin cậy của thiết bị càng thấp thì nhu cầu bảo trì càng cao
Trang 27CHƯƠNG 2 PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY CỦA HỆ THỐNG
QUA CẤU TRÚC HỆ THỐNG
Sử dụng đồ thị và các ma trận liên kết để tính toán độ tin cậy của hệ thống, chẳng hạn như xác suất để hệ thống làm việc an toàn trong thời gian t là P(t); xác suất hệ thống gặp sự cố Q(t); hàm mật độ phân phối xác suất q(t),
Tuy nhiên các hệ thống ngày nay càng ngày càng phức tạp nên việc tính toán độ tin cậy của chúng “bằng tay” tốn rất nhiều thời gian, công sức cũng như độ chính xác không cao Vì vậy việc tạo ra các phần mềm dùng để tính toán các chỉ số độ tin cậy cho hệ thống ngày càng được nhiều người quan tâm hơn
Quy trình để xây dựng phần mềm tính toán các chỉ số tin cậy cho hệ thống có cấu trúc phức tạp gồm nhiều giai đoạn [10] nhưng đều có chung bốn bước cơ bản sau:
- Giai đoạn đầu: Xây dựng sơ đồ cấu trúc logic, trong đó thể hiện rõ từng bước thực hiện của chương trình, các thành phần cũng như các mối quan hệ giữa các thành phần của chương trình (thông tin, năng lượng, )
- Giai đoạn 2: Tìm tất cả các đường đi thành công của hệ thống Đường đi thành công của hệ thống là tất cả các đường đi không lặp có thể có nối giữa đỉnh đầu và đỉnh cuối đang xét
- Giai đoạn 3: Tất cả các đường đi thành công của hệ thống sẽ được ghi lại dưới dạng các toán tử logic cơ bản, tối thiểu hoá các toán tử logic đó
- Giai đoạn 4: Trực giao hoá các toán tử logic, chuyển đổi mô hình logic sang đại số và tính toán xác suất hệ thống hoạt động an toàn, thời gian trung bình giữa các lần hỏng hóc và các chỉ số khác của độ tin cậy
Trong chương này tôi tập trung vào nghiên cứu các giai đoạn trên và mô tả các thuật toán sử dụng trong các giai đoạn đó
Trang 282.1 Bài toán tìm đường đi trong đồ thị hệ thống
2.1.1 Thuật toán chuyển đổi sơ đồ cấu trúc logic thành sơ đồ khối
Trước khi đi vào thuật toán cụ thể ta cần phải hiểu khái niệm sơ đồ cấu trúc
logic Vậy sơ đồ cấu trúc logic là biểu diễn cấu trúc logic của hệ thống bằng sơ đồ
theo các quy ước về cách mã hoá và biểu diễn mối quan hệ giữa các thành phần dưới dạng các ký hiệu Việc xây dựng thành công sơ đồ cấu trúc logic của hệ thống
cho ta một hình ảnh trực quan về cấu trúc hệ thống và sẽ là điều kiện tiên đề để có thể phân tích và đánh giá độ tin cậy của hệ thống
a Các quy tắc biến đổi cấu trúc logic thành bảng chứa các giá trị tương đương:
- Các phần tử của một cấu trúc logic (hay còn gọi là các đỉnh), các nút trung gian
có một nút khởi đầu và kết thúc (đầu vào và đầu ra)
- Mỗi phần tử của cấu trúc logic được thay thế bởi một giá trị hợp lý Mỗi phần tử đại diện cho một đỉnh
2.1.2 Phân loại các đỉnh và các cạnh của đồ thị liên kết
- Nút nguồn: Có ít nhất một cung đi ra và không có cung đến
- Nút đích: Có ít nhất một cung đi vào và không có cung đi ra
- Cạnh: Nối 2 đỉnh khác nhau của đồ thị Ví dụ: Cạnh nối đỉnh i và j, ký hiệu là (i,j)
- Cung: Là cạnh có hướng Ví dụ: Cạnh nối 2 đỉnh i và j tương ứng với 2 cung là (i,j) và (j,i) và có (i,j)=(j,i)
- Đường đi bắt đầu từ một đỉnh và kết thúc tại chính đỉnh đó được gọi là chu trình hay vòng lặp Độ dài của đường đi bằng số các cạnh (hoặc cung) trong đường đi đó
Trang 29- Đường (chu trình) trong đồ thị được gọi là đơn nếu nó đi qua mỗi cạnh đúng một lần
- Đường (chu trình) trong đồ thị được gọi là sơ cấp nếu nó đi qua mỗi đỉnh đúng một lần
- Đường đi qua tất cả các đỉnh gọi là đường đi đầy đủ
2.1.3 Thuật toán chuyển đổi sơ đồ cấu trúc logic sang đồ thị liên kết:
Thuật toán chuyển đổi từ sơ đồ cấu trúc logic sang đồ thị liên kết gồm các bước sau:
- Nguồn của sơ đồ cấu trúc logic được thay thể bằng các đỉnh của đồ thị, gọi là đỉnh gốc Các cung bắt đầu từ đỉnh nguồn của sơ đồ cấu trúc logic được thay thế bằng các cung của đồ thị và xuất phát từ đỉnh gốc
- Các nút đỉnh được thay thế bằng các đỉnh của sơ đồ cấu trúc logic
- Các cung trong sơ đồ cấu trúc logic được thể hiện bằng các cung trong đồ thị với các đỉnh tương ứng
- Tất cả các đỉnh khác (đỉnh khuyên - bắt đầu và kết thúc tại chính nó) được thể hiện bằng các cung trong đồ thị
- Các cung và các cạnh của đồ thị được thay thế bởi các cung của sơ đồ cấu trúc logic
Trong trường hợp sơ đồ cấu trúc logic vô hướng thì việc biến đổi là đơn giản nhưng nếu sơ đồ cấu trúc logic là có hướng thì việc quan trọng là phải xác định hướng của các cung và xây dựng làm sao cho hệ thống đạt hiệu quả
Đồ thị liên kết nói chung (có ít nhất một cạnh) là có hướng nếu các cặp (i,j) được sắp thứ tự và mỗi cặp (i,j) là một cung Đồ thị là vô hướng nếu các cặp (i,j) không sắp thứ tự và mỗi cặp (i,j) gọi là một cạnh
2.1.4 Thuật toán tìm tất cả các đường đi trong ma trận liên kết
a Trường hợp đồ thị cần biểu diễn là vô hướng: Có thể được biểu diễn một cách đơn giản bằng ma trận kề vuông cấp n, với n là số đỉnh của đồ thị Phần tử δij ở hàng i cột j (i,j=0,1,2, n) được xác định như sau:
- δij =1 nếu cặp đỉnh xi và xj có cạnh nối với nhau
Trang 30- δij =0 nếu cặp đỉnh xi và xj không có cạnh nào nối với nhau
Bằng cách trên ta sẽ nhận được ma trận biểu diễn đồ thị đã cho
Ma trận của đồ thị vô hướng là ma trận đối xứng, tức là các phần tử đối xứng qua đường chéo chính sẽ tương ứng bằng nhau
b Trường hợp đồ thị cần biểu diễn là có hướng: Có thể được biểu diễn một cách đơn giản bằng ma trận kề vuông cấp n, với n là số đỉnh của đồ thị Phần tử δij ở hàng i cột j (i,j=0,1,2, n) được xác định như sau:
- δij =1 nếu cặp đỉnh (xi, xj ) có cung
- δij =0 nếu cặp đỉnh (xi, xj ) không có cung nào
Ma trận của đồ thị có hướng không phải là ma trận đối xứng
Chú ý: Ma trận biểu diễn đồ thị đơn là ma trận logic
Thuật toán để tìm tất cả các đường đi trong ma trận kề dựa trên thao tác nhân ma trận liên kết một cột tương ứng của ma trận đó được thể hiện như sau:
Bk = A B*k- 1(*) Trong đó:
- Bk cột ma trận kết quả của phép nhân (*)
- B*k- 1 là kết quả của phép chuyển đổi B k- 1 ;
Vậy bài toán đặt ra ở đây là cho ma trận A và ma trận cột B1 hãy tìm tất cả các đường đi có thể có từ nguồn (điểm phát) tới đích (điểm nhận)
+ Bước 1: Kiểm tra ma trận cột B1 có chứa cung bắt đầu từ đỉnh nguồn hay không Nếu cung tồn tại thì ghi nhận đường đi đó và thay thế cung đó bởi giá trị 0 Sự thay đổi này sẽ cho ta kết quả là B*
1 ; + Bước 2: Xét với k=2
+ Bước 3: Thực hiện phép tính (*) để tìm các giá trị Bk tương ứng
+ Bước 4: Kiểm tra Bk bắt đầu từ nguồn, nếu đường đi tồn tại thì ghi nhớ và thay thế cung đường đi đó bởi giá trị 0 Nếu đường đi xuất hiện trong Bk là đường đi đầy
đủ thì thay thế Bk =0 Sự thay đổi này cho ta kết quả là B*k
+ Bước 5: Kiểm tra B*k Nếu B*k =0 thì thực hiện tiếp bước 7 Nếu B*k ≠0 thì thực hiện tiếp bước 6
Trang 31+ Bước 6: Kiểm tra điều kiện k ≤ n-1 Nếu thoả mãn điều kiện k < n-1 thì tăng k lên
1 và thực hiện tiếp bước 3 Nếu điều kiện k = n-1thì thực hiện tiếp bước 7
+ Bước 7: Kiểm tra lại danh sách đường đi và kết quả nhận được là danh sách các đường đi có thể có từ đỉnh đầu đến đỉnh cuối
2.1.5 Thuật toán tìm tất cảđường đi của ma trận liên kết trong lý thuyết đồ thị
Việc mô phỏng thuật toán đã mô tả trong phần 2.1.4 để tìm tất cả các đường đi giữa hai đỉnh là tương đối phức tạp vì thuật toán chỉ thích hợp với những đồ thị có kích thước nhỏ Đối với các đồ thị có kích thước lớn thì việc thực hiện bước 4 và 5
là tương đối phức tạp, dài và dễ nhầm lẫn vì các phần tử của ma trận lúc này là các chuỗi dài Chính vì sự phức tạp này đã dẫn đến một yêu cầu cần phát triển một thuật toán và viết chương trình để tự động tìm kiếm tất cả các đường đi giữa 2 đỉnh của
đồ thị Vấn đề này tương đối khác với các bài toán được đặt ra trong lý thuyết đồ thị, trong lý thuyết đồ thị ta thường nói đến các bài toán tìm đường đi ngắn nhất, đường đi tối thiểu giữa 2 đỉnh trong đồ thị hoặc tìm đường đi qua tất cả các đỉnh của
đồ thị
Vậy làm thế nào để tìm tất cả các đường đi giữa 2 đỉnh, chúng ta cùng xem xét
sơ đồ khối của thuật toán tìm tất cả các đường đi của đồ thị như hình 2.1 dưới đây:
Trang 32Hình 2.1 Sơ đồ khối
I_end(t)=i_source?
Đỉnh kết thúc của đường đi từ i_source đến i_destination có thoả mãn i_end(t)=i_destination hay không?
Có hay không đường đi không lặp từ đỉnh i_end(t) đến i_end(t+1)?
Quay lại 01 bước của thủ tục tìm kiếm
từ i_end(t) Kết thúc
Quay lại 01 bước của thủ tục tìm kiếm từ i_end(t)
Lưu đường đi tìm được vào ma trận chứa tất cả các đường đi Làm 0 hoá ma
Trang 33Trong sơ đồ trên ta sử dụng phương pháp tìm kiếm theo chiều sâu:
Tư tưởng của tìm kiếm theo chiều sâu là: Từ đỉnh nguồn (đỉnh đầu) của đồ thị ta
di chuyển đến một đỉnh khác (một đỉnh bất kỳ mà có thể đi từ đỉnh đầu) Từ đỉnh này
ta tiếp tục đi đến khác đỉnh khác Nếu không thể đi tiếp được nữa thì quay lại đỉnh trước đó và đi đến đỉnh khác Cứ như vậy cho đến khi đến đỉnh cuối của đồ thị
Để hiểu rõ hơn thuật toán, ta xét ví dụ sau:
Hình 2.2a : Đồ thị vô hướng
Hình 2.2b: Đồ thị có hướng
Đồ thị như hình 2.2a và 2.2b được chuyển thành dạng ma trận liên kết tương ứng là A1
và A2 trong đó các phần tử là 0 hoặc (i,j):
Trang 34Ở đây ta đã đơn giản hoá cách viết các phần tử trong ma trận, bỏ dấu ngoặc đơn
và dấu phẩy giữa hai đỉnh kết nối với nhau Ví dụ (1,2) = 12,
Ta sẽ sử dụng thuật toán 2.1 4 đã nói ở trên để áp dụng với ma trận A1 có đỉnh nguồn là 1 và đỉnh đích 6:
Trang 35Vì ở bước 6 của thuật toán khi gặp điều kiện k=n-1 (4=5-1) thì ta dừng lại và liệt kê tất
cả các đường đi đã tìm được Vậy ta dừng thuật toán tìm tất cả các đường đi của ma trận A1 tại bước này
Ta thấy để tìm đường đi theo thuật toán 2.1.4 thì ta phải tính được ma trận B1, B2, B3,
B4 như trên và danh sách tất cả các đường đi từ đỉnh 1 đến đỉnh 5 nhận được là:
1 2 5; 1 4 5; 1 3 2 5; 1 3 4 5; 1 2 3 4 5; 1 4 3 2 5;
Nếu ta áp dụng thuật toán 2.1.5 tìm kiếm theo chiều sâu thì kết quả sẽ như sau:
Ma trận A1 sẽ được viết lại như sau:
- Nếu quay lại đỉnh 2 thì từ đỉnh 2 ta có thể đi tiếp đến đỉnh 5, vậy ta có đường đi là
1 2 5
- Nếu quay lại đỉnh 1 thì ta có thể đi tiếp đến đỉnh 3, tiếp đỉnh 4 và 5, vậy ta có đường đi 1 3 4 5 hoặc từ đỉnh 3 ta đi tiếp đến đỉnh 2 và tiếp đến đỉnh 5, vậy ta có đường đi là 1 3 2 5;
- Từ đỉnh 1 ta cũng có thể đi đến đỉnh 4 và đi tiếp đến đỉnh 5, vậy ta có đường đi
1 4 5 hoặc từ 4 ta có thể quay về đỉnh 3 rồi về đỉnh 2 và đi tiếp đến đỉnh 5, vậy ta có đường đi 1 4 3 2 5;
Trang 36Áp dụng thuật toán 2.1.5 này cho ta kết quả là các đường đi: 1 2 3 4 5; 1 2 5;
1 3 4 5 ; 1 3 2 5; 1 4 5 và 1 4 3 2 5 Kết quả này trùng với kết quả tính theo thuật toán 2.1.4
Hai thuật toán 2.1.4 và 2.1.5 cho ta kết quả tương tự nhau
sự phức tạp trong việc xây dựng các ký pháp đồ hoạ Vậy việc chuyển đổi từ sơ đồ cấu trúc logic sang đồ thị liên kết bằng tay là đơn giản tuy nhiên lại mất rất nhiều thời gian
- Từ thuật toán tìm đường đi đã biết trong lý thuyết đồ thị ta có thể phát triển thành thuật toán tìm tất cả các đường đi trong đồ thị bằng cách chuyển đồ thị đó thành ma trận tương ứng, phần tử trong ma trân δij =1 nếu tồn tại đường đi giữa i và j, δij =0 nếu không tồn tại đường đi giữa i và j
2.2 Bài toán tối thiểu các toán tử logic
Việc tối thiểu hoá các toán tử logic thường dựa trên các hằng đẳng thức Boole hay còn được gọi là các luật trong đại số Boole Vậy đại số Boole là gì và các phép toán, các luật liên quan đến đại số Boole mà ta sẽ sử dụng để tối thiểu hoá các toán tử logic
là gì? Trong mục này chúng ta sẽ đi giải quyết vấn đề đó
2.2.1 Định nghĩa và các phép toán trong đại số Boole
Một đại số Boole là một cấu trúc đại số gồm một tập hợp S chứa ít nhất là 2 phần
tử, được ký hiệu là 0 và 1, cùng với hai phép toán 2 ngôi “+” (tuyển - ˅) và “.” (hội
- ˅) và một phép toán 1 ngôi “¯” (phủ định) thỏa mãn các tính chất sau đây:
(1) Các phép toán “+” và “.” có các luật : Kết hợp, giao hoán, lũy đẳng; tức là với mọi x,y,z Є S ta có:
Trang 37- (x + y) + z = x + (y + z) hay (x˅y)˅z=z˅(y˅z)
- (x y) z = x (y z) hay (x˅y)˅z = x˅(y˅z)
- x + y = y + x hay x˅y = y˅x
- x y = y x hay x˅y = y˅x
(2) Luật phân phối:
- x (y + z) = (x y) + (x z) hay x˅(y˅z) = (x˅y)˅(x˅z)
- x + (y z) = (x + y) (x + z) hay x˅(y˅z) = (x˅y)˅(x˅z)
(3) Luật đồng nhất: 0 là trung hòa của phép toán “+” và 1 là trung hòa của phép toán
“.”; tức là với mọi xЄ S ta có :
- x + 0 = x hay x˅0 = x
- x 1 = x hay x˅1 = x
(4) Luật tồn tại của phần tử bù :
- = 1 hay x˅ =1 với mọi x Є S
- = 0, hay = 0với mọi x Є S
- x.(x+y) = x hay x˅(x˅y) = x
- x+(x.y)= x hay x˅(x˅y) = x
Trang 38Việc chứng minh các luật không khó ta có thể chứng minh bằng bảng chân lý hoặc
sử dụng các luật khác trong đại số Boole
2.2.2 Các phương pháp cơ bản để tối thiểu hoá các toán tử logic
Trước đây khi kỹ thuật điện tử chưa phát triển thì việc tối thiểu hoá các toán tử logic (hàm boole) là một vấn đề cơ bản trong lý thuyết tổng hợp mạch logic Tuy nhiên ngày nay với công nghệ ngày càng tinh vi, hiện đại đã cho ra đời các mạch tích hợp cỡ lớn vì vậy mà việc tối thiểu hoá hàm boole không còn giữ vai trò quan trọng nữa Tuy nhiên ta cũng không nên lạm dụng điều này mà cũng nên tối thiểu hoá hàm boole khi ta thiết kế những mạch đơn giản mà ta có thể tối thiểu được Việc tối thiểu hoá hàm boole tức là tìm dạng biểu thức boole đơn giản nhất của hàm boole đó
Trong mục này tôi sẽ giới thiệu 03 phương pháp để tối thiểu hoá hàm boole:
- Phương pháp biến đổi đại số;
- Phương pháp bảng Karnaugh;
- Phương pháp Quine – Mc.Cluskey
a Phương pháp biến đổi đại số
Phương pháp này dựa trên các luật, các hằng đẳng thức của đại số boole để tối thiểu hoá các các biến và các phép toán trên biểu thức boole
VD: Tối ưu hoá hàm boole: f(x,y) =
Trang 39- Nếu hàm cần tối thiểu hoá có n bit và số các hội sơ cấp có thể tổ hợp lại được là
2k thì sau khi tổ hợp sẽ có n-k biến thuộc tổ hợp
c Phương pháp Quine – Mc.Cluskey
Ta đã thấy rằng các bảng Karnaugh có thể được dùng để tạo biểu thức cực tiểu của các hàm Boole như tổng của các tích Boole Tuy nhiên, các bảng Karnaugh sẽ rất khó dùng khi số biến lớn hơn bảy Hơn nữa, việc dùng các bản đồ Karnaugh lại dựa trên việc rà soát trực quan để nhận dạng các số hạng cần được nhóm lại Vì những nguyên nhân đó, cần phải có một thủ tục rút gọn những khai triển tổng các tích có thể
cơ khí hoá được Phương pháp Quine-McCluskey [5] là một thủ tục như vậy Nó có thể được dùng cho các hàm Boole có số biến bất kỳ Phương pháp này được W.V Quine
và E.J McCluskey phát triển vào những năm 1950
Về cơ bản, phương pháp Quine-McCluskey có hai phần
- Phần đầu là tìm các số hạng là ứng viên để đưa vào khai triển cực tiểu như một tổng các tích Boole mà ta gọi là các nguyên nhân nguyên tố
- Phần thứ hai là xác định xem trong số các ứng viên đó, các số hạng nào là thực sự dùng được
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
Trang 40tử 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
a) Thuật toán cắt giảm
Thuật toán 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 Thuật toán này 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 đó
3 Đối với mỗi biến xi ta thực hiện phép tách sau:
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