Mã tiền tố là gì

Xử lý tiền tố trong một tập các xâu là một trong những vấn đề thường được đề cập trong các bài toán xử lý xâu. Trong nhiều trường hợp, cấu trúc cây tiền tố (Trie) được coi là một giải pháp hiệu quả.

Bản chất của cấu trúc Trie là một cây có gốc. Bản thân gốc không chứa thông tin, nhưng mỗi cạnh nối 2 nút trên cây tương ứng với 1 ký tự; do đó đường đi từ nút gốc tới một nút bất kỳ trên cây này cho biết tập đang xét có chứa xâu tiền tố biểu diễn bởi tập các cạnh thể hiện đường đi từ nút gốc tới nút đang đề cập đến.

Mã tiền tố là gì

Ví dụ như với cây ở trên, đường đi từ nút 1 tới nút 7 đại diện cho xâu tiền tố “bg”, đường đi từ nút 1 đến nút 10 đại diện cho xâu tiền tố “acd”.

Ta nhận thấy, từ mỗi nút, sẽ chỉ có tối đa 1 cạnh tỏa tới một nút khác mà đem theo ký tự c bất kỳ. Nói cách khác, giả sử trên cây này ta muốn lưu thêm 1 xâu “bgh” vào, thì khi xuất phát từ nút 1, ta sẽ không vẽ thêm một cạnh mới chứa ký tự ‘b’ mà sử dụng cạnh chứa ký tự ‘b’ đã có tỏa ra từ nút 1, và đi tới nút 3. Tương tự, ta sử dụng tiếp cạnh 3-7 để tới nút 7, lưu ký tự ‘g’. Tới đây, từ nút 7 không có cạnh nào tỏa ra mà mang theo ký tự ‘h’, ta sẽ vẽ thêm cạnh này, và đích đến của nó sẽ là 1 nút mới (để việc đánh số thứ tự nút liền mạch, ta sẽ coi như nút mới có số thứ tự 11).

Mã tiền tố là gì

Trong một số trường hợp, ta sẽ nảy sinh tình huống là không thể biết được đâu là điểm kết thúc xâu. Ví dụ như với cây mới này, ta không thể biết được liệu có xâu “bg” trong tập hợp không, hay “bg” chỉ đơn giản là tiền tố của xâu “bgh” vừa thêm vào. Bởi vậy, mỗi nút có thêm 1 thuộc tính boolean nữa, cho biết nút tương ứng có phải điểm kết thúc của một xâu hay không.

Hiển nhiên, ở một bước bất kỳ nào, tất cả các nút lá có trên cây sẽ đều mang trạng thái có.

Có 3 thao tác chính có thể thực hiện với cây Trie:

  • Thêm một xâu S vào cây. Độ phức tạp là O(|S|).
  • Xóa một xâu S khỏi cây. Độ phức tạp cũng là O(|S|). Lưu ý rằng, khi xóa một xâu, để biết có thể loại bỏ cạnh nào và không loại bỏ cạnh nào (ở đây giả sử mọi xâu trong tập hợp đều đôi một khác nhau), ta cần phải biết các tiền tố của S có phải là các xâu đang có trong tập hợp không. Lúc này, thuộc tính boolean đề cập ở trên sẽ có giá trị trong việc theo dõi đặc tính này.
  • Kiểm tra xem một xâu S có tồn tại trong tập hợp dưới dạng một xâu hoàn chỉnh hoặc một tiền tố hay không. Độ phức tạp của phép kiểm tra này cũng chỉ là O(|S|), và việc dùng Trie đơn giản hơn so với cây nhị phân tìm kiếm (Binary Search Tree – BST) cân bằng rất nhiều (nếu không có thư viện sẵn có thì việc cài đặt BST và giữ nó ổn định vô cùng phức tạp).

Bài toán tham khảo: P176PROC – ROUND 6C – GOOD OR BAD? (SPOJ – PTIT)

Phương pháp: Đây là một bài toán mà phương pháp làm nó đúng như đề bài yêu cầu: kiểm tra lần lượt từng xâu, nếu có xâu không thỏa mãn thì ngừng ngay chương trình ở điểm đó, và in ra “thủ phạm”.

Với 10^5 xâu (độ dài xâu không quá 60 ký tự), việc kiểm tra tiền tố có thể dễ dàng được thực hiện bằng Trie, và thực tế có thể thực hiện ngay khi điền thêm thông tin của xâu mới vào cây Trie.

Nguyên tắc khi làm việc này sẽ là: ta đặt hai biến boolean, “newRoad” và “endString”, trước khi bắt đầu thực hiện điền xâu, đều khởi tạo là false.

  • “newRoad” sẽ trở thành “true” khi ở một điểm nào đó của xâu, ta không có đường đi cũ để dùng lại mà phải vẽ ra đường đi mới và tạo nút mới cho cây.
  • “endString” sẽ trở thành “true” khi ta đi qua bất kỳ nút nào đại diện cho điểm kết thúc của một xâu (trong trường hợp này là khi đi qua nút lá, vì nếu có một nút nào đó không phải lá lại là điểm kết thúc xâu thì hiển nhiên chương trình đã phải kết thúc từ trước đó!)

Sau mỗi quá trình, nếu (newRoad = true) và (endString = false) tức là xâu đang xét không phải là tiền tố của bất kỳ xâu nào, hoặc không có xâu nào đã điền trước đó là tiền tố của xâu đang xét, nên ta có thể tiếp tục bài toán.

Ngược lại, thì xâu đang xét sẽ là xâu đầu tiên vi phạm nguyên tắc đề bài. Lúc này ta in ra “BAD SET” cùng với xâu đó và kết thúc chương trình.

Độ phức tạp: O(K*N) (K là độ dài tối đa của xâu trong input, ở đây K <= 60).

Lời giải (của D.Bách): Ideone

#ThuyTrang_12A2

Đối với những người học tiếng Anh, phần cấu trúc từ ngữ, đặc biệt biến đổi từ ngữ do tiền tố và hậu tố trong tiếng Anh là một trở ngại khá lớn. Điểm ngữ pháp cơ bản này gây khó khăn cho nhiều người. Acet xin chia sẻ các bí quyết giúp bạn nắm bắt tiền tố và hậu tố trong tiếng Anh thật nhanh và hiệu quả.

Định Nghĩa

Tiền tố

Prefix hay còn gọi là tiếp đầu ngữ: một chữ cái hoặc một nhóm chữ được thêm vào trước từ gốc để làm thay đổi nghĩa từ.

Mã tiền tố là gì

Từ mới được tạo ra có nghĩa theo công thức “nghĩa của tiền tố + nghĩa từ gốc”.

Ví dụ: Trong từ “unhealthy”
Tiền tố: “un-“ mang ý nghĩa phủ định ➝ “không”
Từ gốc: “healthy” có nghĩa là “khỏe mạnh”
Khi thêm tiền tố “un-“ vào trước từ gốc “healthy”, từ mới xuất hiện “unhappy” có nghĩa trái ngược với từ gốc là “không khỏe mạnh”

Hậu tố

Suffix hay có tên tiếng việt là tiếp vị ngữ: một chữ cái hoặc một nhóm chữ được thêm vào cuối một từ để thực hiện chức năng ngữ pháp.

Tiền tố chỉ thay đổi ngữ nghĩa, trong khi đó hậu tố còn có tác dụng ngữ pháp: biến đổi loại từ. Hơn nữa, suffix cũng có thể thay đổi nghĩa của từ.

Mã tiền tố là gì

Cấu trúc nghĩa của từ mới được xác định theo công thức “nghĩa từ gốc + nghĩa hậu tố”.

Ví dụ: singer (ca sĩ)
Từ gốc SING: hát là động từ, có nghĩa là “hát”. Hậu tố “-er” dùng cho danh từ chỉ người.
Như vậy, khi chúng kết hợp với nhau, ta sẽ có “singer” – ca sĩ.

Prefix – tiền tố trong tiếng Anh

Ý nghĩa của tiền tố

Việc nắm bắt, hiểu rõ về tiền tố sẽ giúp bạn học từ vựng hiệu quả hơn, tăng vốn từ vựng. Có thể nói, tiền tố trong tiếng Anh góp phần giúp người học sáng tạo ra cách dùng từ mới từ đó có thể thoải mái trong diễn đạt và trở nên linh hoạt hơn.

Khi thêm tiền tố vào trước từ gốc, chúng sẽ mang nghĩa trái ngược hoặc mang một nghĩa khác hẳn. Diễn đạt uyển chuyển sẽ vô cùng hữu ích trong các bài thi IELTS, TOEFL, và cả trong thực tế hàng ngày.

Các loại tiền tố thông dụng

Các tiền tố mang ý nghĩa phủ định thường được biết đến và sử dụng nhiều nhất. Tuy vậy, trong tiếng Anh còn rất nhiều các tiền tố quan trọng khác mà bạn cần biết để chinh phục ngôn ngữ này.

Tiền tố Ý nghĩa Ví dụ
Un- Phủ định, trái nghĩa với từ gốc ⇒“không” Unhappy – không vui, không hạnh phúc
In- Indirect – không trực tiếp = gián tiếp
Im- Impolite – Bất lịch sự
Il- Illegal – không hợp pháp
Ir- Irregular – không thường xuyên
Dis- Discomfort – không thoải mái
Non- Nonprofit – Phi lợi nhuận
Over- Quá mức, vượt quá Overload – quá tải
Super- Siêu Supermarket – siêu thị
Re- Lặp lại Rewrite – viết lại
Mis- Làm sai Mistake – cầm nhầm/lỗi sai; misunderstand – hiểu sai
Pre- Trước Prehistory – tiền sử
Mono- Một (Chỉ số lượng) Monotone – một giọng điệu/đơn điệu
Bi- Hai (Chỉ số lượng) Bilingual – hai ngôn ngữ/ song ngữ; Bisexual – song tính/ lưỡng tính
Tri- Ba (Chỉ số lượng) Tricycle – xe ba bánh; Triangle – tam giác
Multi- Đa (nhiều) Multiculture: đa văn hóa; multitask: đa nhiệm

Người học cần chú ý phân biệt được từ gốc và từ được tạo bởi tiền tố.
Ví dụ: trong từ “Insight”. “In” không phải là tiền tố mà là phần vốn có của từ.

Suffix – hậu tố trong tiếng Anh

Ý nghĩa của hậu tố

Tương tự như tiền tố, người học khi đã nắm bắt tốt phần hậu tố trong tiếng Anh sẽ giảm bớt được khó khăn đáng kể trong việc học từ vựng. Bên cạnh đó, khả năng diễn đạt tiếng Anh sẽ cải thiện linh hoạt hơn. Ngoài ra, hậu tố là điểm ngữ pháp cực kì quan trọng. Khi nắm bắt được một số dạng phổ biến, bạn có thể đoán được từ loại của từ để áp dụng phù hợp trong câu.

Các loại hậu tố phổ biến

Hậu tố Ý nghĩa Ví dụ
HẬU TỐ DANH TỪ
-acy Trạng thái Accuracy (từ gốc: accurate): sự chính xác
-ance; -ence Trạng thái/chất lượng Tolerance – sự bao dung
-ity; -ty Chất lượng của… Validity – hiệu lực
-al Hành động hay quá trình của… Criminal – tội phạm; Trial – thử
-dom Tình trạng Freedom – sự tự do
-ment Tình trạng Argument – sự tranh luận
-ness Trạng thái Sickness – ốm/ bệnh
-sion; -tion Trạng thái Position – vị trí
-er; -or, -ist Chỉ người/ đồ vật có một chuyên môn/ chức năng chuyên biệt nào đó Teacher – giáo viên; printer – máy in; scientist- nhà khoa học
-ism Học thuyết/niềm tin Buddhism – đạo Do Thái
-ship Vị trí nắm giữ Friendship – tình bạn
HẬU TỐ ĐỘNG TỪ
-ate Trở thành Create – tạo ra
-en Trở thành Sharpen – làm sắc nhọn hơn/gọt giũa
-ify; -fy Trở thành Simplify – đơn giản hóa
-ise; -ize Trở thành Publicise – công bố
HẬU TỐ TÍNH TỪ
-able; -ible Có khả năng Edible – có thể chỉnh sửa được; understandable – có thể hiểu được
-al Tính chất của Thermal – thuộc về nóng/nhiệt
-esque Giống với… Picturesque – đẹp như tranh vẽ
-ive Có bản chất của Informative – giàu thông tin
-ic; -ical Có dạng thức/ tính chất của Historic – mang tính lịch sử
-ious; -ous Liên quan đến tính chất/tính cách Jealous – ghen tị
-ish Có chất lượng của Childish – tính trẻ con
-ful Nhiều Careful – cẩn thận
-less Ít Careless – thiếu cẩn thận
HẬU TỐ TRẠNG TỪ
-ly Liên quan tới chất lượng Carefully – cẩn thận
-ward; -wards Phương hướng Towards – về hướng
-wise Có liên quan tới Likewise – tương tự

Có thể thấy, tiền tố và hậu tố trong tiếng Anh không quá khó như bạn nghĩ. Chỉ với vài quy tắc đơn giản, bạn sẽ có thể dễ dàng nắm bắt và vận dụng vào việc học, thi cử hay cả cuộc sống hằng ngày. Cùng ACET phá đảo tiếng Anh nhé!