phải|Cây hậu tố cho xâu BANANA
. Mỗi xâu con được kết thúc bởi ký tự đặc biệt $
. Sáu đường từ gốc đến lá (ký hiệu bởi ô vuông) tương ứng với sáu hậu tố A$
, NA$
, ANA$
, NANA$
, ANANA$
và BANANA$
. Các số trên lá là vị trí bắt đầu của hậu tố. Các liên kết hậu tố được vẽ bằng đường đứt nét.
Trong khoa học máy tính, một cây hậu tố là một cấu trúc dữ liệu để biểu diễn các hậu tố của một xâu ký tự sao cho có thể thực hiện nhanh chóng nhiều thao tác trên xâu.
Cây hậu tố của xâu là một cây có cạnh được gắn nhãn là các xâu ký tự và mỗi hậu tố của tương ứng với chuỗi thu được bằng cách ghép tất cả các nhãn của một đường từ gốc đến lá. Do đó nó là cây cơ số (cụ thể hơn, nó là cây Patricia) của các hậu tố của .
Việc xây dựng cây hậu tố của xâu sử dụng thời gian và bộ nhớ tuyến tính với độ dài của . Sau khi đã xây dựng xong cây, có thể thực hiện nhanh chóng nhiều thao tác, chẳng hạn như tìm xâu con trong , tìm xâu con với một số lượng lỗi cố định, tìm biểu thức chính quy v.v... Cây hậu tố cũng là một trong những lời giải tuyến tính đầu tiên của bài toán tìm xâu con chung dài nhất. Tuy làm tăng tốc độ các thao tác nhưng việc lưu trữ cây hậu tố thường đòi hỏi nhiều bộ nhớ hơn chỉ lưu trữ xâu ký tự.
Lịch sử
Khái niệm này được đưa ra dưới tên gọi cây vị trí (position tree) bởi Weiner năm 1973, mà Donald Knuth sau đó gọi là "Thuật toán của năm 1973". Thuật toán được đơn giản hóa bởi McCreight năm 1976
, và bởi Ukkonen năm 1995. Ukkonen đưa ra thuật toán trực tuyến đầu tiên cho việc xây dựng cây hậu tố, nay gọi là thuật toán Ukkonen, với thời gian chạy nhanh ngang với thuật toán nhanh nhất khi đó. Các thuật toán này có thời gian chạy tuyến tính khi kích thước bảng chữ cái là hằng số, và có thời gian chạy xấu nhất là trong trường hợp tổng quát.
Năm 1997, Martin Farach đưa ra thuật toán xây dựng cây hậu tố đầu tiên chạy trong thời gian tuyến tính cho mọi bảng chữ cái. Cụ thể hơn, đây là thuật toán thời gian tuyến tính đầu tiên cho xâu ký tự có bảng chữ cái kích thước đa thức. Thuật toán Farach nay đã trở thành thành phần cơ bản cho các thuật toán mới cho việc xây dựng cây hậu tố cũng như mảng hậu tố, trong bộ nhớ ngoài, nén, v.v...
Định nghĩa
Cây hậu tố cho xâu độ dài là cây sao cho ( trang 90):
- các đường từ gốc tới lá có tương ứng 1-1 với các hậu tố của ,
- các cạnh đều có nhãn là các xâu khác rỗng,
- mọi nút trong (ngoại trừ nút gốc) đều có ít nhất hai con.
Do cây thỏa mãn tính chất trên có thể không tồn tại, ta chèn thêm vào cuối một ký tự đặc biệt không xuất hiện trong (thường ký hiệu là $
). Điều này đảm bảo không có hậu tố nào là tiền tố của một hậu tố khác, và có do đó cây có đúng nút lá, ứng với hậu tố của . Do mọi nút trong khác gốc đều có hơn một con, cây có không quá n − 1 nút như vậy, và tổng cộng không quá n + (n − 1) + 1 = 2n nút (n lá, n − 1 nút trong khác gốc, 1 gốc).
Liên kết hậu tố là một yếu tố quan trọng của các thuật toán đầu tiên nhưng các thuật toán về sau dựa trên thuật toán Farach không sử dụng chúng. Trong cây hậu tố đầy đủ, mọi nút trong đều có một liên kết hậu tố tới một nút trong khác. Nếu đường từ gốc tới một nút ứng với xâu , trong đó là một ký tự và là một xâu (có thể rỗng), thì nó có liên kết hậu tố tới nút có đường từ gốc tới nó ứng với xâu . Chẳng hạn trong ví dụ trên, liên kết hậu tố của ANA
trỏ tới nút NA
. Liên kết hậu tố cũng được sử dụng bởi nhiều thuật toán trên cây.
Cây hậu tố tổng quát
Cây hậu tố tổng quát là cây hậu tố cho một tập hợp các xâu thay vì chỉ một xâu. Nó biểu diễn tất cả các hậu tố của tất cả các xâu trong tập hợp. Mỗi xâu phải dùng một ký tự kết thúc riêng biệt.
Chức năng
Có thể xây dựng cây hậu tố cho xâu độ dài trong thời gian , nếu bảng chữ cái có kích thước đa thức (và do đó cũng đúng khi bảng chữ cái có kích thước hằng số).).
** Tìm cho mọi hậu tố của mẫu , độ dài chuỗi giống nhau dài nhất giữa tiền tố của và các xâu con của trong thời gian (
- Tìm kiếm xâu ký tự, trong thời gian O(m), trong đó m là độ dài mẫu cần tìm (với thời gian O(n) để xây dựng cây hậu tố trước khi tìm)
- Tìm kiếm xâu con lặp lại dài nhất
- Tìm kiếm xâu con chung dài nhất
- Tìm xâu con đối xứng dài nhất
Cây hậu tố thường được sử dụng trong các ứng dụng tin sinh học, tìm kiếm mẫu trong dãy DNA hoặc protein (có thể được xem là các xâu ký tự dài). Khả năng tìm kiếm cho phép có lỗi sai là một điểm mạnh của cấu trúc dữ liệu này. Cây hậu tố cũng được sử dụng trong nén dữ liệu; có thể dùng nó để tìm dữ liệu lặp lại cũng như trong giai đoạn sắp xếp của biến đổi Burrows–Wheeler. Một biến thể của thuật toán nén LZW sử dụng cây hậu tố (LZSS). Cây hậu tố được sử dụng trong phân nhóm cây hậu tố, một thuật toán phân nhóm dữ liệu dùng cho công cụ tìm kiếm (đưa ra đầu tiên bởi ).
Phương thức lập trình
Nếu mỗi nút và cạnh có thể được biểu diễn trong bộ nhớ , thì có thể lưu trữ cả cây trong bộ nhớ . Tổng độ dài các xâu trên các cạnh của cây là , nhưng có thể lưu mỗi cạnh bằng vị trí bắt đầu và kết thúc của một xâu con của S, nên tổng bộ nhớ cần dùng là . Trường hợp xấu nhất của bộ nhớ cần dùng cho cây hậu tố là khi dữ liệu vào là một từ fibonacci, đòi hỏi nút.
Một lựa chọn quan trọng khi lập trình cây hậu tố là biểu diễn liên kết giữa nút cha và con trong cây. Cách đơn giản nhất là sử dụng danh sách liên kết gọi là danh sách chị em. Mỗi nút có một con trỏ trỏ tới nút con đầu tiên, và một con trỏ thứ hai trỏ tới nút kế tiếp trong danh sách chị em của nút đó. Cũng có thể sử dụng bảng băm, mảng đã sắp hoặc chưa sắp (sử dụng kĩ thuật gấp đôi mảng), hoặc cây nhị phân cân bằng. Mỗi lựa chọn cho một thời gian chạy khác nhau. Ta quan tâm tới:
- Chi phí tìm cạnh tới nút con có nhãn bắt đầu bằng một ký tự cho trước.
- Chi phí chèn thêm một nút con.
- Chi phí duyệt tất cả các nút con (chia trung bình cho mỗi nút con).
Đặt là kích thước bảng chữ cái. Khi đó các chi phí là như sau:
Ghi chú là chi phí chèn là chi phí trừ dần (do gấp đôi mảng) và chi phí của bảng băm là khi sử dụng băm hoàn hảo.
Lượng thông tin cần lưu cho mỗi cạnh và nút của cây hậu tố là rất tốn kém, tiêu tốn khoảng 10 đến 20 lần lượng bộ nhớ cần thiết để lưu xâu ký tự ban đầu. Mảng hậu tố giảm tỉ lệ này xuống còn 4 và các nhà nghiên cứu vẫn đang tìm cấu trúc dữ liệu mới để giảm tỉ lệ này xuống nhỏ hơn nữa.
Xây dựng trên bộ nhớ ngoài
Bộ nhớ cây hậu tố đòi hỏi nhanh chóng vượt quá dung lượng bộ nhớ trong của máy tính thông thường khi độ dài các xâu đạt đến cỡ gigabyte. Khi đó, cần sử dụng các thuật toán cho bộ nhớ ngoài để xây dựng cây.
Có nhiều kết quả lý thuyết cho việc xây dựng cây hậu tố trong bộ nhớ ngoài. Thuật toán của Farach-Colton et al.
là tối ưu về mặt lý thuyết, với độ phức tạp I/O bằng với sắp xếp.
Tuy nhiên, như đánh giá trong
thuật toán này là quá phức tạp nên vẫn chưa được sử dụng trong thực tế.
Mặt khác, đã có những nghiên cứu thực tế cho việc xây dựng cây hậu tố trên đĩa với tốc độ (một vài) GB/giờ.
Các phương pháp tốt nhất hiện nay là TDD,
TRELLIS
,
DiGeST,
và
B2ST
.
TDD và TRELLIS chạy được cho tới kích thước của bộ gen người – khoảng 3 GB – tạo ra cây hậu tố kích thước khoảng vài chục gigabyte.
.
Tất cả các phương pháp này là cho việc xây dựng cây hậu tố khi kích thước cây vượt quá kích thước bộ nhớ trong nhưng dữ liệu vào vẫn nằm ở bộ nhớ trong.
Phương pháp mới nhất, B2ST, là một phương pháp xây dựng cây hậu tố song song mới nhanh hơn hẳn các phương pháp cũ. ERA có thể xử lý bộ gen người trong 19 phút trên một máy tính để bàn 8 nhân với 16GB RAM. Trên một cụm gồm 16 máy tính Linux (mỗi máy 4GB RAM), ERA có thể xử lý bộ gen người trong 9 phút.
👁️
1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
phải|Cây hậu tố cho xâu BANANA
. Mỗi xâu con được kết thúc bởi ký tự đặc biệt $
. Sáu đường từ gốc đến lá (ký hiệu bởi ô vuông) tương ứng với sáu hậu tố
**Trèo cây** là tên gọi chung của một nhóm các loài chim dạng sẻ nhỏ thuộc chi **_Sitta_** trong họ **Sittidae**, có hình thái đặc trưng là đầu to, đuôi ngắn, mỏ và bàn chân
**Hiếu Văn Đậu Hoàng hậu** (chữ Hán: 孝文竇皇后; 205 - 135 TCN), còn gọi là **Đậu Thái hậu** (竇太后), kế thất nhưng là Hoàng hậu tại vị duy nhất của Hán Văn Đế Lưu Hằng,
**Hiếu Hiền Thuần Hoàng hậu** (chữ Hán: 孝賢纯皇后, ; 28 tháng 3, năm 1712 - 8 tháng 4, năm 1748), là nguyên phối Hoàng hậu của Thanh Cao Tông Càn Long Đế. Xuất thân vọng
**Trung tâm Khí hậu APEC** (APEC Climate Center - APCC) là một tổ chức của chính phủ tiến hành nghiên cứu về dự báo khí hậu, phân tích và các lĩnh vực ứng dụng biến
NƯỚC HOA HỒNG Simple Kind To Skin Soothing Facial Toner 200ml✅ Dung Tích: 200ml*** THÀNH PHẦN:✅ Hoạt chất Witch Hazel từ nước cây phỉ giúp se khít lỗ chân lông tự nhiên, sát khuẩn, làm
MÔ TẢ SẢN PHẨM⚜️ NƯỚC HOA HỒNG Simple Kind To Skin Soothing Facial Toner 200ml✅ Dung Tích: 200ml*** THÀNH PHẦN:✅ Hoạt chất Witch Hazel từ nước cây phỉ giúp se khít lỗ chân lông tự
⚜️ NƯỚC HOA HỒNG Simple Kind To Skin Soothing Facial Toner 200ml✅ Dung Tích: 200ml*** THÀNH PHẦN:✅ Hoạt chất Witch Hazel từ nước cây phỉ giúp se khít lỗ chân lông tự nhiên, sát khuẩn,
MÔ TẢ SẢN PHẨM⚜️ NƯỚC HOA HỒNG Simple Kind To Skin Soothing Facial Toner 200ml✅ Dung Tích: 200ml*** THÀNH PHẦN:✅ Hoạt chất Witch Hazel từ nước cây phỉ giúp se khít lỗ chân lông tự
**Lê Thái Tổ** (chữ Hán: 黎太祖 10 tháng 9 năm 1385 – 5 tháng 10 năm 1433), tên thật là **Lê Lợi** (黎利) là một nhà chính trị, nhà lãnh đạo quân sự, người đã
thumb|upright=1.35|right|alt=Bản đồ toàn cầu về sự tăng nhiệt độ nước biển từ 0,5 đến 300 độ Celsius; nhiệt độ đất liền tăng từ 10000 đến 20000 độ Celsius; và nhiệt độ vùng Bắc cực tăng
**Cây trồng biến đổi gen** (Genetically Modified Crop - **GMC**) là loại cây trồng được lai tạo ra bằng cách sử dụng các kỹ thuật của công nghệ sinh học hiện đại, hay còn gọi
**Lã hậu** (chữ Hán: 呂后, 241 – 180 TCN), có âm khác **Lữ hậu**, thường gọi **Lã Thái hậu** (呂太后) hay **Hán Cao hậu** (漢高后), là vị Hoàng hậu duy nhất của Hán Cao Tổ
**Giang Tô** (江苏) là một tỉnh ven biển ở phía đông Cộng hòa Nhân dân Trung Hoa. Giản xưng của Giang Tô là "Tô" (苏, sū), tức chữ thứ hai trong tên tỉnh. Năm 2018,
nhỏ|Những nghiên cứu phủ nhận quá trình ấm lên toàn cầu do con người gây nên được kiểm duyệt bởi hội đồng chuyên gia là gần như không tồn tại trong khoảng 2013-14. Hơn 99.99%
**Đại Thắng Minh Hoàng hậu** (chữ Hán: 大勝明皇后; 952 - 1000), dã sử xưng gọi **Dương Vân Nga** (楊雲娥), là Hoàng hậu của 2 vị Hoàng đế thời kỳ đầu lập quốc trong Lịch sử
**Cổ khí hậu học** (tiếng Anh: _paleoclimatology_ hay _palaeoclimatology_) là nghiên cứu về biến đổi trong khí hậu được thực hiện trên quy mô của toàn bộ lịch sử Trái Đất. Nó sử dụng nhiều
**Biến đổi khí hậu** là sự thay đổi của hệ thống khí hậu gồm khí quyển, thủy quyển, sinh quyển, thạch quyển, băng quyển hiện tại và trong tương lai bởi các nguyên nhân tự
nhỏ|300x300px|Mật độ dân số và độ cao so với mực nước biển ở Thành phố Hồ Chí Minh (2010) **Biến đổi khí hậu ở Việt Nam** sẽ dẫn đến một thực trạng, trong những thập
**Hậu Giang** là một tỉnh cũ ở Đồng bằng sông Cửu Long. Cổng chào của tỉnh Hậu Giang, đặt trên địa bàn của thị trấn Cái Tắc ## Trước năm 1975 * Ngày 20 tháng
Phá rừng là một trong những nguyên nhân chính của sự biến đổi khí hậu. Đó là nguồn cácbon dioxide có nguồn gốc từ con người lớn thứ hai chỉ sau việc đốt nhiên liệu
**Hội nghị thượng đỉnh về biến đổi khí hậu của Liên Hợp Quốc năm 2021** (tiếng Anh: _2021 United Nations Climate Change Conference_), thường được biết đến nhiều hơn với tên viết tắt **COP26** là
**Nam Phương Hoàng hậu** (chữ Hán: 南芳皇后; 14 tháng 11 năm 1913 – 15 tháng 9 năm 1963) là hoàng hậu của Hoàng đế Bảo Đại thuộc triều đại nhà Nguyễn, đồng thời là hoàng
**Minh Thái Tổ** (chữ Hán: 明太祖, 21 tháng 10 năm 1328 – 24 tháng 6 năm 1398), tên thật là **Chu Trùng Bát** (朱重八 ), còn gọi là **Hồng Vũ Đế** (洪武帝), **Hồng Vũ quân**
phải|nhỏ|380x380px| Hệ thực vật núi cao tại Đèo Logan, [[Vườn quốc gia Glacier (Hoa Kỳ)|Vườn quốc gia Glacier, ở Montana, Hoa Kỳ: Thực vật núi cao là một nhóm được cho là rất dễ bị
nhỏ|phải|Cây mận nhỏ|Cây [[hạnh đào đang ra hoa]] nhỏ|[[Malus domestica|Cây táo tây và quả táo]] **Cây ăn quả** (Nam Bộ gọi là **cây ăn trái**) là các loại cây trồng hoặc quả rừng mà trái
nhỏ|21 ngày tuổi ấu trùng tằm trên lá dâu nhỏ|nhộng tằm nhỏ|Bóc vỏ và kéo sợi tơ, làm thủ công nhỏ|Công nghệ nuôi tằm, dệt vải xưa tại Trung Hoa **Dâu tằm tơ** (tiếng Anh:
**Nguyễn Trường Tộ** (chữ Hán: 阮長祚, 1830? – 1871), còn được gọi là **Thầy Lân**, là một danh sĩ, kiến trúc sư, và là nhà cải cách xã hội Việt Nam ở thế kỷ 19.
**Bệnh bạch hầu** là một nhiễm trùng gây ra bởi vi khuẩn _Corynebacterium diphtheriae_. Nó cũng có thể lây truyền qua các vật mang mầm bệnh. Vắc-xin bạch hầu có hiệu quả trong việc phòng
**Hoa hậu Trái Đất** (tiếng Anh: **Miss Earth**) là một cuộc thi sắc đẹp quốc tế. Cùng với Hoa hậu Hoàn vũ, Hoa hậu Thế giới và Hoa hậu Quốc tế, là bốn cuộc thi
**Đường Trung Tông Vi Hoàng hậu** (chữ Hán: 唐中宗韋皇后, ? - 21 tháng 7, năm 710), thường gọi **Vi hậu** (韋后) hay **Vi Thái hậu** (韋太后) hoặc **Trung Tông Vi Thứ nhân** (中宗韋庶人), kế phối,
**Hậu Trần** (chữ Nôm: 茹後陳, chữ Hán: 後陳朝, Hán Việt: _Hậu Trần triều_) là một triều đại trong lịch sử Việt Nam từ 1407 đến 1414 mà các sách sử vẫn chưa thống nhất cách
**Hiếu Từ Cao Hoàng hậu Mã thị** (chữ Hán: 孝慈高皇后馬氏, 18 tháng 7 năm 1332 – 23 tháng 9 năm 1382), thường gọi **Minh Thái Tổ Mã Hoàng hậu** (明太祖馬皇后) để phân biệt với vị
**Mận hậu**, hay còn có tên là **mận bắc**, **mận Hà Nội** hoặc gọi vắn tắt là **mận** tại Việt Nam (danh pháp hai phần: _Prunus salicina,_ danh pháp đồng nghĩa: _Prunus triflora_ hoặc _Prunus
**Cây tìm kiếm nhị phân** (viết tắt tiếng Anh: BST - _Binary Search Tree_) là một cấu trúc dữ liệu rất thuận lợi cho bài toán tìm kiếm. Mỗi cây tìm kiếm nhị phân đều
**Hiếu Cảnh Vương hoàng hậu** (chữ Hán: 孝景王皇后; 178 - 126 TCN), thường gọi **Hiếu Cảnh Thái hậu** (孝景太后), là Hoàng hậu thứ hai của Hán Cảnh Đế Lưu Khải. Bà là sinh mẫu của
**Fabiola, Vương hậu Bỉ** (**Fabiola de Mora y Aragón**; 11 tháng 6 năm 1928 – 5 tháng 12 năm 2014) là vợ của Vua Baudouin của Bỉ. Bà là Hoàng hậu Bỉ từ năm 1960
**Nguyễn Thị Sen** (? - ?) là tứ phi Hoàng hậu nhà Đinh, vợ của vua Đinh Tiên Hoàng trong lịch sử Việt Nam, Bà được hậu thế tôn vinh là bà tổ nghề may.
nhỏ|phải|Một món hàu sống **Nuôi hàu** là hoạt động nuôi trồng thủy sản (nuôi trồng hải sản) thông qua việc thực hành nuôi những con hàu để con người tiêu thụ. Thịt hàu sống là
phải|[[Hoa giấy tím cổ thụ tại Vườn hoa thành phố Đà Lạt]] **Cây cảnh** (hoặc **cây kiểng**) là một số loại thực vật được chăm sóc, gieo trồng và tạo dáng công phu, thường dùng
nhỏ|phải thumb|phải|Cây thông châu Âu (Larix decidua), một loại cây lá kim cũng rụng lá Trong thực vật học, **cây** là một cây lâu năm có thân thon dài, hoặc thân, hỗ trợ cành và
**Hoa hậu Hoàn vũ Việt Nam** (tiếng Anh: **Miss Cosmo Vietnam**) là cuộc thi sắc đẹp cấp quốc gia của Việt Nam được tổ chức hằng năm bắt đầu từ 2022, trước đó cuộc thi
**Minh Thành Tổ** (chữ Hán: 明成祖, 1360 – 1424), ban đầu truy tôn là **Minh Thái Tông** (明太宗), là hoàng đế thứ ba của nhà Minh, tại vị từ năm 1402 đến năm 1424. Ông
phải|nhỏ|Quần thực vật môi trường núi cao phải|nhỏ|Thung lũng núi cao này nằm cao hơn [[đường giới hạn cây gỗ|đường cây thân gỗ.]] **Khí hậu núi cao** là trung bình của thời tiết (tức khí
**Ong bắp cày** là tên thông dụng của một nhóm các loài tò vò có tính xã hội cao lớn nhất, chủ yếu thuộc chi _Vespa_ và _Provespa_. Có nhiều loài ong bắp cày có
**Hoa hậu Trái Đất 2015** là cuộc thi Hoa hậu Trái Đất lần thứ 15, được tổ chức vào ngày 5 tháng 12 năm 2015 tại Trung tâm tổ chức sự kiện Marx Halle ở
**Hiếu Khâm Hiển Hoàng hậu**; (chữ Hán: 孝欽顯皇后; ; ; trước đây La Mã hóa là **Từ Hi Thái hậu T'zu-hsi**; 29 tháng 11 năm 1835 – 15 tháng 11 năm 1908), thường được gọi
nhỏ|Cây trồng chưa sử dụng và khai thác đúng tiềm năng **Cây trồng chưa sử dụng và khai thác đúng tiềm năng** (NUS) là những loài thực vật được sử dụng theo cách truyền thống
**Hiếu Trinh Hiển Hoàng hậu** (chữ Hán: 孝貞顯皇后; ; 12 tháng 8, năm 1837 – 8 tháng 4, năm 1881), được biết đến như **Từ An Hoàng thái hậu** (慈安皇太后) hoặc **Đông Thái hậu** (東太后),
**Văn Đức Thuận Thánh hoàng hậu** (chữ Hán: 文德順聖皇后, 15 tháng 3, 601 – 28 tháng 7, 636), thông thường được gọi là **Trưởng Tôn hoàng hậu** (長孫皇后), là Hoàng hậu duy nhất của Đường