Nó không đơn thuần chỉ là một hệ thống đơn giản mà là hệ thống được đặc trưng bởi 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 độn
Trang 1MỤC LỤC
MỞ ĐẦU 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 11
1.1 Khái niệm cơ bản về độ tin cậy 11
1.1.1 Tổng quan 11
1.1.2 Định nghĩa về độ tin cậy 11
1.1.3 Dạng chung của xác suất an toàn 12
1.1 Chỉ số độ tin cậy của hệ thống 12
1.2.1 Phần tử không phục hồi 12
1.2.2 Phần tử phục hồi 18
1.2 Phương pháp tính độ tin cậy của hệ thống qua cấu trúc hệ thống 20
1.3.1 Sơ đồ khối độ tin cậy của các phần tử nối tiếp 21
1.3.2 Sơ đồ khối độ tin cậy của các phần tử song song 23
1.3 Các biện pháp để nâng cao độ tin cậy của hệ thống 25
1.4 Kết luận 26
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 27
2.1 Bài toán tìm đường đi trong đồ thị hệ thống 27
2.1.1 Quy tắc chuyển đổi sơ đồ cấu trúc logic thành sơ đồ khối 27
2.1.2 Phân loại các đỉnh và các cạnh của đồ thị liên kết 28
2.1.3 Quy tắc chuyển đổi sơ đồ cấu trúc logic sang đồ thị liên kết: 28
2.1.4 Thuật toán tìm tất cả các đường đi trong ma trận liên kết 29
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ị 30
2.1.6 Kết luận 34
2.2 Bài toán tối thiểu các toán tử logic 34
2.2.1 Định nghĩa và các phép toán trong đại số Boole 35
2.2.2 Các phương pháp cơ bản để tối thiểu hoá các toán tử logic 36
2.3 Bài toán xác định trực giao hoá các toán tử logic 37
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 37
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 39
2.3.3 Kết luận 40
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 41
3.1 Thiết lập bài toán 41
3.1.1 Viết chương trình để tìm các đường đi trong ma trận liên kết 41
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 45
Trang 23.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 49
3.4 Kết luận 56
CHƯƠNG 4 ĐỘ TIN CẬY VÀ KHẢ NĂNG HỆ THỐNG HOẠT ĐỘNG AN TOÀN QUA VÍ DỤ CỤ THỂ 58
4.1 Đặc tả hệ thống 58
4.2 Nghiên cứu các thuật toán và phát triển các hàm 59
4.3 Kết quả thu được từ chương trình tính toán độ tin cậy của hệ thống 61
4.4 Kết luận 71
KẾT KUẬN 72
TÀI LIỆU THAM KHẢO 73
Trang 3MỞ ĐẦU
1 Lý do chọn đề tài
Thế giới xung quanh ta không ngừng tiến hóa và biến đổi theo xu hướng ngày càng hoàn thiện hơn Các cuộc cách mạng khoa học kỹ thuật bùng nổ mạnh mẽ đặc biệt là cuộc cách mạng trong lĩnh vực công nghệ đã mở ra một kỷ nguyên mới, và bắt đầu tạo ra các hệ thống siêu 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ế Nó không đơn thuần chỉ là một hệ thống đơn giản mà là hệ thống được đặc trưng bởi 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ó Đâ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, là toàn bộ cơ sở hạ tầng của xã hội hiện đại Tuy nhiên, cũng chính vì điều này mà nền sản xuất 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 không đáng 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
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, phức tạp nếu không đảm bảo được
độ tin cậy thì hệ thống coi như không tồn tại Các ứng dụng trong cuộc sống con người hầu hết đều có sự tham gia của khoa học máy tính Ví dụ trong lĩnh vực hàng không: khu vực và ngành hệ thống thông tin quản lý, bao gồm cả một số lượng lớn các máy tính, hệ thống kiểm soát không lưu, lượng truy cập cho hàng không dân dụng, hệ thống điều khiển quá trình tự động, các trung tâm kiểm soát mạng lưới và theo dõi không gian, mạng và hệ thống truyền tải dữ liệu, Tất
cả tạo thành một hệ thống trong đó là một số lượng lớn các yếu tố thành phần và
có một cấu trúc phức tạp hơn và thực hiện một chức năng riêng, chúng ít tin cậy hơn so với một hệ thống đơn giản 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 phức tạp như vậy, bao gồm cả sự phát triển của phương pháp toán học tính toán ưu tiên và đánh giá thử nghiệm, phương pháp đánh giá độ tin cậy của
hệ thống dựa trên cơ sở lý thuyết xác suất và quá trình ngẫu nhiên đã đượ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 phức tạp, mà để giải nó cần đến các công cụ như lý
Trang 4thuyế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í tố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 [9] Khi biết được độ tin cậy của hệ thống có thể giúp chúng ta có được 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 Đ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 nên hệ thống đó [10] 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 Để nâng cao
độ tin cậy của các yếu tố thành phầ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 “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” để 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
Trang 5kế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
2 Mục đích nghiên cứu
Mục đích nghiên cứu của đề tài là đưa ra 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 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
Luận văn đã góp phần hệ thống hoá cơ sở lý luận của việc đánh giá độ tin cậy của hệ thống Việc xây dựng thành công phần mềm tính toán độ tin cậy của hệ
Trang 6thố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ó 4 chương:
Nội dung chính của chương I là một số khái niệm cơ bản về độ tin cậy, các chỉ số liên quan đến độ tin cậy và 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
Nội dung chính của chương II là 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
Nội dung chính của chương III là việc xây dựng bài toán tính toán độ tin cậy của hệ thống, đưa ra các hàm chức năng cần thiết để xây dựng và giải quyết bài toán đánh giá độ tin cậy của hệ thống mạng máy tính
Nội dung chính trong chương IV là đưa ra ví dụ về một hệ thống mạng máy tính thực, đặc tả hệ thống đó và xét các trường hợp cơ bản có thể ảnh hưởng đến
độ tin cậy của hệ thống Chạy chương trình đã viết ở chương III và phân tích các kết quả đạt được
Trang 7CHƯƠ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”
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
P(t) được định nghĩa như biểu thức sau:
P(t) = P{ ≥ t} (1.1) Trong đó:
- 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
Trang 8Đồ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(t) ≤ 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 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.1 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
Nhữ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)
Trang 9Vì 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, 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 đó:
𝑞 𝑡 = 𝑑𝑄(𝑡)
𝑑𝑡 (1.3) Trong đó thỏa mãn tính chất:
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 10Hình 1.3: Biểu diễn độ tin cậy của phần tử
Trang 11Theo 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
Vậy độ tin cậy của phần tử đƣợc tính nhƣ sau:
Từ (1.3) và (1.5) ta có:
𝑞 𝑡 = 𝑄′ 𝑡 = 1 − 𝑃 𝑡 ′ = −𝑃′ 𝑡 = −𝑑𝑃 𝑡
𝑑𝑡(do đạo hàm của 1 bằng 0) Thay vào (1.10) ta có:
𝜆 𝑡 = − 𝑑𝑃 𝑡
𝑃(𝑡)𝑑𝑡 <=> −𝜆 𝑡 𝑑𝑡 = 𝑑𝑃(𝑡)𝑃(𝑡)
⟹ − 𝜆 𝑡 𝑑𝑡 =
𝑡 0
Trang 12Cô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
Khi đó: 𝑃 𝑡 = 𝑒−t; 𝑄 𝑡 = 1 − 𝑒−t; 𝑞 𝑡 = 𝑒−t
Biểu diễn mối quan hệ giữa các thông số trên như hình 1.4 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.5 Đườ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
Hình 1.5: Biểu diễn cường độ hỏng hóc
Trang 13ké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
Miề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 và được xác định:
𝑃 𝑡 = 𝑒−t = 𝑒−𝑡 𝑇𝐻𝐷
Trang 141.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.6 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):
(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 bố 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)
Hình 1.6 Trục thời gian vận hành của phần tử
Trang 15b 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)
𝑠 = 𝐸𝜏 = 1 + 2 + ⋯ + n
n (1.15)
Để đơ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 𝑃 𝑡 = 𝑒−t 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à:
𝐻 𝑡 = 𝑒−μt 1.16 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à:
𝐺 𝑡 = 1 − 𝑒−μt 1.17
Và hàm mật độ phân bố xác suất là:
𝑔 𝑡 = 𝐺′ 𝑡 =𝑑𝐺(𝑡)
𝑑𝑡 = 𝜇𝑒−μt (1.18) Vậy thời gian trung bình sửa chữa sự cố là:
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ó:
𝑇 = 𝐸 T = 1
(1.20) Dựa vào sơ đồ ở hình 1.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:
Trang 16Hình 1.7: 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
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
Giả 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ũ:
𝑅 𝑡 = 𝐴 𝑒−t (1.23) Trong đó: 𝐴 = 𝜇 +𝜆𝜇 là hệ số sẵn sàng
1.2 Phương pháp tính độ tin cậy của hệ thống qua cấu trúc 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ề hai 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ự
Trang 17Phươ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 [10] 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
1.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.8:
Trang 18Trong đó 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à:
𝑃𝐻 𝑡 = 𝑃1 𝑡 𝑃2 𝑡 … 𝑃𝑖 𝑡 … 𝑃𝑛 𝑡 = 𝑃𝑖 𝑡
𝑛 𝑖=1
(1.24)
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
Cá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:
(1.26) Thời gian hoạt động an toàn trung bình của hệ thống là:
𝑇𝐻 = 1
Λ (1.27) 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à:
𝜏𝐻 = 𝑛𝑖=1𝜆𝑖𝜏𝑖
𝜆𝑖
𝑛 𝑖=1
Trang 19Hoặc:
𝜏𝐻 = 𝜆𝑖𝜏𝑖
𝑛 𝑖=1
Λ = 1
Λ 𝜆𝑖
𝜇𝑖
𝑛 𝑖=1
= 1
𝜇 (1.29) Trong đó: = 1/H và ta thấy TH >> H
𝑃 𝑡 = 𝐴𝐻 𝑒−Λ.𝑡 (1.31)
Xác suất trạng thái hỏng của hệ thống:
𝑄𝐻 𝑡 = 1 − 𝑃𝐻 𝑡 = 1 − 𝑃1 𝑃2… 𝑃𝑛 (1.32)
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 lần/h , 300 rơle loại B (λ=0,149.10-6 lần/h ), 100 rơle loại C (λ=0,073.10-6 lần/h ) 100 rơle loại D (λ=0,531.10-6 lần/h ) Hệ thống là sơ đồ nối tiếp các phần tử
Hãy xác định xác suất làm việc không có trở ngại trong 100 giờ và thời gian làm việc trung bình đến trở ngại
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 sẽ gặp sự cố khi tất cả các phần tử gặp sự cố Trường hợp điển hình như hình 1.9
Trang 20Ta có xác suất sự cố QH(t) [2] của toàn hệ thống, hệ thống có sự cố khi toàn bộ n phần tử bị sự cố:
Trang 21Λ = n λ e
−λt 1 − e−λt n−1
1 − 1 − 𝑒−𝜆.𝑡 𝑛 1.37 Thời gian hoạt động an toàn trung bình của hệ thống là:
= 𝑒−𝜇𝑖.𝑡 𝑛
𝑖=1
= 𝑒− 𝑛𝑖=1𝜇𝑖 𝑡
𝑄𝐻 𝑡 = 𝑒−𝑀𝑡 (1.39) Trong đó 𝑀 = 𝑛𝑖=1𝜇𝑖 gọi là cường độ phục hồi của hệ thống
Hệ số sẵn sàng của hệ thống:
𝐴 = 𝑀
𝑀 + Λ 1.40 Hàm tin cậy của toàn hệ thống:
𝑅 𝑡 = 𝐴 𝑒−Λ𝑡 1.41
Ví dụ:
Một máy bay có 2 động cơ hoạt động độc lập Ít nhất một động cơ phải hoạt động bình thường để máy bay vẫn bay Độ tin cậy của động cơ 1 và động cơ 2 lần lượt là 0.99 và 0.97
Tính xác suất của các chuyến bay thành công của máy bay?
Giải:
P(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.3 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 có thể là:
- Ngăn trở các lỗi có thể xuất hiện trong hệ thống bằng cách sử dụng các hệ thống tiêu chuẩn hóa, việc này có tác dụng giảm các lỗi do thiết kế hệ thống
- Chọn các linh kiện có độ tin cậy cao, cải thiện điều kiện làm việc của chúng như tản nhiệt, tránh nhiễu điện từ, bảo vệ chống dao động điện áp nguồn
- Sử dụng các phần cứng và phần mềm quen thuộc đối với người sử dụng sẽ giảm được các lỗi tương tác
- Loại trừ các lỗi bằng cách phát hiện và sửa lỗi sớm, trước khi các lỗi có thể gây ra sai lệch
- Chấp nhận lỗi trong hệ thống bằng có chế dự phòng (redundancy)
Trang 22- 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 (partial redundancy) hoặc dự phòng toàn bộ (massive redundancy) 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 chín trong mười 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 một 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 redundancy) 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
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 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.4 Kết luận
Độ 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ể
Xác suất vận hành an toàn của phần tử là một hàm 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
Trang 23CHƯƠ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 [9] 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 đó
2.1 Bài toán tìm đường đi trong đồ thị hệ thống
2.1.1 Quy tắc chuyển đổi sơ đồ cấu trúc logic thành sơ đồ khối
Trước khi đi vào Quy tắc 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:
Trang 24- 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 đó
- Đườ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 Quy tắc chuyển đổi sơ đồ cấu trúc logic sang đồ thị liên kết:
Quy tắc 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
Trang 25- 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
- δ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: K=1
If i_end == i_stok
Lưu đường đi vào ma trận K B[i_end][i]=0
Trang 26k++
Thực hiện tiếp bước 3
If k = n-1
Thực hiện tiếp bước 7 +) Bước 7: Ma trận K lưu các đường đi tìm được
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 giả mã của thuật toán sau:
1 If i_end == i_stok
If i=0 AND i< L AND i++
Lưu các đường đi tìm được vào ma trận K
2 If i=0 AND i<N AND i++
If i≠i_end AND ( find_i_in_P(i, P, L) == 0 ) AND A[i_end][i]==1 Thêm i vào ma trận chứa các đường đi tìm được
Tiếp tục tìm kiếm đỉnh tiếp theo cho đến đỉnh cuối
3 Kết thúc
Để hiểu rõ hơn ta cùng xét tiếp 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 27Đỉnh kết thúc của đường đi từ i_end(t) đến i_stok có thoả mãn i_end(t)=i_stok hay không?
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 trận
Theo A tìm đỉnh mới i_end(t+1) đi từ đỉnh i_end(t) Đường mới được cho vào mảng lưu trữ các đường đi
I_end(t)=i_istok?
Có hay không đường đi không lặp từ đỉnh i_end(t) đến i_end(t+1)?
Đọc ma trận A, đỉnh đầu i_istok, đỉnh cuối i_stok từ file đầu vào
Hình 2.1 Sơ đồ khối tìm tất cả các đường đi trong đồ thị
Đúng
Trang 28Trong 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
0 4,5 5,4 0
Trang 290 ; B*1 =
025045
0 Các bước tiếp theo của thuật toán được thực hiện như sau:
32˄25 ∨ 34˄45
00
52˄23˄34˄45 ∨ 54˄43˄32˄25
Vì ở 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:
Trang 30Xuất phát từ đỉnh 1 ta đi tiếp đến đỉnh 2, từ đỉnh 2 ta đi tiếp đến đỉnh 3, tiếp đến đỉnh 4, tiếp đến đỉnh 5 ta dừng lại vì đỉnh 5 đã là đỉnh cuối Vậy ta được đường đi 1→2→3→4→5
Từ đỉnh 5 ta quay lại đỉnh 4 nhưng từ đỉnh 4 không có đường nào khác đến đỉnh 5 ngoài đường đã nói ở trên nên ta quay lại đỉnh 3, từ đỉnh 3 ta có thể quay lại đỉnh 2 hoặc đỉnh 1:
- 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;
Á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 tìm tất cả các đường đi trong ma trận liên kết (2.1.4) và tìm tất cả các đường đi của ma trận liên kết trong lý thuyết đồ thị (2.1.5) cho
ta kết quả tương tự nhau
- 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à
Trang 31cá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ó:
- (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
Việ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
Trang 322.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) = 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦
Ta có:
f(x,y) = 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦 = 𝑥 ˄𝑥 ˄𝑦˄𝑥˄(𝑦˄ 𝑦 ) = 1˄𝑦˄𝑥˄1 = 𝑦˄𝑥
Ở đây ta đã sử dụng luật tồn tại của phần tử bù để tối thiểu hàm f(x,y)
b Phương pháp bảng Karnaugh
Phương pháp này dựa trên việc tổ hợp các hội sơ cấp có thể tổ hợp được để loại bỏ các hội sơ cấp của hàm boole không cần thiết Phương pháp bảng Karnaugh [5] mà ta sẽ nói ở đây đã được Maurice Karnaugh đưa ra vào năm
1953 Phương pháp này dựa trên một công trình trước đó của E.W Veitch và nó cho ta một phương pháp trực quan để rút gọn các khai triển tổng và tích
Chú ý:
- Phương pháp tối thiểu hoá hàm boole sử dụng bảng Karnaugh chỉ tổ hợp được khi số các hội sơ cấp sẽ tổ hợp là 2k và đối xứng với nhau qua các trục của bảng Mục tiêu là cần nhận dạng các khối 2k ô biểu diễn các hội sơ cấp
Trang 33Ta đã 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 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
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:
Trang 34f(x1, …, xi , … xn) = 𝑥 f(x𝑖 1, …, 0, …, xn) ˅ xi f(x1, …, 1, …, xn) = 𝑥 f𝑖 i(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 ++