Подумайте о том, что кодирует ваш файл. В каждом узле у вас есть путь, который ведет вас к этому узлу, поэтому в вашем примере вы начинаете с & Lambda; (это заглавная лямбда, этот греческий шрифт вроде отстой) корневой узел, соответствующий пустой строке. & Lambda; имеет дочерние элементы для каждой используемой буквы, поэтому в вашем наборе данных у вас есть одна ветвь для «i».
- & Lambda;
- & Lambda; & rarr; "я"
В узле "i" есть два дочерних элемента, один для "m" и один для "n". Следующая буква "n", так что вы принимаете это,
- & Lambda; & rarr; "я" & rarr; "п"
и поскольку единственное слово, которое начинается с "i", "n" в вашем наборе данных - это"in", дочерних элементов от "n" нет. Это совпадение.
Теперь, скажем, в наборе данных вместо "in" был "infindibulum". (На какой SF я ссылаюсь, оставляем в качестве упражнения.) Вы все равно доберетесь до узла «n» таким же образом, но если следующая буква, которую вы получите, это «q», вы знаете, что слово не появляется в вашем наборе данных вообще, потому что нет ветки "q". В этот момент вы говорите: «Хорошо, нет совпадений». (Может быть, вы начнете добавлять слово, а может и нет, в зависимости от приложения.)
Но если следующая буква "f", вы можете продолжать. Вы можете замкнуть это с небольшим ремеслом, однако: как только вы достигнете узла, который представляет уникальный путь, вы можете повесить целую строку на этом узле. Когда вы попадаете на этот узел, вы знаете, что остальная часть строки должна быть "findibulum", поэтому вы использовали префикс, чтобы сопоставить всю строку и вернуть ее.
Как ты это используешь? во многих интерпретаторах команд, отличных от UNIX, таких как старый DCL VAX, вы можете использовать любой уникальный префикс команды. Итак, эквивалент ls (1) был DIRECTORY
, но никакая другая команда не начиналась с DIR, так что вы могли бы набрать DIR
, и это было так же хорошо, как и целое слово. Если вы не можете вспомнить правильную команду, вы можете просто набрать 'D' и нажать (я думаю) ESC; Интерфейс командной строки DCL вернет вам все команды, которые начинаются с D
, которые он может найти чрезвычайно быстро.