順不同リストを与えられた未知の値


19

誰でも次の問題で私を助けることができますか?

私はいくつかの値を検索したいai,bj(MOD Ni=1,2,,K,j=1,2,,K(例えばK=6のリスト与え、)K2という値具体的な対応関係を知らずに、差aibj(modN)(たとえばN=251)に対応します。値以来ai,bj(modN)一意に違い与え定義されていないaibj(modN)、我々は探して任意の 値の有効割り当て。

間違いなく、リスト内のK2数の各順列を試して(合計K2!場合)、変数としてai,bjを使用してモジュラー方程式を解くことは実行不可能です。

実際、この問題はNTRU署名スキームの初期バージョンへの暗号解読に関する論文(http://eprint.iacr.org/2001/005)で発生します。しかし、著者は「単純なバックトラックアルゴリズムが1つのソリューションを見つける」という文(3.3節)を1つだけ書いたので、だれかがさらに説明できますか?さらに、著者は「すべての循環シフト{((ai+M)modN,(bi+M)modN}i=1Kまたはスワップ({(N1bi,N1ai)}i=1K)a_i-b_j \ mod Nと同じパターンにaibjmodNなります。このステートメントは役に立ちますか?


7
a_i、b_jを回復することは不可能であることに注意してai,bjください。すべての数値に定数Cを追加すると、差は変わらないためです。
ユヴァルフィルマス

1
@Yuval:これはすでに説明の最後の文に含まれています。いくつかのソリューションが存在する可能性があるため、必要なソリューションは1つだけだと思います。
domotorp

2
@Yuval ai,bjもモジュラーNにする必要があることを指摘していないため申し訳ありませんN。したがって、無限の解決策はありません。
ゲスト

@domotorpはい、いずれかの解決策を見つけても大丈夫です。
ゲスト

1
おそらく、OPはaibjがポストの前のNを法としてとられることを明確にすることができNます:おそらくタイトルまたは最初の段落で。定数Cの問題Cも言及する価値があります。私が読み始めたとき、両方のことが私を混乱させました。
フアンベルメホベガ

回答:


4

および提案を次に示します。リストが与えられます。一般性を失うことなく、それらの1つを取得することから始めます。一般性を失うことなく、そしての値を取得します。今では、フォームであることを別のものを取る、と希望(これは確率で起こる、およびを推論)。N = 251 a ib jK=6N=2511 - B 1 、B 1 = 0 1 2 - B 1 5 / 35 = 1 / 7 2aibj(modN)a1b1b1=0a1a2b15/35=1/7a2

この段階では、わかっています。次の目標は、を探すことです。各候補について、場合、もリストに含まれている必要があります。場合、もリストにあるはおよそです。そのため、もリストにある候補が見つかった場合、おそらくです。このようにして、を確実に回復できます。a 1b j j 1 a ib j i = 1 a ib j+ a 2a 1= a 2b j i 1 a ib j+ a 2aa1,a2,b1a1bjj1aibji=1(aibj)+(a2a1)=a2bji133 / 251 I - のB JI - のB J+ 2 - 1iが= 1 、Bを2(aibj)+(a2a1)33/251aibj(aibj)+(a2a1)i=1b2

この段階では、わかっています。を回復したのと同じ方法で、合理的な確実性でを回復できます。次に、と両方がリストにある候補を探すことにより、を回復できます。より多く s があるため、障害の確率はかなり低下します。続けてます。b 2 a 3 b 3 a ib ja ib j+ a 2a 1a ib j+ a 3a 1a b 3a 4b 4a1,a2,b1,b2b2a3b3aibj(aibj)+(a2a1)(aibj)+(a3a1)ab3,a4,b4,a5,b6,a6,b6

このアルゴリズムの任意の時点で、何か間違ったことを推測した可能性があり、これにより最終的に矛盾が生じます(ある時点で、良い候補がありません)。その後、バックトラックして別の可能性を試します。すべての可能性を使い果たした場合、バックトラックし、別の可能性を試みます(アルゴリズムの異なる段階で)。等々。aibj

このアルゴリズムを実際にプログラムするのは良い練習です-バックトラックを正しく実装する方法を理解する唯一の方法でしょう。これは、このアルゴリズムが実際に機能するかどうかを判断する唯一の方法でもあります。


ありがとうございます。このバックトラッキングをコーディングして、理解を深めます。元の論文の著者は、「バックトラック」にも言及しているため、同様の方法を使用した可能性があります。
ゲスト

あなたの答えに私のコメントを投稿するのを忘れてすみません!また、提案されたメソッドを(C ++で)実装しました。結論は、アルゴリズムが非常にうまく機能し、解決策の1つが非常に高速に(私のPCで1秒未満で)見つかるということです。今回は、バックトラック手順をよりよく理解できます。どうもありがとうございました!
ゲスト

最後のコメントで「@Yuval」ができないのはなぜですか?!申し訳ありませんが、何度か試しました。
ゲスト

コードをオンラインで共有して、論文を読んでいる他の人がアクセスできるようにすることもできます。
ユヴァルフィルマス

5

更新以下の説明は、異なる問題(2つの異なるセット間のペアワイズ距離ではなく、セット内のすべてのペアワイズ距離がある問題)に関するものです。それは密接に関連しているので、とにかくそれを残します。

この問題はベルトウェイ問題と呼ばれ、一般的なトーラス埋め込み問題の特殊なケースです。また、ターンパイク問題と密接に関連しています。ターンパイク問題では、距離の差は絶対的です(モジュロではなく)。d

環状道路問題がポリタイムアルゴリズムを認めるかどうかは不明です。関連する質問には、さまざまな擬似ポリタイムアルゴリズムがあります。最良のリファレンス(古いものもあります)は、Lemke、Skiena、Smithの論文です。


1
この問題は違うと思います。ベルトウェイ問題では、すべてのペアワイズ距離を知っています。ここでは、異なるグループにある2つのポイント間の距離のみを知っています。これは情報量が少ないように見えますが、実際には問題の解決に役立ちます。
domotorp

ああ、はい。二部グラフです。いい視点ね。
Suresh Venkat

二部グラフ?何かのようなもの。この方法で問題を試す必要があるかもしれませんが、今は具体的な考えがありません。
ゲスト

3

ここに、問題を解決するのに十分な足場となると思われる観察結果があります。

私たちは4つの違いがあると、、、 2間のペアワイズの違いとして生じるさんと2さんを。これをカルテットの違いと呼びます。重要な関係があることに注意してください。a 1b 2 a 2b 1 a 2b 2 a ba1b1a1b2a2b1a2b2ab

(a1b1)(a1b2)=(a2b1)(a2b2)(modN).

この関係を使用して、リストから潜在的なカルテットを特定することができます。たとえば、リストから4つの違いを選択します。上記の関係を満たさない場合は、カルテット構造から生じることはありません。それらが関係を満たす場合、カルテットから生じる可能性があります。K2

ここからいろいろな方法がありますが、これで十分だと思います。

パラメータ設定の例では、上記のカルテットを認識するテストはおそらくあまり多くの誤検出をしないため、問題は非常に簡単になると私は特に疑っています。リストから4つの違いを選択するすべての方法のうち、四重奏(すべての関係を満たす)があり、残りは非四重奏(満足する)です。確率との関係(発見的)。したがって、誤検出、つまり、4組ではなくてもテストに合格する4タプルが表示されることが予想されます。パラメータについては、これは225四重奏とがあることを意味します K(K24)1/NK2(K2)21/N58905-225/251234((K24)(K2)2)/N(58905225)/251234その他の誤検知; そのため、テストに合格する4タプルの約半分は実際には4組です。これは、上記のテストがカルテットを認識するための非常に良い方法であることを意味します。カルテットを認識できたら、違いのリストの構造を回復するために実際に町に行くことができます。


@DW:ありがとうございますが、可能性のあるすべてのカルテット(合計225 + 234 = 459の1つ)が見つかった後、次のステップを考えています。3つの非重複カルテットを検索し、それらが可能なソリューションを構成できるかどうかをテストする必要がありますか これを効率的に達成する方法は?重複はあまりないので、それほど難しくないかもしれません。
ゲスト

@aguest、良い質問です!当時何を考えていたか思い出せません。私は、私は1つのアプローチを考えること(から生じる、例えば2つの違いでそれをオーバーラップする他のすべてを探して、その後、1つのカルテットで開始することができ思い出すと思うどこ)が、私はしないでくださいそこからどこに行くかを知る(誤検知を除外する方法)。 j 2a1,aj,b1,b2j2
DW

3

現れない数字を繰り返し見つけることに基づく、別のアプローチがあります。セットのコールの過剰近似私たちがいることを知っている場合のを。同様に、ことがわかっている場合、はのです。明らかに、が小さいほど、この過剰近似はより有用であり、についても同じことがます。私のアプローチは、これらの過剰近似を繰り返し改良すること、つまり、これらのセットのサイズを反復的に縮小することに基づいています(より多くの値を不可能として除外するため)。A a {{a1,,a6}AaBのB { B 1... B 6 } B A B{a1,,a6}ABb{b1,,b6}BAB

このアプローチの核心はするための方法であって、改良:過近似所与のためのさんとオーバー近似ための s 'は、新たな過近似見つけるためののように。具体的には、通常、より小さくなりますこれは私たちがために過近似絞り込むことができますので、さんを。B B A * A *A A * AのAAaBbAaAAAAa

対称性によって、本質的に同じトリックは、私たちは私たちの過近似絞り込むようになるさんが:過近似与えられたに対してさんとオーバー近似のためのさん、それは新しいオーバーを生成しますの場合、近似。A a B b B bbAaBbBb

それでは、どのように改良を行うかを教えてください。その後、すべてをまとめてこの問題の完全なアルゴリズムを取得します。以下では、が複数の差のセットを示すものとします。つまり、です。与えられ、洗練された過剰近似を見つけることに焦点を当てます。D = { I - BのJ1 I J 6 } A * A BDD={aibj:1i,j6}AA,B

洗練を計算する方法。 単一の差考えます。セット考えます。はの過剰近似であるという知識に基づいて、少なくとも1つの要素が要素でなければならないことがます。したがって、各要素を、含まれる可能性のある数値の「提案」として扱うことができます。それでは、すべての差をスイープし、それぞれについて、どの数字がによって「推奨」されるかを特定しましょう。、D + B = { D + Y Y B } BdDd+B={d+y:yB}BD + B { 1... 6 } D + B A D D Dbd+B{a1,,a6}d+BAdDd

ここで、このプロセス中に少なくとも1回、数字が提案されることを確認します。どうして?差はにあり、それを処理するとき、は示唆する数値の1つになります(、は必ずが含まれることが保証されているため)。同様に、差はどこかに現れ、が再び提案されます。このようにして、の正しい値が少なくとも6回提案されることがわかります。同じことが、およびも当てはまります1 - B 1 D 1件のB 1B 1 - B 1+a1a1b1Da1b1B1 1 - 、B 2 D 1 1 2 3(a1b1)+Ba1a1b2Da1a1a2a3、 等々。

したがって、を少なくとも6回提案された数値セットとします。上記のコメントによると、これは必ずの過大評価になります。a aAaa

最適化として、に存在しないすべての提案をすぐに除外できます。つまり、差をすべての値を提案するものとして扱うことができます。これにより、が確保されます。が厳密によりも小さいことを期待しています。保証はありませんが、すべてがうまくいけば、おそらくうまくいくでしょう。D D + B A A *A A * AAd(d+B)AAAAA

これをまとめると、を改良してを生成アルゴリズムは次のとおりです。A A,BA

  1. ましょう。これは複数の提案です。S=dD(d+B)A

  2. 各値が表示される回数をカウントします。してみましょう中に少なくとも6回表示される値の集合。(これは、アレイ構築することによって効率的に実現することができるゼロ最初全て、最初に251を、その数毎時間提案されているが、あなたが増分、終了時に、あなたはを通じて掃引値が6以上である要素を探し大きい)A S a s a [ s ] aSASasa[s]a

Aを改良してを取得する同様のメソッドを構築できます。基本的に上記のことを逆にして、いくつかの兆候を反転させます。たとえば、代わりにを見ます。B d + B d + AA,BBd+Bd+A

初期の過剰近似の計算方法。最初の過剰近似を取得するための1つのアイデアは、と仮定(wlog)することです。その結果、各値はどこかに現れる必要があるため、差のリストはの初期の過剰近似として使用できます。残念ながら、これはの非常に有用な過剰近似を与えません。a i D D a bb1=0aiDDab

より良い方法は、のいずれかの値をさらに推測することです。つまり、(wlog)と仮定し、の初期の過剰近似としてを使用します。次に、これらの36個の値のどれが実際にの1つであるかを推測します(。これにより、の近似られます。この初期過近似を使用してから、収束するまで繰り返し改良し、結果が正しいかどうかをテストします。動作するものが見つかるまで、で36の異なる推定値(平均6つの推定値で十分です)で最大36回繰り返します。b 1 = 0 A = D aab1=0A=Daa 1 B = a 1D b A B a 1aa1B=a1DbA,Ba1

完全なアルゴリズム。 これでを計算する完全なアルゴリズムを使用できます。基本的に、と初期の過剰近似を導き出し、その後繰り返し改良します。 A Ba1,,a6,b1,,b6AB

  1. 推測する:各について、と推測します。以下をせよ:A 1 = ZzDa1=z

    1. 初期の過剰近似:および定義します。B = z DA=DB=zD

    2. 反復的な改良:収束するまで以下を繰り返し適用します。

      • を調整して、の新しい近似を取得します。B bA,BBb
      • 絞り込み新しい過近似取得するのさんを。A aA,BAa
      • レッツおよび。 B = B A:=AB:=B
    3. 成功の確認:結果セットサイズがそれぞれ6である場合、それらが問題の有効な解決策であるかどうかをテストします。もしそうなら、停止します。そうでない場合は、候補値に対するループを続行します。zA,Bz

分析。 これは機能しますか?最終的におよびにしますか、または問題を完全に解決せずにスタックしますか?見つけるための最良の方法は、おそらくそれをテストすることです。ただし、パラメータについては、はい、効果があると思います。B = { b 1b 6 }A={a1,,a6}B={b1,,b6}

メソッド#1を使用する場合、大きすぎず、発見的に、セットのサイズが単調に縮小すると予想します。からを導出することを検討してください。各差は示唆します 値; それらの1つは修正され、もう1つは(発見的)乱数として扱うことができます。場合は間に表示されていない数であるさんは、確率は、それがフィルタリングを生き残り、に追加されていることを何である?さて、についてが提案されることを期待ています。A A B d | B | | B | 1 x a A a | B |1 × 36 / 251 | B | 36 、X 、P = 0.4 | B | | B | = 30 P 0.25 A * P|A|,|B|AA,Bd|B||B|1xaAa(|B|1)×36/251合計で(平均で、その平方根についての標準偏差で)回。場合、間違ったがフィルタリングに耐える確率は約程度である必要があります(2項式の正規近似と連続性補正を使用)。(が小さい場合、確率は小さくなります。たとえば、場合、を期待します。)サイズは約になると思います。、より厳密に小さいため、過近似を厳密に改善します。たとえば、場合、これらのヒューリスティックに基づいて期待しています|B|36xp=0.4|B||B|=30p0.25A| A | | A | = | B | = 36 | A | 18 | A |p(|A|6)+6|A||A|=|B|=36|A|18、これはよりも大幅に改善されています 。|A|

したがって、実行時間が非常に高速になると予測しています。通常、収束には3〜5回の洗練の反復で十分であり、約6回の推測で十分であると予想されます。各改良操作には、おそらく数千のメモリ読み取り/書き込みが含まれ、おそらく20〜30回行います。そのため、指定したパラメーターに対して、これは非常に高速になると予想されます。ただし、確実に確認する唯一の方法は、試してみて、うまく機能するかどうかを確認することです。z


@DW:長い回答と、たくさんの単語を入力するために行った努力に感謝します!!! あなたの説明によると、ここでのアルゴリズムはかなり正しいです。そして、今すぐ効率をテストするためにコーディングします。
ゲスト

@DW:こんにちは、C ++で説明を実装しました。アルゴリズムは高速で実行され、改良ステップは元のセットおよびサイズを縮小します。ただし、収束はそれほど完璧ではないようです。実際、各推測について、プログラムによる私のレコード出力によると、との最終サイズはまだ10を超えています。(および)をさらに洗練を繰り返しても改善できない場合、既存の要素の最も多い数は11ですが、10未満の数はほとんど見られません。から選ばれた6要素BのZ D A * B * A * B *ABzDABAB
ゲスト

@DW:(続き)各推測に対する最終および(ただし、PCに最後のステップを実装しませんでした)。合計金額の計算は約になると推定します。どうもありがとうございました!B z 2 20ABz220
ゲスト

申し訳ありませんが、最後のコメントが長すぎて、2つに分割する必要があります。
ゲスト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.