120
правок
Изменения
→Поиск ближайших соседей во всей структуре
===Поиск ближайших соседей во всей структуре===
'''knn'''(hnsw, q, K, ef)''':''' <font color="green">// Ввод: граф hnsw, запрос q, искомое количество ближайших соседей K, количество кандидатов при поиске ef</font> <font color="green">// Вывод: K ближайших соседей q</font> result = new TreeSet() <font color="green">// Вершины упорядочены по возрастанию расстояния до request. </font> ep = случайная вершина из верхнего слоя hnsw maxLevel = индекс самого высокого слоя в hnsw '''for''' level = maxLevel to 1 result = searchLayer(q, ep, ef=1, level) <font color="green">// На каждом уровне, кроме нижнего мы ищем всего одну ближайшую вершину. </font> ep = result.getMin() result = searchLayer(q, ep, ef, lc=0) '''return''' первые K элементов из result
===Вставка элемента===