Анфилада (Занаду) - Enfilade (Xanadu)
Анфилады являются классом древовидные структуры данных используется в Проект Ксанаду «Зеленые» конструкции 1970-1980-х годов. Enfilades позволяет выполнять операции быстрого редактирования, управления версиями, поиска и взаимного сравнения в большой базе перекрестно связанных гипертекстов. В проекте «Золото» Занаду, начатом в 1990-х годах, использовалась связанная структура данных, называемая Ent.
Структура и свойства
Хотя принципы анфилад можно применить к любой древовидной структуре данных, конкретная структура, используемая в системе Xanadu, была очень похожа на B-дерево. Что отличает анфилады, так это использование dsps и ширина в информации индексации в узлах дерева.
Dsps - это смещения, смещения или относительные ключи. DSP - это разница в ключах между содержащим узлом и поддеревом или листом. Например, лист для квадрата сетки на карте может иметь определенное смещение по долготе и широте относительно большей сетки, представленной поддеревом, частью которого является лист. Ключ любого листа анфилады находится путем объединения всех dsps на пути вниз по дереву к этому листу. Dsps также может использоваться для другой контекстной информации, которая накладывается сверху вниз на целые поддеревья или диапазоны контента сразу.
Ширина - это ширина, диапазон или ограничивающие рамки. Wid относится к ключу поддерева или листа, но определяет диапазон адресов, охватывающий все элементы в поддереве. Wids идентифицируют интересные части малонаселенных адресных пространств. В некоторых анфиладах ширина поддеревьев в данном узле может перекрываться, и в любом случае поиск данных в диапазоне адресов должен посещать любые поддеревья, ширина которых пересекает диапазон поиска. Ширина складывается от листьев дерева вверх через все слои к корню (хотя они поддерживаются постепенно). Wids также могут содержать другие сводки, такие как итоги или максимумы данных.
Относительная природа wids и dsps позволяет переупорядочивать поддеревья внутри анфилады. При изменении dsp в верхней части поддерева неявно изменяются ключи всех данных под ним. Операции редактирования в анфиладах выполняются путем «вырезания» или разделения дерева на соответствующие пути доступа, вставки, удаления или изменения поддеревьев и объединения частей вместе. Стоимость операций по разрезанию и сращиванию обычно аналогична логарифму в одномерных деревьях и между логарифмическими и квадратными корнями в двумерных деревьях.
Поддеревья также могут быть разделены между деревьями или связаны из нескольких мест внутри дерева. Это делает анфиладу полностью постоянная структура данных с виртуальным копированием и версией контента. Каждое использование поддерева наследует другой контекст от цепочки dsps до него. При изменении копии новые узлы создаются только вдоль траекторий разреза, а оригинал остается на месте. Накладные расходы для версии очень малы, дерево новой версии сбалансировано и быстро, а стоимость ее хранения связана только с изменениями по сравнению с исходной.
Одномерные анфилады занимают промежуточное положение между прямой адресацией массивов и простотой вставки, удаления и перегруппировки связанных списков. Многомерные анфилады напоминают свободные, переставляемые, версионные Квадратные деревья, Октябрьские деревья или же k-d деревья.
Виды анфилад в Занаду
В Модель-Т enfilade, который использовался в проектах Xanadu до 1979 года, представляет собой структуру данных, очень похожую на Веревка. Он хранит линейные последовательности символов с простой вставкой, удалением, перегруппировкой и управлением версиями, но не со ссылками или простым сравнением между версиями. Текст хранится прямо в листах анфилады.
Более поздние разработки Xanadu носят более косвенный характер: растущий пул совместно используемых частей контента, называемый istream (инвариантный поток), организован в документы, ссылки и версии - все с виртуальными адресами, - которые пользователи видят и над которыми работают. Набор типов анфилад управляет двунаправленным отображением виртуальных адресов и адресов istream. Отслеживание соответствий и связей между документами стало возможным благодаря отображению виртуальных адресов в инвариантные и обратно в виртуальные. Хранение документов с использованием частей совместно используемого контента, которые запоминают свои личности и могут прослеживаться вплоть до их появления, называется Включение.
В ПООМфилада (перестановка матрицы порядка) представляет собой двумерную анфиладу, представляющую Матрица перестановок. Это сопоставляет виртуальную позицию в документе с позициями istream в содержимом пула, из которого создается документ. POOM запускает единичную матрицу, затем каждое редактирование фрагментов документа и переупорядочивает горизонтальные полосы карты. POOM можно запросить в направлениях V-> I или I-> V, выполнив поиск в приземистых, широких диапазонах адресов или высоких, узких.
В Spanfilade собирает объединение всех диапазонов содержимого istream, используемых документом или набором документов. Взятие пересечения наборов диапазонов из двух документов или версий документа ускоряет сравнение документов. Этот же механизм используется для поиска ссылок из документа или на него.
В Гранфилада организует хранение всей этой информации на дисках и в сети серверов.
Коммерческая тайна до 1999 г.
Enfilades (внутренние структуры данных) и адреса istream не доступны для внешних интерфейсов Xanadu. Enfilades были коммерческой тайной до тех пор, пока код Xanadu не был открыт в 1999 году, и до этого момента упоминались, но не объяснялись в некоторых публикациях, например[1]
Связь клиент-сервер в системе Xanadu использует адреса vstream в формате, называемом тумблеры.
Следовательно, термин Enfilade не упоминается явно в FeBe (Front end - Back end protocol) документ, но вместо этого косвенно упоминается в Ксаналогическая структура и несколько других документов. В вышеупомянутом документе отмечается, что xu88 был основан на «Общей теории анфилад».
История
В 1972 году компания xu72 представила концепцию Enfilade. Это называлось «анфиладой модели T» и использовалось в интерфейсе текстового редактора. В 1976 году xu76 реализовал «анфиладу сильной связи». В 1980 году система xu80 представила "ent", описанный как анфиладу управления версиями. В 1988 году система xu88 использовала концепцию «общей анфиладной теории» Марк С. Миллер, Стюарт Грин и Роджер Грегори описывается как «создание деревьев управления данными с восходящим свойством поиска и одновременно с нисходящим структурным свойством». Xu88 также расширил концепцию Enfilade по распределенной сети, представил двумерные Enfilades и реализовал алгоритм поиска по всей документальный фильм для перекрытия пролетов Энфилады. В 1992 году компания xu92 реализовала современную концепцию энт.[2]
Смотрите также
Рекомендации
- ^ Литературные машины: Отчет о проекте Xanadu, касающийся обработки текста, электронных публикаций, гипертекста, игрушек для размышлений, завтрашней интеллектуальной революции и некоторых других тем, включая знания, образование и свободу. (1981), Mindful Press, Саусалито, Калифорния.
- ^ Ксаналогическая структура