Mã Morse và hiệu quả ký tự - Tại sao "E" chỉ cần một chấm còn "Q" cần bốn ký hiệu
Năm 1838, Samuel Morse bước vào một xưởng in ở New York và bắt đầu đếm nội dung trong các hộp chữ. Ông muốn tìm hiểu chữ cái nào có nhiều khuôn chữ nhất - nói cách khác, chữ cái nào được sử dụng thường xuyên nhất trong tiếng Anh. Cuộc khảo sát tỉ mỉ này đã sinh ra ý tưởng "tối ưu hóa độ dài mã dựa trên tần suất" - tiền thân của lý thuyết thông tin. Gán mã ngắn cho ký tự thường dùng và mã dài cho ký tự hiếm dùng. Nguyên tắc này được Claude Shannon hình thức hóa toán học khoảng 100 năm sau khi ông thiết lập lý thuyết thông tin, và tiếp tục phát triển thành mã hóa Huffman.
Thiết kế mã sinh ra từ hộp chữ in
Lượng khuôn chữ Morse quan sát tại xưởng in phản ánh trực tiếp tần suất xuất hiện của chữ cái trong tiếng Anh. Hộp chữ có nhiều khuôn "E" nhất, trong khi "Z" và "Q" chỉ có rất ít. Dựa trên quan sát này, Morse gán mã ngắn cho chữ cái tần suất cao và mã dài cho chữ cái tần suất thấp.
| Chữ cái | Mã Morse | Độ dài mã (chấm và gạch) | Tần suất trong tiếng Anh |
|---|---|---|---|
| E | · | 1 | Khoảng 12,7% |
| T | − | 1 | Khoảng 9,1% |
| A | ·− | 2 | Khoảng 8,2% |
| I | ·· | 2 | Khoảng 7,0% |
| N | −· | 2 | Khoảng 6,7% |
| S | ··· | 3 | Khoảng 6,3% |
| H | ···· | 4 | Khoảng 6,1% |
| Q | −−·− | 4 | Khoảng 0,1% |
| Z | −−·· | 4 | Khoảng 0,07% |
"E" và "T" mỗi chữ chỉ cần 1 ký hiệu (một chấm, một gạch). Việc làm cho hai chữ cái xuất hiện thường xuyên nhất trong tiếng Anh trở thành ngắn nhất đã giảm đáng kể thời gian truyền điện tín. Trong khi đó, "Q" và "Z" cần 4 ký hiệu, nhưng vì tần suất xuất hiện dưới 0,1% nên hầu như không ảnh hưởng đến hiệu quả truyền tổng thể.
ETAOIN SHRDLU - Bảng xếp hạng tần suất chữ cái tiếng Anh
Sắp xếp chữ cái tiếng Anh theo tần suất cho ra "ETAOIN SHRDLU." Trình tự này đã được biết đến từ thời in letterpress và thậm chí được áp dụng cho bố cục bàn phím máy sắp chữ Linotype.
| Hạng | Chữ cái | Tần suất | Độ dài mã Morse | Tần suất x Độ dài mã |
|---|---|---|---|---|
| 1 | E | 12,70% | 1 | 0,127 |
| 2 | T | 9,06% | 1 | 0,091 |
| 3 | A | 8,17% | 2 | 0,163 |
| 4 | O | 7,51% | 3 | 0,225 |
| 5 | I | 6,97% | 2 | 0,139 |
| 6 | N | 6,75% | 2 | 0,135 |
| 7 | S | 6,33% | 3 | 0,190 |
| 8 | H | 6,09% | 4 | 0,244 |
| 9 | R | 5,99% | 3 | 0,180 |
| 10 | D | 4,25% | 3 | 0,128 |
Cột "Tần suất x Độ dài mã" cho thấy mỗi chữ cái đóng góp bao nhiêu vào tổng thời gian truyền. "E" có tần suất cao nhất nhưng đóng góp chỉ 0,127 vì độ dài mã là 1. Nếu "E" được gán 4 ký hiệu, giá trị này sẽ nhảy lên 0,508, tăng đáng kể tổng thời gian truyền.
Tuy nhiên, mã Morse không được tối ưu hóa hoàn hảo. "H" có tần suất xếp thứ 6 (6,09%) nhưng được gán 4 ký hiệu, dài hơn 3 ký hiệu của "R" xếp thứ 8 (5,99%). Điều này được cho là vì Morse không chỉ xem xét quan sát hộp chữ mà còn cân nhắc khả năng phân biệt bằng tai.
Tầm nhìn xa chia sẻ với mã hóa Huffman
Năm 1952, nghiên cứu sinh MIT David Huffman công bố thuật toán xây dựng mã có độ dài thay đổi tối ưu cho nén dữ liệu. Mã hóa Huffman về bản chất giống ý tưởng của Morse - gán chuỗi bit ngắn cho ký hiệu tần suất cao và chuỗi bit dài cho ký hiệu tần suất thấp.
| So sánh | Mã Morse (1838) | Mã hóa Huffman (1952) |
|---|---|---|
| Nguyên lý thiết kế | Mã ngắn cho chữ cái tần suất cao | Chuỗi bit ngắn cho ký hiệu tần suất cao |
| Tính tối ưu | Kinh nghiệm/trực giác (không tối ưu hoàn hảo) | Tối ưu toán học (như mã tiền tố) |
| Loại mã | 3 giá trị: chấm, gạch, khoảng cách | 2 giá trị: 0 và 1 |
| Cơ chế phân tách | Khoảng cách giữa ký tự/từ | Không cần phân tách (tính chất tiền tố) |
| Ứng dụng | Truyền thông điện tín | Nén dữ liệu (ZIP, JPEG, MP3, v.v.) |
Sự khác biệt quyết định nằm ở "tính chất tiền tố." Mã Huffman được thiết kế sao cho không mã nào là tiền tố của mã khác, cho phép giải mã duy nhất bằng cách đọc chuỗi bit từ đầu. Mã Morse sử dụng khoảng cách (im lặng) giữa các ký tự làm dấu phân tách - không có khoảng cách này, "····" có thể là "H," "I + I," hoặc "I + E + E." Xét rằng lý thuyết thông tin chưa tồn tại vào thời Morse, bản thân ý tưởng tối ưu hóa độ dài mã dựa trên tần suất đã là tầm nhìn xa đáng kinh ngạc.
Thiết kế mã Morse tiếng Nhật - Tại sao "イ" nhận được mã ngắn nhất
Mã Morse tiếng Nhật (Wabun Morse) được thiết lập khoảng năm 1855. Trong Wabun Morse, mỗi ký tự katakana được gán một mã. Tương tự phiên bản tiếng Anh, các ký tự tiếng Nhật thường dùng có xu hướng nhận mã ngắn hơn, nhưng không hoàn toàn theo thứ tự tần suất.
| Ký tự | Mã Wabun Morse | Độ dài mã | Ghi chú |
|---|---|---|---|
| イ | ·− | 2 | Thuộc nhóm ngắn nhất. Trợ từ "i" tần suất cao |
| ロ | ·−·− | 4 | Thứ 2 trong thứ tự iroha |
| ハ | −··· | 4 | Thường xuyên dùng làm trợ từ "wa" nhưng 4 ký hiệu |
| ニ | −·−· | 4 | Thứ 4 trong thứ tự iroha |
| ホ | −·· | 3 | Thứ 5 trong thứ tự iroha |
| ヘ | · | 1 | Ngắn nhất. Dùng làm trợ từ "e" |
| ト | ··−·· | 5 | Rất thường xuyên dùng làm trợ từ "to" nhưng 5 ký hiệu |
Phân bổ mã Wabun Morse không tuân theo thứ tự tần suất nghiêm ngặt như phiên bản tiếng Anh. "ヘ" ngắn nhất với 1 ký hiệu (một chấm), nhưng không nhất thiết là ký tự xuất hiện thường xuyên nhất trong văn bản tiếng Nhật. "ト" được sử dụng rất thường xuyên làm trợ từ nhưng được gán 5 ký hiệu. Thiết kế Wabun Morse được cho là phản ánh sự pha trộn giữa ảnh hưởng thứ tự iroha và cân nhắc về khả năng phân biệt bằng tai.
SOS - Tính hợp lý trong 9 ký hiệu
Đêm khuya ngày 14 tháng 4 năm 1912, nhân viên điện tín Titanic Jack Phillips liên tục phát tín hiệu "SOS." Mã Morse của SOS là "··· −−− ···" - tổng cộng 9 ký hiệu. Tín hiệu này được chấp nhận làm tín hiệu cấp cứu quốc tế năm 1906, nhưng lý do được chọn không phải vì nó viết tắt của "Save Our Souls."
Lý do thực sự SOS được chọn là sự rõ ràng của nó trong mã Morse. Cả "···" (S) và "−−−" (O) đều gồm các ký hiệu giống nhau lặp lại, khó nghe nhầm trong môi trường vô tuyến nhiều tạp âm. Hơn nữa, nhịp điệu đối xứng ba chấm, ba gạch, ba chấm khó bị nhầm lẫn với bất kỳ chuỗi ký tự nào khác.
Trong thảm họa Titanic, ban đầu tín hiệu cấp cứu cũ "CQD" (Come Quick, Danger) được sử dụng. Mã Morse của CQD là "−·−· −−·− −··" gồm 12 ký hiệu - nhiều hơn 3 ký hiệu so với 9 ký hiệu của SOS, kém hiệu quả hơn cho truyền khẩn cấp. Phillips chuyển sang SOS giữa chừng, và quyết định này được cho là đã đẩy nhanh việc thông báo đến tàu cứu hộ Carpathia.
Thời gian truyền trung bình mỗi ký tự
Tốc độ truyền mã Morse được đo bằng "WPM" (Words Per Minute - Từ mỗi phút). Tốc độ được định nghĩa bằng số lần có thể gửi từ tham chiếu chuẩn "PARIS" mỗi phút. "PARIS" được chọn làm từ tham chiếu vì độ dài mã Morse của nó xấp xỉ độ dài mã trung bình của văn bản tiếng Anh.
Mã Morse của "PARIS" là "·−−· ·− ·−· ·· ···" tổng cộng 50 đơn vị khi độ dài chấm bằng 1 đơn vị. Vậy 1 WPM = 50 đơn vị mỗi phút. Nhân viên điện tín lành nghề có thể truyền ở tốc độ 20-30 WPM, tương đương 1.000-1.500 đơn vị mỗi phút, hay khoảng 17-25 đơn vị mỗi giây.
So với truyền thông văn bản hiện đại, tốc độ truyền mã Morse cực kỳ chậm. Nhưng xét trình độ công nghệ thập niên 1840, việc có thể gửi tin nhắn thời gian thực đến nơi cách hàng trăm km đã là cách mạng. Như đã thảo luận trong bài viết giới hạn ký tự SMS, giới hạn 160 ký tự của SMS cũng phát sinh từ ràng buộc kỹ thuật, nhưng vào thời mã Morse, khái niệm "giới hạn ký tự" thậm chí chưa tồn tại - mỗi ký tự được gõ thủ công từng cái một.
Mối liên hệ tư tưởng với mã hóa độ dài thay đổi hiện đại
Triết lý thiết kế "mã ngắn cho ký tự tần suất cao" của mã Morse vẫn sống trong máy tính hiện đại. Ví dụ quen thuộc nhất là mã hóa UTF-8.
| Loại ký tự | Số byte UTF-8 | Ký tự ví dụ | Ý đồ thiết kế |
|---|---|---|---|
| Ký tự ASCII (chữ số) | 1 byte | A, B, 0, 1, @ | Ngắn nhất cho ký tự thường dùng nhất trong tiếng Anh |
| Latin mở rộng / Hy Lạp | 2 byte | e, n, a, b | Ký tự bổ sung cho ngôn ngữ châu Âu |
| Tiếng Nhật / Trung / Hàn | 3 byte | あ, 漢, 한 | Ký tự CJK 3 byte |
| Emoji / Ký tự đặc biệt | 4 byte | 😀, 🎉, 𠮷 | Ký tự mặt phẳng bổ sung |
UTF-8 biểu diễn ký tự ASCII (chữ số và ký hiệu) - được sử dụng thường xuyên nhất trên internet - bằng 1 byte, tăng số byte khi tần suất sử dụng giảm. Đây chính xác là cùng một tối ưu hóa mà Morse đã thực hiện trước hộp chữ. Như đã giải thích chi tiết trong sự khác biệt giữa số ký tự và số byte, "あ" là 3 byte trong UTF-8 trong khi "A" là 1 byte. Cả hai đều là 1 ký tự, nhưng kích thước dữ liệu khác nhau gấp 3 lần.
Hiểu kiến thức cơ bản về Unicode sẽ giúp nhìn sâu hơn vào triết lý thiết kế mã hóa độ dài thay đổi. Một lý do UTF-8 được hơn 98% website trên thế giới sử dụng là khả năng tương thích ngược - biểu diễn văn bản tiếng Anh bằng cùng 1 byte như ASCII. Nếu tất cả ký tự đều có độ dài cố định (ví dụ 4 byte), kích thước file văn bản tiếng Anh sẽ tăng gấp 4 lần.
Mã Morse cho số - Tại sao đều là 5 ký hiệu
Trong khi độ dài mã chữ cái dao động từ 1 đến 4 ký hiệu, mã Morse cho số (0-9) đều thống nhất 5 ký hiệu.
| Số | Mã Morse | Mẫu |
|---|---|---|
| 1 | ·−−−− | 1 chấm + 4 gạch |
| 2 | ··−−− | 2 chấm + 3 gạch |
| 3 | ···−− | 3 chấm + 2 gạch |
| 4 | ····− | 4 chấm + 1 gạch |
| 5 | ····· | 5 chấm |
| 6 | −···· | 1 gạch + 4 chấm |
| 7 | −−··· | 2 gạch + 3 chấm |
| 8 | −−−·· | 3 gạch + 2 chấm |
| 9 | −−−−· | 4 gạch + 1 chấm |
| 0 | −−−−− | 5 gạch |
Số đều là 5 ký hiệu vì các chữ số không có sự thiên lệch tần suất như chữ cái. Trong văn bản tiếng Anh, "E" xuất hiện 12,7% trong khi "Z" chỉ 0,07%, nhưng tần suất các chữ số 0-9 thay đổi lớn tùy theo ngữ cảnh. Số điện thoại gần như đồng đều, trong khi số tiền có nhiều "0" hơn. Không có cơ sở hợp lý để làm số cụ thể nào ngắn hơn, nên tất cả được thống nhất cùng độ dài.
Hơn nữa, mã số có tính quy luật đẹp. Từ 1 đến 5, chấm tăng dần từng cái cho đến khi 5 toàn chấm; từ 6 đến 0, gạch tăng dần từng cái cho đến khi 0 toàn gạch. Mẫu đối xứng này dễ nhớ, giảm thời gian đào tạo nhân viên điện tín.
Tính toán hiệu quả truyền mã Morse
Hãy đánh giá định lượng hiệu quả truyền mã Morse từ góc độ lý thuyết thông tin. Lượng thông tin (entropy) mỗi ký tự của văn bản tiếng Anh khoảng 4,7 bit. Trong khi đó, truyền văn bản tiếng Anh qua mã Morse cần độ dài mã trung bình khoảng 8,1 đơn vị thời gian mỗi ký tự (với độ dài chấm là 1 đơn vị).
Nếu Morse sử dụng phân bổ mã hoàn toàn ngẫu nhiên (bỏ qua tần suất), độ dài mã trung bình sẽ khoảng 10,2 đơn vị thời gian. Nghĩa là thiết kế dựa trên tần suất của Morse đã đạt được giảm khoảng 20% thời gian truyền so với phân bổ ngẫu nhiên.
Với mã hóa Huffman tối ưu lý thuyết, độ dài mã trung bình sẽ khoảng 7,6 đơn vị thời gian. 8,1 đơn vị thời gian của mã Morse chỉ cách giá trị tối ưu khoảng 7% - độ chính xác đáng kinh ngạc cho một thiết kế kinh nghiệm thế kỷ 19.
Ý nghĩa của việc đếm hiệu quả ký tự
Khoảng 190 năm sau thiết kế mã Morse, "hiệu quả ký tự" vẫn là vấn đề ở khắp nơi. Trong giới hạn ký tự X (trước đây là Twitter), một ký tự tiếng Nhật và một ký tự tiếng Anh được tính như cùng "1 ký tự," nhưng lượng thông tin khác nhau rất nhiều. Một chữ Hán tiếng Nhật nén ý nghĩa của vài từ tiếng Anh, nên tweet 140 ký tự tiếng Nhật truyền tải nhiều thông tin hơn tweet 140 ký tự tiếng Anh.
Khi Morse đếm ký tự trước hộp chữ, ông đang giải quyết vấn đề phổ quát "truyền tải thông tin hiệu quả." Vấn đề đó đã được kế thừa dưới các hình thức khác nhau bởi các nhà phát triển web hiện đại đau đầu với sự khác biệt giữa ký tự toàn chiều rộng và nửa chiều rộng, và bởi người dùng AI tạo sinh tối ưu hóa số ký tự prompt. Đằng sau hành động đếm ký tự luôn nằm bản chất của lý thuyết thông tin: "truyền tải tối đa thông tin với nguồn lực hạn chế."
Sách về lý thuyết thông tin và mã Morse có thể tìm thấy trên Amazon.