問題タブ [discrete-mathematics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - リソースの配置(最適な戦略)
私はこれがこの質問をするのに正確に正しい場所ではないことを知っています、しかし多分賢い人が出くわして解決策を持っています。
私はコンピューターゲームを書こうとしていますが、この質問を解決するためのアルゴリズムが必要です。
ゲームは2人のプレーヤーの間で行われます。それぞれの側に1.000ドルがあります。3つの「ボックス」があり、各プレーヤーはそれらのボックスに入れる予定の金額を書き留めます。次に、これらの金額が比較されます。ボックスにもっとお金を入れた人は誰でも1ポイントを獲得します(それぞれ半分のポイントを引く場合)。より多くのポイントを獲得した人は、対戦相手に1.000ドルを獲得します。ゲームの例:
プレーヤーA:[500、500、0]プレーヤーB:[333、333、334]
プレーヤーAは、ボックスAとボックスBを獲得したために勝ちました(ただし、ボックスCを失いました)。
質問:お金を入れるための最適な戦略は何ですか?
質問がもっとありますが(数学に関連するのではなく、アルゴリズムに関連する)、最初にこれに対する答えを知る必要があります。
更新(1):さらに調査した結果、これらのタイプの問題/ゲームは大佐ブロットゲームと呼ばれていることがわかりました。私は最善を尽くし、この主題に関する(非常に技術的な)文書をほとんど見つけませんでした。簡単に言えば、私が抱えている問題(上記のとおり)は、単純なBlottoゲーム(対称的なリソースを持つ3つの戦場のみ)と呼ばれます。難しいのは、たとえば、非対称のリソースを持つ10以上の戦場があるものです。私が読んだすべての文書は、単純なBlottoゲームは簡単に解決できると言っています。問題は、それらのどれも実際にその「簡単な」解決策が何であるかを言っていないということです。
更新(2): Tom Sirgedasが言及した論文で、戦略を示すために小さなactionscriptファイルを作成しました。megaswfでテストできます。手順:三角形の内側の点をクリックします。赤い領域は勝利事例を表しています。青い領域は負けたケースを表し、小さな白っぽい線は引き分けを表します。
matlab - Matlabの関数の離散化
私は次の関数と値のセットを持っています:
z(n×Ts) = z(n)
サンプル期間を使用して、機能をTs=0.01
離散化することを決定する必要があります。
d2dを使ってみましたが、理解したことはzpk関数にしか適用できません。
それを行う他の方法はありますか?
math - 半順序-有限集合-最小要素
帰納法によって証明します。空でない有限集合のすべての半順序は、少なくとも1つの最小要素を設定します。
どうすればその質問を 解決できますか?
math - 「どちらでもない」を数式に変換する
複雑な...または文の翻訳を行うのにいくつかの困難があります。
これらの文字で:
私は翻訳して理解しようとしています、例えば:
「ジョンもメアリーもジムもケアリーの前にも立っていない」
「eもaもcの右側にない」の翻訳が成功すると、次のように翻訳されると言われています。〜(RightOf(e、c)V RightOf(e、c))
「チョコレートもバニラも好きではない」という翻訳をするだけではどうでしょうか。
〜(Like(chocolate)V Like(Vanilla))
考えてみてください。
algorithm - セットのセットをほぼ同じサイズのチャンクに分割するためのアルゴリズム?
n 個の有限集合からなる集合 A を考えてみましょう。この集合のメンバーは必ずしも互いに素であるとは限りません。P={P[1], P[2], ..., P[m]} を A の分割とし、1..m の各 i について、U[i] をすべての和集合とするP[i] の要素。したがって、U={U[1], U[2], ..., U[m]}. 対応する U がパーティションであり、U の最小要素と最大要素のカーディナリティ (サイズ) の差が最小になるような P を見つけるアルゴリズムが必要です。
データの特徴:
- m が小さく (2 ~ 5)、n<10000
- 通常、A には 1 要素セットの大きな割合があります。
- A のセットのペア間の交点は通常、小さいか空です
language-agnostic - [0.0、1.0)の範囲のdoubleの一意の値の総数はいくつですか?
Random.NextDouble()([0.0,1.0)の範囲のDouble)に大きなInt64(Int64 big = 9000000000L)を掛けて、結果をフロア化して、Randomから取得できる値よりも大きいランダムなInt64値を取得する場合があります。 .Next()(範囲[0、Int32.MaxValue)からのInt32)。
[0.0、1.0)の範囲のDoubleの一意の値の総数は、生成される可能性のある一意のInt64の数の上限を提供しているように思われます。実際、多くの異なるDoubleが同じInt64にマップされるため、上界と下界は緩くなります。
したがって、知りたいのですが、[0.0、1.0)の範囲のdoubleの一意の値の総数はいくつですか?
「答え」が[0、big)の範囲の値になるように「大きな」が取ることができる最大値と、「答え」の値の分布が均一であるかどうかを教えていただければ、さらに良いでしょう。 Random.NextDouble()は均一です。
編集:ここでのDouble(double)はIEEE 754浮動小数点doubleを指し、Int64(long)とInt32(int)はそれぞれ64ビットと32ビットの符号付き2の補数を指します。
この質問に触発されました:Javaで10桁の一意の乱数を生成します
私はC#を使用しましたが、この質問は言語に依存せず、プログラミングよりも離散数学に関するものですが、主に数学的な好奇心からではなく、数式を使用する場合にのみ数式を使用したいというプログラマーの質問に悩まされています。セキュリティの観点から行うことになっています。
math - 連結のある正規言語
通常の言語は、操作の下で閉じられます。
init(L) = ある x に対して wx が L にあるような文字列 w の集合。
編集: x は、任意の文字列、文字、または空の文字列にすることができます。どうすればそれを証明できますか?
algorithm - 以下の問題の解決策を教えてください
問題:
2 つの n 要素配列 A および B に格納されている 2 つの n ビット 2 進整数を加算する問題を考えてみましょう。2 つの整数の合計は、(n + 1) 要素配列 C に 2 進形式で格納する必要があります。問題を述べてください。正式に、2 つの整数を追加するための擬似コードを記述します。
解決:
- C ← [1 ... n + 1] ▹ C はゼロで埋められます。
- for i ← 1 ~ n
- do sum ← A[i] + B[i] + C[i]
- C[i] ← 合計 % 2
- C[i + 1] ← sum / 2 ▹ 整数除算。
- 出力C
質問:
- C[i] は A[i]+B[i] だと思っていましたが、ステップ 3 で sum ← A[i] + B[i] + C[i] を追加するのはなぜですか?
- なぜ % 2 を合計するのか (なぜステップ 4 でモジュロを使用する必要があるのですか?)
- なぜ sum / 2 (ステップ 5 で除算を使用する必要があるのですか?)
上記の解決策を実際の例で説明していただけますか? ありがとう。
algorithm - セット内の最大整数を見つけることなく、セット内の整数の合計を(0,1)に制限する方法はありますか?
n
私は、数字のセットを持っています{N_1, N_2.....N_n}
N_k
基本的に、すべての合計に対して、正規化/制限された合計の結果を保持する何かをしたい(0,1)
((いくつかで除算するなどf(N_1,N_2..N_n))
ですが、セット内のすべての整数を比較して最大値を見つけたくないので、保持したい)答えは「無次元」なので、たとえばf
の合計にすることはできません。(N_k)^2
これを確実にするための簡単な機能f
または別の方法はありますか?
編集
私はから(0,infinity)
へのすべての可能な合計のマッピングが必要です(0,1)
f = sum
常に1の結果が得られ、合計に比例しないため、機能しません。
各項がメートル単位の長さであると仮定すると...無次元とは、操作の最終結果に単位がないことを意味します。たとえば、2m + 3m /(2m + 1m)= 5/3(単位なし)。
ただし、たとえば、うまくいく可能性のあるかなり明白な答えがありますf = sum +1 or f= sum +2
。これらは合計とともに大きくなり、合計の値が大きい場合は1になる傾向があります。その場合、質問はおそらくより主観的であり、他の種類のfを使用でき、どれが使用できるかがわかります。大きな値に対して「最も線形な」タイプのマッピングを提供しますか?
java - Java内で離散対数を生成する方法
巡回群 Z*p で LOGa(x) を見つけるのに役立つ Java の短くて単純なアルゴリズムを探しています。私の方法
log(prime_number, a, x) になります
これは巡回群 Z*p で LOGaX を計算します。
徹底的な検索でこれを行うにはどうすればよいですか、または簡単な方法はありますか、
そのため、個別のログを理解するのに役立つように、徹底的な検索を行いました。
巡回群 Z*p の LOGaX を返したいのですが、ここでこれを行っていますか、それとも何が欠けていますか?
だから私は今kを返し、徹底的な検索を行っています@pauloEbermann私は何をすべきか理解していませんk=k.multiply(a).mod(p)
私の新しいコードは次のようになります
このテストデータで
したがって、これは k = 99 を返します
これは、log3(34) mod 101 が 99 に等しいことを意味します。これを言うのは正しいでしょうか?