CODE: 2 - Codes and Combinations
Phần 1: https://spiderum.com/bai-dang/CODE-1-Ban-than-5wf Mã Morse được phát minh bởi Samuel Finley Breese Morse (1791-1872),...
Phần 1:
Mã Morse được phát minh bởi Samuel Finley Breese Morse (1791-1872), người mà sau này ta sẽ đặc biệt gặp nhiều hơn trong khuôn khổ cuốn sách. Mã Morse ra đời cùng lúc với sự ra đời của máy điện báo, tí nữa chúng ta sẽ nói kỹ hơn về phát minh này. Cũng như mã Morse đã cho ta một chỉ dẫn tốt về bản chất của mã, máy điện báo cũng là một ví dụ giới thiệu hay cho phần cứng máy tính.
Đa phần thì mọi người cho rằng gửi mã Morse dễ hơn là nhận. Thậm chí nếu bạn có không nhớ mã đi nữa, thì đơn giản bạn chỉ cần dùng bảng này, đã được xếp rất tiện theo thứ tự bảng chữ cái:
Nhận và dịch mã Morse thành chữ khó hơn và tốn thời gian đáng kể so với gửi bởi bạn phải làm ngược lại để tìm ra chữ cái ứng với chuỗi mã cụ thể. Ví dụ, nếu bạn nhận gạch-chấm-gạch-gạch, bạn phải rà từng chữ từng chữ một trên bảng để mà tìm ra chữ Y cho mã đó.
Vấn đề ở chỗ ta có một bảng giúp dịch theo kiểu:
Chữ cái theo thứ tự trong bảng chữ cái → Chấm và gạch của mã Morse
Nhưng ta lại không có bảng giúp làm ngược lại:
Chấm và gạch của mã Morse → Chữ cái theo thứ tự trong bảng chữ cái
Khi mới bắt đầu học mã Morse thì một bảng như thế này chắc chắn sẽ rất tiện lợi. Tuy nhiên việc tạo ra nó lại không được rõ ràng cho lắm. Làm sao có thể xếp những chấm và gạch theo thứ tự bảng chữ cái.
Vậy nên hãy quên cái thứ tự đó đi. Có lẽ một cách tốt hơn để tổ chức đám mã này là nhóm chúng dựa theo số lượng chấm và gạch. Ví dụ, một chuỗi mã Morse chứa một chấm hoặc một gạch chỉ có thể biểu thị cho hai chữ cái, là E và T:
Một sự kết hợp chuẩn xác hai chấm hoặc hai gạch cho ta bốn chữ nữa - I, A, N và M:
Một tổ hợp của ba chấm hoặc ngang cho ta thêm tám chữ:
Và cuối cùng (nếu như ta muốn dừng thử nghiệm này trước khi chơi với số và dấu), chuỗi bốn chấm hay gạch cho ta thêm 16 ký tự:
Cùng với nhau, bốn bảng này có 2 cộng 4 cộng 8 cộng 16 mã cho tổng cộng 30 ký tự, 4 chữ thêm vào là dể dùng cho 26 chữ cái trong bảng chữ cái Latin. Vì thế, bạn thấy có 4 mã trong bảng cuối là những chữ cái có dấu.
Với bốn bảng này sẽ giúp bạn dễ dàng hơn cho việc dịch khi có ai gửi mã Morse tới. Sau khi nhận một mã cho một chữ cái cụ thể, bạn biết có bao nhiêu chấm và gạch trong đó để ít nhất bạn có thể tới đúng bảng mà tìm. Mỗi bảng đều được tổ chức theo kiểu mã toàn chấm ở trên bên trái và mã toàn gạch ở dưới bên phải.
Bạn có thấy một mẫu hình kích cỡ của bốn bảng? Để ý mỗi bảng đều có nhiều hơn hai lần số mã của bảng trước nó. Có nghĩa là: Mỗi bảng có tất cả các mã ở bảng trước thêm vào sau một dấu chấm hoặc gạch.
Ta có thể tóm tắt khuynh hướng thú vị này như sau:
Mỗi bảng có nhiều hơn hai lần số mã Morse có trong bảng trước nó, nên nếu bảng đầu có 2 mã thì bảng thứ hai có 2 x 2 mã, và bảng thứ ba có 2 x 2 x 2 mã. Cách khác để mô phỏng là:
Tất nhiên, khi một số nhân với chính nó, ta có thể dùng số mũ để biểu thị lũy thừa. Ví dụ, 2 x 2 x 2 x 2 có thể viết lại là 2^4 (2 lũy thừa 4). Các số 2, 4, 8 và 16 đều là lũy thừa của 2 bởi bạn có thể tính ra nó bằng cách nhân 2 với chính nó. Nên bảng tóm tắt có thể thành:
Bảng này trở nên rất đơn giản. Số lượng mã đơn giản chỉ là 2 lũy thừa với số chấm và gạch. Có thể thu gọn bảng trên thành công thức đơn giản:
số lượng mã = 2^(số lượng chấm và gạch)
Lũy thừa 2 sẽ tạo ra rất nhiều mã, ta sẽ gặp một ví dụ khác ở chương tới.
Để làm cho quá trình giãi mã Morse dễ dàng hơn, ta có thể sẽ muốn vẽ cái gì đó đại loại như bảng dạng cây được mô phỏng dưới đây.
Bảng này thể hiện các chữ cái tương ứng với mỗi trình tự liên tiếp cụ thể của các chấm và gạch. Để giải mã trình tự nào đó, hãy cứ theo hướng mũi tên từ trái qua phải. Giả sử bạn muốn biết chữ cái nào ứng với mã chấm-gạch-chấm. Bạn bắt đầu từ bên trái và chọn dấu chấm; sau đó tiếp tục sang phải theo đường mũi tên rồi chọn dấu gạch rồi một dấu chấm nữa. Chữ cái cần tìm là R, đứng kề bên dấu chấm cuối cùng.
Nếu bạn nghĩ thế, lúc đầu có lẽ xây dựng một bảng như vậy là cần thiết cho việc xác định mã Morse. Trước tiên, nó đảm bảo rằng bạn không mắc phải những lỗi ngu ngơ như dùng một mã cho hai chữ cái khác nhau! Thứ hai, bạn có thể dùng một cách đảm bảo tất cả các mã có nghĩa mà không tạo ra các chuỗi chấm gạch không cần thiết.
Nguy cơ từ việc mở rộng bảng này đến từ giới hạn các trang in, bạn có thể tiếp tục nó với những mã có năm chấm hay gạch hoặc nhiều hơn. Một trình tự chuẩn xác năm chấm và gạch cho ta thêm 32 mã (2 x 2 x 2 x 2 x 2, hay 25). Thường thì nhiêu đó là đã đủ cho 10 chữ số và 16 ký tự dấu được xác định trong mã Morse, và thật ra các chữ số được mã hóa với 5 chấm và gạch. Tuy nhiên còn nhiều chuỗi năm chấm và gạch khác đại diện cho các chữ cái có dấu hơn là các dấu câu.
Muốn có thêm mấy dấu chấm câu thì hệ thống phải được mở rộng ra sáu chấm và ngang, khi đó ta có thêm 64 (2 x 2 x 2 x 2 x 2 x 2 hay 2^6) mã để được một tổng lên đến 2 + 4 + 8 + 16 + 32 + 64 hay 126 ký tự. Khi đó sẽ quá tải cho mã Morse, sẽ có thêm nhiều mã "chưa xác định (undefined)" dài thòng. Từ chưa xác định được dùng ở đây để ám chỉ một mã không có nghĩa (không đại diện cho ký tự nào hết). Nếu bạn đang nhận mã Morse mà có một mã chưa xác định trong đó thì khá chắc chắn là ai đó đã mắc lỗi rồi.
Bời vì ta đủ thông minh để triển khai công thức nhỏ này,
số lượng mã = 2^(số lượng chấm và gạch)
ta có thể tiếp tục tính ra có bao nhiêu mã nhận được khi dùng những chuỗi chấm gạch dài hơn:
Thật may là ta không phải viết ra hết tất cả các mã có thể có để xác định số lượng bao nhiêu. Việc ta cần làm chỉ là cứ tiếp tục nhân 2 với chính nó miết thôi.
Mã Morse được gọi là mã nhị phân (nghĩa đen là hai lần hai - two by two) vì những phần tử của mã chỉ gồm hai thứ - một chấm và một gạch. Cũng tương tự như đồng xu, khi đáp đất cũng chỉ hiện mặt sấp hoặc ngửa. Các vật thể nhị phân (như đồng xu) và mã nhị phân (như mã Morse) luôn được mô tả bằng lũy thừa hai.
Những gì ta đang làm bằng việc phân tích mã nhị phân là một thử nghiệm đơn giản trong nhánh toán học được biết đến là tổ hợp (combinatorics) hay phân tích tổ hợp (combinatorial analysis). Lệ thường, phân tích tổ hợp thường được dùng nhiều trong lĩnh vực xác suất và thống kê vì nó liên quan tới việc xác định số cách mà một vật, như đồng xu hay xúc xắc chẳng hạn, có thể xảy ra. Nhưng cũng nhờ nó mà ta sẽ hiểu được cách mã được đặt cùng nhau cũng như tách rời ra.
Những từ tiếng anh trong ngoặc là từ trong sách gốc, thiên về chuyên ngành nhiều hơn, mình có tra thử nhưng sợ không được chính xác lắm nên có thêm vào.
Dịch từ CODE: Chapter 2.
Charles Petzold.
Charles Petzold.
Phần 3:
Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
- Hot nhất
- Mới nhất