Кіріспе

Бағыт нүктесі ағашы (немесе VP ағашы) — метрикалық кеңістіктегі деректерді орынды ("бағыт нүктесі") таңдап, деректерді екіге бөлу арқылы саралайтын метрикалық ағаш: бағыт нүктесіне белгілі бір шектен жақын нүктелер мен одан алыс нүктелер. Бұл әдіс деректерді үнемі кішірейтіп бөлу үшін рекурсивті түрде қолданылады, нәтижесінде ағаш құрылымы пайда болады, онда ағаштағы жақын нүктелер кеңістікте де жақын болуы мүмкін. Осының бір түрі — көп бағыт нүктесі ағашы (немесе MVP ағашы): үлкен метрикалық кеңістіктерден объектілерді ұқсастық іздеу сұраныстары үшін индекстеуге арналған дерек құрылымы. Ол әр деңгейді бөлу үшін бірнеше нүкте қолданады.

Тарих

Питер Йианилос бұрыштық ағашты ол (Питер Йианилос) және Джеффри Ульман дербес ашқандарын мәлімдеді. Ульман бұл деректер құрылымын метрикалық ағаш деп атады, ал VP ағашының атауын Йианилос ұсынды. Вантаж нүктесі ағаштары Нейльсен және авторлар тобы Брегман дивергенциясын қолдана отырып, метрикалық емес кеңістіктерге жалпыланды. Бұл итеративтік бөлу процесі k d ағашына ұқсас, бірақ тікбұрышты емес, дөңгелек (немесе сфералық, гиперсфералық және т.б.) бөлімдерді пайдаланады. Екі өлшемді Евклид кеңістігінде бұл деректерді бөлетін шеңберлер тізбегі ретінде визуализацияланады. Вантаж нүктесі ағашы стандартты емес метрикалық кеңістіктегі деректерді метрикалық ағаштарға бөлу үшін ерекше пайдалы.

Басты көзге қарау ағашын түсіну

Көрініс бұтағы деректерді сақтау әдісін шеңбер түрінде бейнелеуге болады.

Ағаштан іздеу

Нысанның ең жақын көршісін табу үшін нұсқаулық нүкте ағашын қолдануға болады. Іздеу алгоритмі рекурсивті. Кез келген қадамда біз v нүктесі мен t шектік қашықтығы бар ағаш түйінімен жұмыс істейміз. Қызығушылықтың x нүктесі нұсқаулық нүкте v-ден белгілі бір қашықтықта болады. Егер осы қашықтық d, t-ден кіші болса, онда алгоритмді рекурсивті түрде пайдаланып, нұсқаулық нүктеге t шегінен жақын нүктелерді қамтитын түйіннің кіші ағашын іздеңіз; әйтпесе, нұсқаулық нүктеден t шегінен алыс нүктелерді қамтитын түйіннің кіші ағашына рекурсия жасаймыз. Егер алгоритмді рекурсивті пайдалану x-ке дейінгі қашықтығы кішірек болатын көрші нүкте n-ді табатын болса, онда ол осы түйіннің екінші кіші ағашын іздеуге қажеттілік тудырмайды; табылған n түйіні қайтарылады. Әйтпесе, екінші кіші ағашты да рекурсивті іздеу қажет. Осыған ұқсас тәсіл нысанның x-тің k ең жақын көршілерін табу үшін де қолданылады. Рекурсияда, егер осы уақытқа дейін табылған ең жақын көршілердің тек k′ (< k) ғана қашықтығы кіші болса, онда екінші кіші ағашта x нүктесінің k - k′ ең жақын көршілері ізделеді.

Көзқарас нүктесі ағашының артықшылықтары

Индекс құрылғанға дейін домен үшін көпөлшемді нүктелерді болжаудың орнына, біз индексті тікелей қашықтық негізінде құрастырамыз. Осылай істеу алдын ала өңдеу қадамдарынан құтылуға мүмкіндік береді. Қарап тұруға ыңғайлы нүктелер ағашын жаңарту, FastMap әдісімен салыстырғанда салыстырмалы түрде оңай. FastMap үшін деректерді қосу немесе жою кезінде, FastMap өзін қайта сканерлеуі қажет болатын сәт туындайды. Бұл көп уақытты қажет етеді және қайта сканерлеудің қашан басталатынын анықтау қиын. Қашықтыққа негізделген әдістер икемді. Олар белгілі бір өлшемдер санындағы белгі векторлары түрінде ұсынылған объектілерді индекстеуге қабілетті.

Күрделілігі

Қарап тұруға арналған ағаш құрудың уақыт шығыны шамамен O(n log n) тең. Әр элемент үшін ағаш log n деңгеймен төмен түсіріліп, оның орналасуы анықталады. Бірақ k тұрақты коэффициенті бар, мұнда k – ағаш түйініне арналған қарап тұру нүктелерінің саны. Бір жақын көршіні табу үшін қарап тұру нүктесі ағашын іздеудің уақыт шығыны O(log n) болып табылады. Log n деңгей бар, олардың әрқайсысы k қашықтық есептеуді қамтиды, мұнда k – ағаштағы сол позициядағы қарап тұру нүктелерінің (элементтердің) саны. Ауқымды іздеудің уақыт шығыны, бұл ең маңызды қасиет болуы мүмкін, қолданылатын алгоритмнің ерекшеліктері мен параметрлеріне байланысты айтарлықтай өзгеруі мүмкін. Бриннің мақаласында қашықтық есептеулер санымен өлшенген шығынды зерттеу үшін әртүрлі параметрлері бар бірнеше қарап тұру алгоритмдерімен жүргізілген тәжірибелердің нәтижелері келтірілген. Қарап тұруға арналған ағаштың орындық шығыны шамамен n тең. Әр элемент сақталады, және әрбір жапырақ емес түйіндегі ағаш элементі өзінің ұрпақ түйіндеріне сілтемелерді қажет етеді. (Бір іске асыру таңдауы туралы толық мәліметтерді Бриннен қараңыз. Түйіндегі элементтер санының параметрі маңызды рөл атқарады.) n нүкте болғанда, нүктелер арасындағы O(n²) жұптық қашықтықтар болады. Дегенмен, қарап тұру нүктесі ағашын құру үшін тек O(n log n) қашықтықты нақты есептеу қажет, ал іздеу үшін тек O(log n) қашықтық есептеуі талап етіледі. Мысалы, егер x және y нүктелер болса және d(x, y) қашықтығы кішкентай болса, онда x-тен алыс кез келген z нүктесі де y-ден шамамен сондай алыс болады, себебі метрикалық кеңістіктің үшбұрыш теңсіздігі d(y, z) ≥ d(x, z) − d(x, y) шартын береді.