エントリ 0、1、2 を持つ長さ 12 のベクトルの空間を検索しています。たとえば、そのようなベクトルの 1 つは
001122001122 です。約 1000 個の良いベクトルと約 1000 個の悪いベクトルがあります。悪いベクトルごとに、最も近い良いベクトルを見つける必要があります。2 つのベクトル間の距離は、一致しない座標の数です。優れたベクトルは特にうまく配置されているわけではなく、それらが「優れている」理由はここでは役に立たないようです。私の主な優先事項は、アルゴリズムが高速であることです。
単純な徹底的な検索を行うと、約 1000*1000 の距離を計算する必要があります。かなり頭が固いようです。
最初に適切なベクトルを使用して Dijkstra のアルゴリズムを適用すると、空間内のすべてのベクトルに対して最も近いベクトルと最小距離を計算できるため、悪いベクトルごとに簡単なルックアップが必要になります。しかし、空間には 3^12 = 531,441 個のベクトルがあるため、事前計算は 50 万回の距離計算になります。あまり節約できません。
より良い方法を考えるのを手伝ってもらえますか?
編集: 人々が彼らを「良い」ものにする理由を真剣に尋ねたので: 各ベクトルは、立方体の 3D 配置の 2D 画像である 6 つの正三角形の六角形の図の説明を表します (一般化された Q-bert を考えてください)。正三角形は、立方体 (45-45-90) の面の半分であり、遠近法に傾いています。座標のうち 6 つは三角形の性質 (知覚される床、左の壁、右の壁) を記述し、6 つの座標は辺の性質 (知覚される連続性、知覚される 2 種類の不連続性) を記述します。1000 個の適切なベクトルは、立方体を遠近法で見たときに確認できる六角形を表すものです。検索の理由は、三角形でいっぱいの 16 進マップにローカル補正を適用することです...