NNS問題に対する様々な解決策が提案されている。 アルゴリズムの品質と有用性は、クエリの時間の複雑さと、維持する必要がある検索データ構造の空間の複雑さによって決定されます。 通常、次元の呪いと呼ばれる非公式の観測は、多項式前処理と多対数探索時間を使用して、高次元ユークリッド空間におけるNNSに対する汎用的な厳密解が存在しないことを述べている。,

Exact methodsEdit

Linear searchEdit

NNS問題の最も簡単な解決策は、クエリポイントからデータベース内の他のすべてのポイントまでの距離を計算し、”これまでのベスト”を このアルゴリズムは、ナイーブアプローチと呼ばれることもあり、実行時間はO(dN)であり、NはSの基数であり、dはMの次元である。, ナイーブ検索は、平均して、高次元空間上の空間分割アプローチを上回ることができます。

Space partitioningEdit

1970年代以降、分岐限界手法がこの問題に適用されてきました。 ユークリッド空間の場合、このアプローチは空間インデックスまたは空間アクセス方法を包含する。 NNS問題を解くためのいくつかの空間分割法を開発した。 おそらく最も単純なものはk-dツリーであり、探索空間を親領域の点の半分を含む二つの領域に反復的に二分します。, クエリは、各分割でクエリポイントを評価することによって、ルートからリーフへのツリーの走査を介して実行されます。 クエリで指定された距離に応じて、ヒットを含む可能性のある隣接ブランチも評価する必要がある場合があります。 定次元クエリ時間の場合、平均複雑度はO(log N)ランダムに分布する点の場合、最悪の場合の複雑度はO(kN^(1-1/k))またはRツリーデータ構造は、r*ツリーのような挿入と削除のための効率的なアルゴリズムを持つため、動的コンテキストにおける最近傍探索をサポートするように設計されています。, R木はユークリッド距離だけでなく、他の距離でも使用できます。

一般的な距離空間の場合、分岐限界アプローチは距離木アプローチとして知られています。 特定の例vp-ツリー、BK-ツリーます。

3次元空間から取られた点の集合を用いてBSPツリーに入れ、同じ空間から取られたクエリ点が与えられると、クエリ点に最も近い点群点を見つける問題に対する可能な解決策は、アルゴリズムの以下の説明で与えられる。, (厳密に言えば、そのような点は一意ではないかもしれないので、存在してはならない。 しかし、実際には、通常、与えられたクエリ点までの最短距離に存在するすべての点群点のサブセットのいずれかを見つけることだけを気にします。)アイデアは、ツリーの分岐ごとに、クラウド内の最も近い点がクエリポイントを含む半空間にあると推測することです。 これはそうではないかもしれませんが、それは良い発見的です。, 推測された半空間の問題を再帰的に解決した後、この結果によって返される距離を、クエリポイントから分割平面までの最短距離と比較します。 この後者の距離は、クエリポイントと半空間内に存在する可能性のある最も近い可能なポイントとの間で検索されないことである。 この距離が以前の結果で返された距離よりも大きい場合、他の半分のスペースを検索する必要は明らかではありません。, そのような必要がある場合は、残りの半分のスペースの問題を解決するのに苦労し、その結果を元の結果と比較してから、適切な結果を返す必要があ このアルゴリズムのパフォーマンスは、クエリポイントが雲の近くにあるときの線形時間よりも対数時間に近くなります。,

近似法編集

近似最近傍探索アルゴリズムは、クエリからの距離が最大c{\displaystyle c}にクエリから最近傍点までの距離を掛けたものである点を返すことができる。 このアプローチの魅力は、多くの場合、近似最近傍が正確なものとほぼ同じくらい良いということです。 特に、距離測定がユーザ品質の概念を正確に捉えるならば、距離の小さな違いは重要ではないはずである。,

近接近傍グラフにおける貪欲な探索編集

この方法は、近接近傍グラフG(V,E){\displaystyle G(V,E)}における貪欲な探索に基づいており、すべての点x i∈S{\displaystyle x_{i}\in S}が頂点v i∈V{\displaystyle v_{i}\in V}に一意に関連付けられている。 集合Sにおけるクエリqへの最近傍探索は、グラフG(V,E){\displaystyle G(V,E)}の頂点を探す形式をとる。,基本的なアルゴリズムである貪欲な探索は次のように機能する:検索は、クエリqからその近傍の各頂点までの距離を計算することによって、入り口の頂点v i∈V{\displaystyle v_{i}\in V}から始まり、{v j:(v i,v j)∈E}{\displaystyle\{v_{j}:(v_{i},v_{j})\in E\}}、そして最小距離値を持つ頂点を見つける。 クエリと選択された頂点との間の距離値が、クエリと現在の要素との間の距離値よりも小さい場合、アルゴリズムは選択された頂点に移動し、新し, このアルゴリズムは、頂点そのものよりもクエリに近い頂点が近傍に含まれていない頂点に達すると停止します。

近接近傍グラフのアイデアは、AryaとMountによる独創的な論文、平面のVoroNetシステム、E n{\displaystyle\mathbb{E}^{n}}のRayNetシステム、距離関数を持つ空間の一般的な場合のMetrized Small WorldおよびHNSWアルゴリズムなど、複数の出版物で利用された。, これらの作品は、彼が相対近傍グラフの概念を導入したトゥーサンによる先駆的な論文が先行していた。

局所性敏感ハッシング編集

局所性敏感ハッシング(LSH)は、点に対して動作するある距離計量に基づいて、空間内の点を”バケット”にグループ化する 選択したメトリックの下で互いに近いポイントは、高い確率で同じバケットにマッピングされます。,

固有次元が小さい空間における最近傍探索編集

カバーツリーには、データセットの倍加定数に基づく理論上の境界があります。 検索時間の境界はO(c12log n)です。cはデータセットの展開定数です。

投影放射状探索編集

データが幾何学的点の密な3Dマップである特別な場合には、センシング技術の投影幾何学を使用して、探索問題を劇的,このアプローチでは、3dデータが二次元グリッドへの投影によって編成され、オブジェクトの境界を除いて隣接するグリッドセル間でデータが空間的に滑らかであることを前提としています。これらの仮定は、測量、ロボット工学、ステレオビジョンなどのアプリケーションで3Dセンサーデータを扱う場合に有効ですが、以下のような未組織のデータgeneral.In 実際この手法は、実世界の立体視データに適用された場合、k最近傍問題に対して平均探索時間O(1)またはO(K)を有する。,

ベクトル近似ファイル編集

高次元空間では、ノードの割合が増えるため、ツリーインデックス構造は役に立たなくなります。 線形検索を高速化するために、RAMに格納されている特徴ベクトルの圧縮バージョンを使用して、最初の実行でデータセットを事前フィルタリングします。 最終候補は、距離計算のためにディスクからの非圧縮データを使用して第二段階で決定される。,

圧縮/クラスタリングベースの検索編集

VAファイルアプローチは、各特徴コンポーネントが一様かつ独立して圧縮される圧縮ベースの検索の特別な 多次元空間における最適圧縮手法は,クラスタリングによって実装されるベクトル量子化(VQ)である。 データベースがクラスタ化され、最も有望なクラスタが取得されます。 巨大な利益を超VA-ファイルをツリーに基づく指数の一連のスキャンして認められています。 クラスタリングとLSHの類似点にも注意してください。