1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI TẬP KẾT THÚC HỌC PHẦN học phần Logic ứng dụng trong kinh doanh

14 767 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 0,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Chủ đề 3.5: Tìm hiểu thuật toán Luhn trong việc kiểm tra tính hợp lệ của các chữ số trên thẻ tín dụng.. Đây là một công thức tổng kiểm đơn giản được sử dụng để xác thực nhiều loại số n

Trang 1

TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP HCM

KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ

BÀI TẬP KẾT THÚC HỌC PHẦN

Tên học phần: Logic ứng dụng trong kinh doanh

Họ và tên sinh viên: Đặng Nguyễn Thanh Thảo

MSSV: 030237210169

Mã lớp học phần: ITS723_211_D03

Giảng viên hướng dẫn: Nguyễn Minh Tuấn

Trang 2

TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP HỒ CHÍ MINH

BÀI THI KẾT THÚC HỌC PHẦN

Môn thi: LOGIC ỨNG DỤNG TRONG KINH DOANH

Họ và tên sinh viên: Đặng Nguyễn Thanh Thảo

THÔNG TIN BÀI THI

Bài thi có: (bằng số): 14 trang

(bằng chữ): mười bốn trang

YÊU CẦU

Bài tập 1 Sơ đồ của một bảo tàng tranh được cho bởi hình như sau:

(1) Vẽ đồ thị thể hiện mỗi phòng là 1 đỉnh, và nếu 2 phòng có cửa thông với nhau thì sẽ có cạnh nối giữa chúng

(2) Tìm số bậc tại mỗi đỉnh

(3) Đồ thị trên có đường Euler hay không? Nếu có hãy chỉ ra ít nhất một đường Euler

(4) Đồ thị trên có đường Hamilton hay không? Nếu có hãy chỉ ra ít nhất một đường

Hamilton

Bài tập 2 (Bài toán xác định lỗi dựa vào logic) Một kỹ sư nghi ngờ 3 bộ xử lý A, B, C

trong hệ thống có thể không hoạt động Bằng cách thử nghiệm, anh ta xác định được rằng:

 Bộ xử lý A báo cáo rằng B không hoạt động và C hoạt động

 Bộ xử lý B báo cáo rằng A hoạt động khi và chỉ khi B hoạt động

 Bộ xử lý C báo cáo rằng ít nhất một trong hai bộ xử lý còn lại không hoạt động

Hãy giúp anh kỹ sư bằng cách sử dụng các kiến thức về logic mệnh đề:

Trang 3

(1) Biểu diễn các báo cáo trên dưới dạng mệnh đề phức hợp, với

a = ``A hoạt động''

b = ``B hoạt động''

c = ``C hoạt động''

(2) Lập bảng giá trị logic như sau:

xử lý A

Báo cáo của bộ

xử lý B

Báo cáo của bộ

xử lý C

(3) Giả sử rằng tất cả các báo cáo đều đúng, hãy xác định bộ xử lý nào hoạt động/ không hoạt động?

(4) Giả sử rằng tất cả các bộ xử lý đều hoạt động, hãy xác định báo cáo nào là đúng/ sai? (5) Giả sử rằng tất cả báo cáo chỉ đúng khi và chỉ khi bộ xử lý đó hoạt động, hãy xác định

bộ xử lý nào hoạt động/ không hoạt động?

Bài tập 3 (Tự chọn) Sinh viên chọn một trong các chủ đề trong danh sách dưới đây

Yêu cầu: sinh viên cần trình bày một cách hoàn chỉnh, gồm có các phần: lịch sử ra đời, người phát minh, công thức tính toán, ví dụ cụ thể, và các ứng dụng của nó

- Chủ đề 3.1: Tìm hiểu về mã Hamming code (7,4) và ứng dụng của nó

- Chủ đề 3.2: Tìm hiểu về Hashing functions và ứng dụng của nó

- Chủ đề 3.3: Tìm hiểu về mã RSA và ứng dụng của nó

- Chủ đề 3.4: Tìm hiểu về mã QR và ứng dụng của nó

- Chủ đề 3.5: Tìm hiểu thuật toán Luhn trong việc kiểm tra tính hợp lệ của các chữ số trên thẻ tín dụng

BÀI LÀM

Bài tập 1 Sơ đồ của một bảo tàng tranh được cho bởi hình như sau:

Trang 4

(1) Vẽ đồ thị thể hiện mỗi phòng là 1 đỉnh, và nếu 2 phòng có cửa thông với nhau thì sẽ có cạnh nối giữa chúng

F

(2) Tìm số bậc tại mỗi đỉnh

- Đỉnh F của đồ thị có bậc là 2

(3) Đồ thị trên có đường Euler hay không? Nếu có hãy chỉ ra ít nhất một đường Euler

- Đồ thị trên có đường Euler

- Một số đường Euler là:

(4) Đồ thị trên có đường Hamilton hay không? Nếu có hãy chỉ ra ít nhất một đường

Hamilton

Trang 5

- Đồ thị trên không có đường Hamilton

Bài tập 2 (Bài toán xác định lỗi dựa vào logic) Một kỹ sư nghi ngờ 3 bộ xử lý A, B, C

trong hệ thống có thể không hoạt động Bằng cách thử nghiệm, anh ta xác định được rằng:

 Bộ xử lý A báo cáo rằng B không hoạt động và C hoạt động

 Bộ xử lý B báo cáo rằng A hoạt động khi và chỉ khi B hoạt động

 Bộ xử lý C báo cáo rằng ít nhất một trong hai bộ xử lý còn lại không hoạt động

Hãy giúp anh kỹ sư bằng cách sử dụng các kiến thức về logic mệnh đề:

(6) Biểu diễn các báo cáo trên dưới dạng mệnh đề phức hợp, với

a = ``A hoạt động''

b = ``B hoạt động''

c = ``C hoạt động''

- Bộ xử lý A báo cáo rằng B không hoạt động và C hoạt động: ¬ b ⋀ c

- Bộ xử lý B báo cáo rằng A hoạt động khi và chỉ khi B hoạt động: a ↔ b

- Bộ xử lý C báo cáo rằng ít nhất một trong hai bộ xử lý còn lại không hoạt động: ¬ (a ⋀ b) (2) Lập bảng giá trị logic:

xử lý A: ¬ b ⋀ c

Báo cáo của bộ

xử lý B: a ↔ b

Báo cáo của bộ

xử lý C:

¬ (a ⋀ b)

(3) Giả sử rằng tất cả các báo cáo đều đúng, hãy xác định bộ xử lý nào hoạt động/ không hoạt động?

- Vì tất cả báo cáo đều đúng nên ta sẽ chọn những hàng có giá trị T với tất cả báo cáo

xử lý A: ¬ b ⋀

c

Báo cáo của bộ

xử lý B: a ↔ b

Báo cáo của bộ

xử lý C:

¬ (a ⋀ b)

Trang 6

2 T T F F T F

- Ta thấy chỉ có hàng số 7 thỏa mãn giả thiết “tất cả các báo cáo đều đúng”

=> Bộ xử lí A và B không hoạt động, bộ xử lí C hoạt động

(4) Giả sử rằng tất cả các bộ xử lý đều hoạt động, hãy xác định báo cáo nào là đúng/ sai?

- Ta có giả thiết “tất cả các bộ xử lý đều hoạt động” nên ta sẽ chọn những hàng có giá trị T ở

cả ba cột a, b, c

xử lý A:

¬ b ⋀ c

Báo cáo của bộ

xử lý B:

a ↔ b

Báo cáo của bộ

xử lý C: ¬ (a ⋀ b)

- Ta thấy chỉ có hàng số 1 thỏa mãn yêu cầu đề bài

=> Xác định được báo cáo của bộ xử lí A và C là sai; báo cáo của bộ xử lí B là đúng

(5) Giả sử rằng tất cả báo cáo chỉ đúng khi và chỉ khi bộ xử lý đó hoạt động, hãy xác định

bộ xử lý nào hoạt động/ không hoạt động?

- Vì ta có “tất cả báo cáo chỉ đúng khi và chỉ khi bộ xử lý đó hoạt động” nên ta sẽ chọn những hàng có cùng giá trị T/F ở 2 cột tương ứng như a và báo cáo của A; b và báo cáo của B; c và báo cáo của C

xử lý A: ¬ b ⋀

Báo cáo của bộ

xử lý B: a ↔ b

Báo cáo của bộ

xử lý C:

Trang 7

c ¬ (a ⋀ b)

- Ta thấy chỉ có hàng số 3 làm cho các báo cáo phù hợp với nhau và đúng giả thiết “tất cả báo cáo chỉ đúng khi và chỉ khi bộ xử lý đó hoạt động”

=> Xác định được bộ xử lí A và C hoạt động, bộ xử lí B không hoạt động

Bài tập 3

- Chủ đề 3.5: Tìm hiểu thuật toán Luhn trong việc kiểm tra tính hợp lệ của các chữ số trên thẻ tín dụng

- Yêu cầu: sinh viên cần trình bày một cách hoàn chỉnh, gồm có các phần: lịch sử ra đời, người phát minh, công thức tính toán, ví dụ cụ thể, và các ứng dụng của nó

Bài làm

Làm thế nào để chúng ta có thể xác thực các chữ số trên thẻ dụng hay còn gọi là số thẻ tín dụng là đúng hay không ?

Vì dãy số trên thẻ tín dụng rất dài bao gồm 16 con số nên chúng ta rất dễ mắc lỗi khi nhập

dữ liệu, thực hiện các thanh toán trực tuyến chẳng hạn như mua vé xem phim trực tuyến vậy Để ngăn chặn những sai sót đó xảy ra, các công ty, tổ chức đã sử dụng một thuật toán kiểm soát lỗi nổi tiếng được gọi là Thuật toán Luhn Vậy Thuật toán Luhn là gì ?

1 Định nghĩa

- Thuật toán Luhn (công thức Luhn), cũng được biết đến là thuật toán "modulus 10" hay

"mod 10", và được đặt theo tên người sáng tạo ra nó là nhà khoa học của IBM Hans Peter Luhn Đây là một công thức tổng kiểm đơn giản được sử dụng để xác thực nhiều loại số nhận dạng, chẳng hạn như số thẻ tín dụng, IMEI, National Provider Identifier tại Mỹ, mã Social Insurance Numbers tại Canada, Số ID tại Israel, Nam Phi, Số an sinh xã hội Hy Lạp (ΑΜΚΑ), các mã khảo sát xuất hiện trên biên lai và trong bộ phận nhận đặt hàng, sản xuất, lập hóa đơn, vận chuyển bằng các mã có nhiều chữ số

- Một trong những khái niệm trọng tâm của Thuật toán Luhn là việc sử dụng cái gọi là

“check digit” (số kiểm tra) Check digit là chữ số nằm ở vị trí cuối cùng của một dãy số và

Trang 8

ta dựa vào đó để kiểm tra xem toàn bộ dãy số đó có chính xác hay không bằng Thuật toán Luhn

- Thuật toán Luhn thuộc phạm vi công cộng nên bất kỳ ai cũng có thể sử dụng nó Hầu hết các thẻ tín dụng và nhiều số nhận dạng của chính phủ sử dụng thuật toán như một phương pháp đơn giản để phân biệt các số hợp lệ với các số bị nhập sai hoặc không chính xác Nó được thiết kế để bảo vệ khỏi các lỗi ngẫu nhiên, không phải các cuộc tấn công ác ý

- Các hoạt động của thuật toán dựa trên lý thuyết số học mô-đun, một phương pháp toán học được phát triển bởi Carl Friedrich Gauss vào đầu thế kỷ 19 Mặc dù các hoạt động chi tiết của thuật toán Luhn khá phức tạp nhưng nó vẫn được được biết đến bởi tính năng cho phép máy tính nhanh chóng đánh giá xem số thẻ tín dụng mà khách hàng cung cấp có chính xác hay không

2 Lịch sử ra đời

- Thuật toán Luhn là phát minh của một nhà Khoa học Máy tính người Đức tên là Hans Peter Luhn vào năm 1954 khi đang làm việc với tư cách là một nhà nghiên cứu tại IBM Cụ thể hơn nó được mô tả trong bằng sáng chế tại Mỹ số 2,950,048, nộp vào ngày 6 tháng 1 năm 1954 và được cấp vào ngày 23 tháng 8 năm 1960

- Ban đầu, Thuật toán Luhn được phát triển bên trong một thiết bị cơ học - hand computer, tạm dich là máy vi tính cầm tay dùng để tính toán check digit (số kiểm tra) hoặc để xác minh dãy số đã có sẵn bằng check digit

- Mục đích chính của phát minh này là cung cấp một máy tính đơn giản, rẻ tiền, không cần phải cài đặt phần mềm khác để tính toán các chữ số check digit và để xác thực độ chính xác của một dãy số bất kì

- Một mục đích khác nữa là cung cấp thiết bị tính toán một cách nhanh chóng và đơn giản

để xác thực các loại mã số nhận dạng

3 Người phát minh

- Hans Peter Luhn (1896 - 1964) là nhà nghiên cứu trong lĩnh vực khoa học máy tính và

Luhn đang được phổ biến rộng rãi ngày nay, ngoài ra ông đã tạo ra vô số sản phẩm trí tuệ khác như chỉ mục KWIC (Key Word In Context) và SDI (phổ biến thông tin có chọn lọc) Các phát minh của ông được ứng dụng trong nhiều lĩnh vực khác nhau như khoa học máy tính, công nghiệp dệt may, ngôn ngữ học và khoa học thông tin Hans Peter Luhn cũng là chủ nhân của hơn 80 bằng sáng chế

(*) IBM, viết tắt của International Business Machines (tên riêng “Big Blue”), là một tập đoàn công nghệ máy tính đa quốc gia có trụ sở tại Armonk, New York, Mỹ IBM là công sản xuất máy tính hàng đầu thế giới Nhân viên của IBM đã giành được 5 giải Nobel, 5 giải thưởng Turing - Giải thưởng Nobel của giới Công nghệ thông tin, 5 huy chương công nghệ quốc gia

Trang 9

- Hans Peter Luhn có kinh nghiệm trong nhiều lĩnh vực khác nhau: in ấn, dệt may, khoa học,… Quyết định bước vào lĩnh vực dệt may đã đưa ông đến Hoa Kỳ, nơi ông đã phát minh ra máy đo đếm chỉ (Lunometer) và hiện nay vẫn được bán trên thị trường Năm

1941, ông gia nhập IBM với tư cách là kỹ sư nghiên cứu cao cấp và nhanh chóng trở thành giám đốc bộ phận nghiên cứu truy xuất thông tin (IR)

- Ông dành nhiều thời gian cho các vấn đề về truy xuất và lưu trữ thông tin và là người tiên phong trong việc sử dụng thiết bị xử lý dữ liệu để giải quyết những vấn đề này, tìm ra nhiều

kỹ thuật cơ bản phổ biến trong khoa học thông tin ngày nay Các kỹ thuật này bao gồm full-text processing; hash codes; KWIC; auto-indexing; automatic abstracting và khái niệm

về SDI… Điều đáng ngạc nhiên là tên tuổi và những đóng góp của ông trong việc xử lý thông tin phần lớn bị lãng quên

- Đa số các phát minh của ông như thuật toán Luhn, hash codes… đều được ứng dụng phổ biến và giúp ích rất nhiều trong cuộc sống con người, cho phép chúng ta thực hiện công việc một cách nhanh chóng và thuận tiện hơn

4 Cơ chế hoạt động và công thức tính toán

- Đối với thẻ tín dụng, check digit là một chữ số duy nhất được ghi ở cuối mã số thẻ tín dụng Check digit được tự động xác định bởi Thuật toán Luhn, dựa trên các số đứng trước trong dãy số Khi người dùng nhập số thẻ tín dụng của họ để hoàn tất giao dịch, phần mềm

xử lý thanh toán có thể sử dụng Thuật toán Luhn để phát hiện xem số được chỉ định có chính xác hay không, một phần dựa trên check digit của nó

- Ý tưởng của thuật toán Luhn rất đơn giản: Cho trước một số thẻ tín dụng, một chữ số phụ được tạo ra bởi sự kết hợp toán học của các chữ số ban đầu Chữ số mới này thường được gọi là check digit, sau đó nó sẽ được thêm vào số tài khoản ban đầu Khi toàn bộ số được nhập vào máy, máy sẽ sử dụng tất cả trừ chữ số cuối cùng để tính toán số kiểm tra phải là gì

và sau đó so sánh nó với số kiểm tra thực sự là một phần của dãy số Nếu đúng thì mã số là hợp lệ, nếu không thuật toán sẽ từ chối mã số đó và thông báo đã xảy ra lỗi đầu vào Nhưng Luhn nhận ra chỉ đơn giản cộng các chữ số của số với nhau và sau đó biến check digit thành

số cần thêm vào tổng này để tạo thành bội số của 10 sẽ mắc các lỗi đơn lẻ như việc chuyển

vị của các chữ số: ví dụ, 34 được nhập là 43 Để bẫy lỗi chuyển vị, phải có một ảnh hưởng khác đến tổng của việc có các số ở các vị trí khác nhau Nếu chúng ta bắt đầu với chữ số ngoài cùng bên phải của dãy số đó và nhân xen kẽ từng chữ số với 2 Nếu kết quả của phép nhân này là một số có hai chữ số thì ta cộng các chữ số lại với nhau để được kết quả có một chữ số, vì máy của ông ấy chỉ có thể giải với các chữ số đơn lẻ Ví dụ: nếu chữ số là 5, nhân đôi sẽ tạo ra 10 và kết quả sau đó sẽ là 1 + 0 = 1 Sau đó ta lấy tổng của các số vừa có và các

số không nhân 2 ban đầu, check digit là chữ số cần thiết để làm cho tổng này trở thành bội

số của 10 Chữ số này sẽ được thêm vào mã số ban đầu và số mới này trở thành số tài khoản

có hệ thống kiểm tra tích hợp riêng

- Bài toán tìm check digit thường được áp dụng theo công thức:

c = (10 − (s mod 10) mod 10)

Trang 10

Trong đó: c là check digit (số kiểm tra) cần tìm

s là kết quả tổng kiểm tra

mod 10 là phép chia cho 10 và lấy phần dư

- Để chứng minh một mã số là hợp lệ ta có thể thực hiện như sau:

thực hiện xen kẽ 1 chữ số nhân đôi, 1 chữ số giữ nguyên hay nói đơn giản hơn là ta nhân đôi các chữ số nằm ở vị trí chẵn (2, 4, 6,…) theo thứ tự từ phải qua trái cho đến hết dãy số Trong đó chữ số đầu tiên được gọi là check digit

thì ta cộng các chữ số của tích đó lại với nhau (ví dụ: 12: 1 + 2 = 3, 15: 1 + 5 = 6),

để tạo thành số có một chữ số

Ta có: 8 + 2 + 2 + 7 + 8 + 9 +4 + 6 + 6 + 2 + 5 + 0 + 1 + 6 + 9 + 5 = 80

Luhn mã số đó hợp lệ; ngược lại nó không hợp lệ

Vì 80 mod 10 = 0 nên mã số tín dụng có thể hợp lệ

- Vì sao chúng ta chỉ khẳng định được là “có thể hợp lệ” mà không phải là “hợp lệ”? Vì Thuật toán Luhn vẫn còn một số khuyết điểm nhỏ khiến nó có thể xảy ra sai sót

số Trường hợp ngoại lệ đó là cặp số 09 và 90: bất kỳ số nào có chứa số 0 được thay

Trang 11

thế bởi một số 9 và một số 9 được thay thế bởi một số 0 sẽ cho ra một kết quả giống hệt nhau

Ví dụ: dãy số 0123456789 và 9123456780 cả hai đều có cùng một tổng giá trị

Ví dụ: 001122 và 001155 có cùng một tổng kiểm tra

Ví dụ: 000123 và 123 có cùng một tổng kiểm tra

- Dù vậy, thuật toán Luhn vẫn được chấp nhận và sử dụng rộng rãi vì nó có thể áp dụng cho dãy số có độ dài bất kì, và đặc biệt là trong lĩnh vực tài chính nó giúp tăng tốc các quy trình thanh toán điện tử và làm cho chúng trở nên tương đối dễ dàng hơn

5 Ví dụ cụ thể

Ví dụ 1: Kiểm tra mã số tín dụng sau đây có chính xác hay không: 4108 5231 0602 2711

Ta có bảng giá trị như sau:

Tổng là: 8 + 1 + 0 + 8 + 1 + 2 + 6 + 6 + 1 + 0 + 6 + 0 + 2 + 4 + 7 + 2 + 1 = 55

mà 55 mod 10 = 5 ≠ 0

Vậy mã số tín dụng 4108 5231 0602 2711 là không hợp lệ, có lỗi đầu vào

Ví dụ 2: Kiểm tra mã số tín dụng sau đây có chính xác hay không: 4011 9962 6104 2011 bảng giá trị như sau:

Ta có tổng của dãy số mới không tính check digit là:

s = 8 + 0 + 2 + 1 + 9 + 9 + 3 + 2 + 3 + 1 + 0 + 4 + 4 + 0 + 2 = 49

Áp dụng công thức để tìm check digit: c = 10 − (s mod 10) mod 10

= 10 – (49 mod 10) mod 10 = 10 – 9 mod 10 = 1 Vậy check digit tìm được là 1 giống với check digit mà mã số cho sẵn nên mã số tín dụng

4211 9962 6104 2011 có thể hợp lệ

Ngày đăng: 02/09/2022, 07:19

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w