CHƯƠNG 1 Bài 1: Tìm hiểu sự khác nhau và giống nhau giữa 2 loại kiểu dữ liệu tập hợp: set (của ngôn ngữ Python) và FiniteSet (của gói sympy). Hướng dẫn: tìm kiếm trên Google. Bài 2: Ở một trường, hiệu trưởng quy định xét học bổng, tất cả các sinh viên có điểm trung bình dưới 7 hoặc điểm rèn luyện dưới 7 đều không được xét học bổng, trường hợp ngược lại sẽ Được xem xét học bổng. Hãy cho biết đoạn script dưới đây đã thể hiện đúng đắn theo quy định xét học bổng chưa, nếu muốn mô tả theo đúng ý của quy định thì cần điều chỉnh lại như thế nào? if not (diemtrungbinh > 7 and diemrenluyen > 7): print ("Khong duoc xet hoc bong") else: print ("Duoc xem xet hoc bong") Bài 3: Bác sĩ yêu cầu một kỹ sư viết một phần mềm với bảng dữ liệu về bệnh huyết áp thấp/cao được thu thập như sau: Phân loại (huyết áp) Tâm thu (Systolic) Biểu thức Tâm trương (díatolic) Thấp (hypotension) <90 And/or <60 Tốt nhất (optimal) <120 And <80 Bình thường (normal) 120 – 129 And/or 80 – 84 Bình thường cao 130 – 139 And/or 85 – 89 THA độ 1 (nhẹ) 140 – 159 And/or 90 – 99 THA độ 2 (trung bình) 160 – 179 And/or 100 – 109 THA độ 3 (nặng) ≥180 And/or ≥110 THA tâm thu đơn độc ≥140 And <90 Bảng định nghĩa và phân loại các cấp độ huyết áp (theo đơn vị mmHg) Từ bảng dữ liệu về bệnh huyết áp cao (HBP - high blood pressures) như trên, sinh viên hãy viết các dòng lệnh rẽ nhánh if trong Python.
Với: cột biểu thức mang giá trị And/or nghĩa là khi hai giá trị ở 2 mức khác nhau thì chọn mức “có bệnh” cao hơn. Mức có bệnh là mức thấp hoặc cao; mức không bệnh là mức Tốt nhất (optimal). Ví dụ: Tâm thu = 85, tâm trương = 55 thì sẽ là mức độ huyết áp thấp. Hoặc khi tâm thu = 125 nhưng tâm trương là 105 thì kết quả là THA độ 2.
Bài 4: Thực hiện bằng kiểu set các tập hợp sau: a. Cho tập hợp A với x là biến số nguyên như sau: ={ | + 4 + 4 = 0} !"ế$ đ'ạ )*"+$ ,ằ. Cho tập hợp A với n là biến số nguyên như sau: = {?ớ" Aọ" | + 4 < 100} !"ế$ đ'ạ )*"+$ ,ằ. Bài 5: Sử dụng biểu đồ Venn để thể hiện 2 tập hợp Biểu đồ Venn (Venn diagram) là phương pháp đơn giản để thấy được quan hệ giữa tập hợp.
Nó cho chúng ta thấy có bao nhiêu phần tử chung giữa hai tập hợp, bao nhiêu phần tử trong một tập hợp và bao nhiêu phần tử không có trong tập hợp. Ví dụ: Xét tập A gồm các số dương lẻ (posotive odd) nhỏ hơn 20, nghĩa là A = {1, 3, 5, 7 ,9 ,11, 13, 15, 17, 19} và xét tập B là những số nguyên tố (prime) nhỏ hơn 20, nghĩa là B = {2, 3, 5, 7, 11, 13, 17, 19}. Chúng ta có thể vẽ biểu đồ Venn bằng Python với các lệnh như sau: Sau khi chúng ta import các module và hàm cần thiết (như là venn2(), matplotlib.pyplot và FiniteSet), tất cả việc còn lại là tạo 2 tập và gọi hàm venn2 cho tập hợp ghép: >>> s3 = [s1, s2] >>> s3 [{1, 3, 5, 7, 9, 11, 13, 15, 17, 19}, {2, 3, 5, 7, 11, 13, 17, 19}] Với tập ghép, chúng ta sẽ vẽ được biểu đồ Venn và biểu đồ Venn cho ta kết quả: - Tập A có 3 phần tử riêng. - Tập B có 1 phần tử riêng.
- Tập A và B có 7 phần tử chung. Để rõ hơn, chúng ta có thể đặt tên các tập hợp bằng cách điều chỉnh hàm vẽ biểu đồ Venn như sau: >>> def draw_venn(sets): venn2(subsets=sets, set_labels=('Tap S1', 'Tap S2') ) plt.show() Và sau đó thực hiện lại lệnh vẽ: >>> draw_venn([s1, s2]) Biểu đồ Venn thể hiện quan hệ giữa 2 tập hợp A và B Điều kiện: Sinh viên cài đặt hoàn tất gói matplotlib_venn Sinh viên đọc thêm bài dưới đây để làm các bài tập: Bài tập 6, Bài tập 7 và Bài tập 8: Ứng dụng: Nền tảng của công nghệ RAID khôi phục dữ liệu Sinh viên đọc và tìm hiểu về phương pháp sử dụng XOR trong khôi phục dữ liệu khi đĩa cứng chứa dữ liệu bị hư trên hệ thống máy chủ nhiều đĩa cứng. Bài toán thực tiễn Hư hỏng đĩa cứng dẫn đến mất mát dữ liệu là vấn đề xảy ra thường xuyên đối với người sử dụng máy tính. Để khắc phục tình trạng trên, các hệ thống server hỗ trợ công nghệ có tính năng đặc biệt là: mỗi khi có một đĩa cứng trên hệ thống bị hư thì hệ thống vẫn tiếp tục chạy và dữ liệu không bị mất để thay thế ổ cứng khác.
Giải pháp đơn giản nhất là công nghệ sao chép dữ liệu trùng nhau. Điều này nghĩa là sẽ có hai đĩa cứng có nội dung giống y chang nhau. Từ đó, mỗi khi có một đĩa cứng bị hư và khi thay thế bằng ổ đĩa mới, dữ liệu sẽ được tự động sao chép từ ổ đĩa còn lại sang ổ đĩa mới. Giải pháp này dễ cài đặt, dễ hiểu và đơn giản nhưng hoàn toàn tốn kém về đĩa do dung lượng lưu trữ bị tăng gấp đôi, cụ thể là hiệu suất lưu trữ chỉ đạt 50% lưu trữ.
Từ đó, người ta cần tìm một giải pháp để lưu trữ dữ liệu, có khả năng lưu trữ hiệu suất cao, sử dụng nhiều đĩa cứng cùng lúc và việc phục hồi dữ liệu cho bất kỳ đĩa cứng hỏng nào. Nghĩa là mô hình lưu trữ đạt được bao gồm 3 yếu tố: - Yếu tố 1: Hiệu suất lưu trữ cao. - Yếu tố 2: Khi một đĩa cứng bị hỏng, khả năng phục hồi dữ liệu là 100%. - Yếu tố 3: Dữ liệu có khả năng đọc/truy xuất được song song cùng lúc.
Phép XOR toán học và thể hiện trên Python Phép XOR toán học là phép “cộng nhị phân không nhớ” với bảng chân trị như sau: TT a b a XOR b Lưu ý 1 0 0 0 2 1 0 1 3 0 1 1 4 1 1 0 Không “nhớ” sang giá trị hàng “chục” như phép cộng Ở Python, chúng ta sử dụng dấu ^ để mô tả về phép XOR. Ngoài ra, lớp operator có module xor để thực hiện phép XOR. Ví dụ về phép XOR: >>> from operator import xor >>> a = 2 # số nhị phân của số 2 là 10 >>> b = 3 # số nhị phân của số 3 là 11 >>> axorb = xor(a, b) # dự kiến kết quả: 10 XOR 11 = 01 >>> axorb ……….………………………………………… sinh viên ghi kết quả vào và giải thích. Ví dụ 2: Sinh viên thực hành các câu lệnh sau và hãy cho biết giá trị của phép toán XOR: >>> a = 15 # mã nhị phân tương ứng 01111 >>> b = 14 # mã nhị phân tương ứng 01110 >>> c = 16 # mã nhị phân tương ứng 10000 >>> d = a ^ b ^ c >>> d ……………….………………………………… sinh viên ghi kết quả vào và giải thích.
Tư tưởng ứng dụng phép XOR dữ liệu Từ ví dụ 2, hãy thực hiện ví dụ sau: Ví dụ 3: Sinh viên hãy cho biết giá trị của phép toán XOR sau: >>> a = 15 # mã nhị phân tương ứng 01111 >>> e = 17 # mã nhị phân tương ứng 10001 >>> c = 16 # mã nhị phân tương ứng 10000 >>> f = a ^ e ^ c >>> f ……………………………………………… sinh viên ghi kết quả vào và giải thích. Từ kết quả trên, chúng ta thấy được điều kì diệu của phép toán XOR, đó là khả năng phục hồi dữ liệu. Trong ví dụ trên, giả định dữ liệu được lưu trữ là a, b, c và d chính là dữ liệu kiểm (parity). Khi lưu đủ 4 khối trên, giả định mất một khối dữ liệu b thì việc khôi phục hoàn toàn là có thể.
Tổng quát: Gọi A là kết quả của phép toán XOR của n số từ 2D đến 2E = 2D ^2 … ^2H ^ … ^2E Khi đó, 2H sẽ được khôi phục theo công thức: 2H = 2D ^2 … ^ ^ … ^2E (Sinh viên có thể tự chứng minh) Mở rộng ra, với bài toán được nêu ở mục 1 cùng với các tiêu chuẩn, chúng ta có 2 tiêu chuẩn được đáp ứng: - Đáp ứng yếu tố 1: vì chỉ cần 1 ổ đĩa để lưu trữ dữ liệu parity (dữ liệu XOR). - Đáp ứng yếu tố 2: vì khả năng khôi phục dữ liệu với phép xor dữ liệu Các giải pháp RAID và giảii pháp RAID5 Trên thực tế, công nghệ dãyy các đĩa độc lập (RAID – Redundant array of independent inde disks) được phát triển để lưu trữ dữ li liệu một cách an toàn và hiệu quả. Với các giảải pháp RAID 0, RAID 1, RAID 2, RAID 3,, RAID 4, RAID 5 và sau đó nhiều công nghệ RAID sau 5 hiện tại được triển khai ở các hệ thống ng to toàn cầu. Cụ thể, chúng ta có bảng so sánh h và tìm tì hiểu về cách lưu trữ dữ liệu như sau: TT RAID Mô h hình Đặc tính kỹ thuật cơ bản n Ghi chú 1 RAID Số lượng đĩa tối thiểu: 2.
Chỉ tăng tốc, 0 Lưu trữ vòng (stripes),ripes), đĩa cứng hư không có thông tin kiểm m vẫn mất dữ lỗi (parity), nghĩa là không liệu. Thích hợp: tính toán khoa học nhanh hoặc các ác hệ h thống game. RAID này chủ yếu tăng tốc đọcc dữ d liệu. 2 RAID Số lượng đĩa tối thiểu: 2.
1 Lưu mirror dữ liệu, mỗ ỗi dữ liệu lưu 2 nơi. Hiệệu suất lưu không cao, tốcc độđ lưu trữ chậm. Có khả năng phục hồi dữ liệu khi 1 đĩa ĩa cứng bị hư. 3 RAID Số lượng đĩa tối thiểu: 3.
Sinh viên từ 2 Sử dụng hamming code tìm hiểu hoặc error corection. hamming Hiện tại ít hệ thống ng sửs code hoặc dụng do hiệu qua không error cao correction là gì. 4 RAID Số lượng đĩa tối thiểu: 3. Đây là hình 3 Lấy đĩa cuối cùng ng là thức sơ khai parity.
Cho các ứng dụng ng XOR dữ đọc dữ liệu nhỏ, chỉnh sửửa liệu. video không nén. Nhanh chóng được thay thế bởi RAID 5 5 RAID Số lượng đĩa tối thiểu: 3. 4 Cải tiến RAID 3.
Giaa tăng khối lưu 6 RAID Số lượng đĩa tối thiểu: 3. Đáp ứng 3 5 Cải tiến RAID 4, các khố ối tiêu chí đề ra parity lưu xoay vòng trong bài toán ban đầu. 7 RAID Số lượng đĩa tối thiểu: 4. Sử dụng 2 6 Tăng cường parity parity nhằm khôi phục bất kì 2 đĩa nào bị hư.