Структура данных trie часто является отличным способом хранения строк на английском языке. Он работает, создавая дерево, где каждое ребро помечено буквой, а путь к отмеченному node в дереве вызывает одно из слов в структуре данных.
Эта структура данных хорошо работает на английском языке, потому что в английском алфавите ( "разумный" коэффициент ветвления) есть "всего" 26 букв (эти символы имеют последовательные значения ASCII (поэтому дочерние указатели могут храниться в массиве, индекс букв, используемых каждым ребенком), и есть много английских слов с общими префиксами (поэтому в структуре много избыточности).
Я являюсь носителем английского языка с ограниченным знанием других языков и алфавитов, но похоже, что многие из этих свойств не хранятся на других языках. Я знаю, что французский, испанский, немецкий и венгерский, например, часто используют символы с акцентом, которые не хранятся непрерывно с остальными буквами в пространстве Юникода. На иврите и на арабском языке обозначены гласные, которые обычно указаны выше или ниже каждой буквы. Китайцы используют систему логограмм, а символы корейского хангула состоят из тройки меньших символов, сгруппированных вместе.
Делают ли попытки все еще хорошо работать для данных, хранящихся на этих языках и алфавитах? Какие изменения, если таковые имеются, необходимы для использования попыток для такого рода данных? Существуют ли какие-либо структуры данных, которые хорошо работают для строк на этих языках и алфавитах, которые особенно хорошо подходят для них, но не будут полезны или эффективны на английском языке?