Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

Giới hạn của máy tính

Những vấn đề mà máy tính hiện tại CHƯA xử lý


được
Giới hạn của máy tính
• Giới hạn về phần cứng
• Giới hạn về tính hữu hạn
• Giới hạn về truyền dữ liệu
• Giới hạn của giải pháp phần mềm
Giới hạn về phần cứng
• Giới hạn về số học
• Giới hạn khi biểu diễn số nguyên
VD. biểu diễn n!, với n nhỏ hơn 13 thì không vấn
đề, tuy nhiên khi n đạt tới 20?
• Giới hạn khi biểu diễn số thực
VD. Số thực quá lớn? Hoặc quá bé?
Giới hạn của số thực theo chuẩn IEE754
• Không thể biểu diễn số thực đúng trong máy tính 0.1 + 0.2 sẽ
KHÔNG thực sự bằng 0.3
Giới hạn về phần cứng
255 0 1
254 2
3

Số nguyên không dấu

underflow
overflow overflow

-¥ -b -a -0 +0 a b +¥

Số thực
Giới hạn về phần cứng
• Phần cứng bị lỗi, hỏng
• Các thiết bị vật lý có thể hỏng bất cứ lúc nào trong
quá trình sử dụng
VD. Ổ cứng hỏng, máy in hỏng, màn hình hỏng,…
• Luôn phải tính toán tới việc backup và khôi phục dữ
liệu
• Điện toán đám mây có thể giảm bớt rủi ro hỏng
hóc, tuy nhiên khi phần cứng hỏng vẫn có thể gây
ra các lỗi trên phạm vi rộng
• Server Amazon sập, khiến khách hàng không thể truy cập
server thuê từ nền tảng Cloud
• Server Google sập, nguời dùng không thể đăng nhập và gmail
hay sử dụng gmap
Giới hạn về phần cứng
• Lỗi trong thiết kế phần cứng bị phát hiện và
gần như KHÔNG thể khắc phục được
• Lỗi driver của ROM/BIOS
• Lỗi CPU với 2 lỗ hổng spectre, meltdown, và
BranchScope của CPU intel
• Lỗi bảo mật trên các CPU của Apple khiếm iphone
có thể bị jailbreak
Giới hạn về phần cứng
• Lỗi trên đường truyền dữ liệu
• Xảy ra do nhiều nguyên nhân có thể gặp khi truyền
trên đường truyền có dây hoặc không dây
• Phát hiện lỗi: dùng Parity Bits – bit chẵn lẻ, hoặc
dùng Check Digits, dùng hsdh như md5 làm
signature của data
• Phát hiện và sửa lỗi: Error-Correcting Codes hoặc
ECC
Giới hạn về phần mềm
• Liệu có thể viết một phần mềm mà KHÔNG thể
có lỗi?
Giới hạn về phần mềm
• Lỗi trong phần mềm: bug
• Quá trình sửa lỗi là debug
• Phát hiện lỗi thông qua: software testing
• Chúng ta chỉ tìm được lỗi hiện chứ KHÔNG thể
chứng minh được lỗi KHÔNG tồn tại trong phần
mềm
• Khi kiểm tra phần mềm, họ chỉ kiểm tra được trong
1 ngữ cảnh hẹp chứ không thể trong tất cả mọi
trường hợp sử dụng
• Một phần mềm đưa ra thị trường quá trình phát
hiện, sửa lỗi và nâng cấp luôn tiếp tục
Giới hạn về phần mềm
• Chu trình phát triển phần mềm
• Hai kỹ thuật dùng để kiểm thử
phần mềm lớn
• walk-throughs và inspections
• Phần mềm nguồn đóng và
xu thế phần mềm nguồn mở
• Nguồn mở: nhiều người tham gia vào
Giới hạn về phần mềm
• Một số vụ lỗi phần mềm gây ra tổn thất lớn
• NASA’s Mars Climate Orbiter
• Ariane 5 Flight 501
• EDS Child Support System
• Soviet Gas Pipeline Explosion
• Bitcoin Hack, Mt. Gox
• Heathrow Terminal 5 Opening
Gần đây nhất là Boeing 737 MAX

Ở VN: Lỗi trong quản lý giao dịch ngân hàng qua thẻ,
dẫn tới lỗ hổng KHÔNG trừ tiền khi thanh toán
Giới hạn về phần mềm

• VD Bài toán thực


tế tìm đường đi
từ DHBKHN tới
hồ Hoàn Kiếm có
nhiều lựa chọn
• Các lựa chọn là
KHÔNG tương
đường (chi phí
khác nhau)
Giới hạn về phần mềm
• Mỗi phần mềm đều là cài đặt của một hoặc
một vài thuật toán để giải quyết bài toán cụ thể
• Có nhiều thuật toán khác nhau để giải một bài
toán
• Lựa chọn thuật toán nào?
• Một bài toán có thể có nhiều thuật toán (phương án) để
giải quyết,
• Chi phí để cài đặt và triển khai có thể khác nhau rất nhiều
• Làm thế nào để đánh giá được thuật toán?
Giới hạn về phần mềm
• So sánh hai thuật toán?
• Tiêu chí đánh giá (thường chọn) là thời gian tính toán
(thời gian CPU cần xử lý các câu lệnh)
• Tiêu chí tiếp có thể là lượng tài nguyên phần cứng
(CPU, RAM,…)
• Vậy cần cài đặt 2 thuật toán trên máy và đo thời
gian thực hiện trên máy tính cụ thể?
• Cách đó này không tổng quát và mất nhiều thời gian
để so sánh
• Nó cũng không đủ tin cậy nếu mà máy tính trong mỗi
lần cài đặt có cấu hình khác nhau
• Ta cần có một cách đánh giá tổng quan hơn cách
trên!
Giới hạn về phần mềm
• Đánh giá phần mềm một cách tổng quan hơn
• Đơn vị thực hiện của phần mềm là câu lênh → đếm số
lần thực hiện các câu lệnh
VD. đếm số lần thực hiện của các lệnh được lặp lại,
lệnh khai báo,…
• Bạn thậm chí KHÔNG cần phải cài đặt thuật toán trên
máy tính mà vẫn đếm được số lượng lệnh nó cần thực
hiện

VD. chương trình in ra các số từ 1 tới 100 thì số lần


thực hiện lệnh in ra sẽ là 100 lần
Giới hạn về phần mềm

• Thời gian thực hiện phụ thuộc vào kích thước đầu vào
• Kích thước đầu vào: VD số lượng phần tử là
• Số lần thực hiện các lệnh (thời gian của thuật toán) thường là 1
hàm dạng đa thức của kích thước đầu vào n. Ví dụ
𝑇 𝑛 = 𝑛3 + 5𝑛2 + 100𝑛 + 60
• Đánh giá theo O-lớn (big O)
• Quan tâm đến yếu tố quyết định chính thời gian thực hiện.

VD. trong hàm 𝑇 𝑛 ở trên thì 𝑛3 là phần tử quyết định chính tới
độ lớn, ký hiệu 𝑂(𝑛3 ) và 5𝑛2 + 100𝑛 + 60 là các tham số ít
quan trọng khi n lớn
Giới hạn về phần mềm

• Đánh giá theo O-lớn (big O)


• Thời gian thực hiện bên cạnh việc phụ thuộc vào kích
thước đầu vào, nó còn phụ thuộc vào giá trị đầu vào cụ
thể
• Có những trường hợp thuật toán sẽ chạy nhanh hơn
bình thường, và trường hợp chạy chậm hơn
• Thời gian thực hiện gồm: tốt nhất, tồi nhất và trung bình
• VD. Đi từ DHBKHN tới hồ Hoàn Kiếm
• Nếu không tắc đường và không gặp đèn đỏ thì mất 3’
• Nếu gặp đèn đỏ và không tắc đường mất tầm 7’
• Nếu tắc đường thì 1-2h (VD. Giao thừa)
Giới hạn về phần mềm
• O-lớn chia thời gian thực hiện thành các cấp
độ
• O(1): lớp bài toán với thời gian thực hiện cố định
(hằng số). VD. lệnh gán giá trị
• O(logn): lớp bài toán thời gian logarithm.
• O(n): lớp thời gian tuyến tính. VD. tìm giá trị lớn
nhất trong dãy
• O(nlogn): Lớp thời gian siêu tuyến tính
• O(n2): lớp thời gian bậc 2
• O(n3): lớp thời gian bậc 3
•…
• O(n!)
Giới hạn về phần mềm
Giới hạn về phần mềm

You might also like