问题标签 [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.

0 投票
3 回答
1021 浏览

algorithm - 资源放置(最佳策略)

我知道这不是问这个问题的正确地方,但也许一个聪明的人会遇到并有解决方案。

我正在尝试编写一个电脑游戏,我需要一个算法来解决这个问题:

游戏在 2 名玩家之间进行。每边有 1.000 美元。共有三个“盒子”,每个玩家写下他要放入这些盒子的金额。然后比较这些数量。谁把更多的钱放在一个盒子里,谁得 1 分(如果每人抽半分)。谁得分多,谁就赢得他的对手 1.000 美元。示例游戏:

玩家 A: [500, 500, 0] 玩家 B: [333, 333, 334]

玩家 A 获胜,因为他赢得了 Box A 和 Box B(但输掉了 Box C)。

问题:放置资金的最佳策略是什么?

我还有更多问题要问(与算法相关,与数学无关),但我需要先知道这个问题的答案。

更新(1):经过更多研究,我了解到这些类型的问题/游戏被称为Colonel Blotto Games。我尽了最大的努力,发现关于这个主题的(高度技术性的)文档很少。简而言之,我遇到的问题(如上所述)被称为简单的 Blotto 游戏(只有三个具有对称资源的战场)。困难的是那些拥有 10 多个非对称资源的战场。我读过的所有文件都说简单的 Blotto 游戏很容易解决。问题是,他们都没有真正说出那个“简单”的解决方案是什么。

更新(2):我写了一个小的 actionscript 文件来演示 Tom Sirgedas 提到的论文中的策略。您可以在megaswf对其进行测试。说明:单击三角形内的一个点。红色区域代表获胜案例。蓝色区域代表失败案例,白色细线代表平局。

0 投票
1 回答
2430 浏览

matlab - Matlab中的离散函数

我有以下功能和一组值:

我需要确定z(n×Ts) = z(n),使用采样周期Ts=0.01,因此离散化函数。

我尝试使用 d2d,但据我所知,只能应用于 zpk 函数。

还有其他方法吗?

0 投票
2 回答
1280 浏览

math - 偏序 - 有限集 - 最小元素

归纳证明非空有限集上的每个偏序至少有一个最小元素。

该如何 解决这个问题?

0 投票
1 回答
16377 浏览

math - 将“既不……也不”翻译成数学逻辑表达式

在翻译既不复杂也不复杂的句子时遇到一些困难。

使用这些字符:

我正在尝试翻译和理解,例如:

“约翰和玛丽都没有站在吉姆或卡里的面前”

有人告诉我,“e 和 a 都不在 c 的右侧”的成功翻译如下:~(RightOf(e, c) V RightOf(e, c))

不如只翻译一下:“我既不喜欢巧克力也不喜欢香草”

〜(喜欢(巧克力)V喜欢(香草))

任何值得深思的食物将不胜感激。

0 投票
2 回答
1653 浏览

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]}。我想要一个算法来找到一个 P 使得相应的 U 是一个分区,并且使得 U 的最小和最大元素之间的基数(即大小)差异最小化。

数据特征:

  • m 很小(2 到 5)且 n<10000
  • 通常,A 中有很大比例的一元集
  • A 中的成对集合之间的交点通常很小或为空
0 投票
6 回答
1199 浏览

language-agnostic - [0.0, 1.0) 范围内双精度的唯一值总数是多少?

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) 范围内双精度的唯一值总数是多少?

如果你能告诉我“大”可以取的最大值是多少,这样“答案”可以是 [0,big) 范围内的一个值,以及“答案”的值的分布是否均匀,那就更好了,假设Random.NextDouble() 是统一的。

编辑:这里的 Double (double) 指的是 IEEE 754 浮点双精度,而 Int64 (long) 和 Int32 (int) 分别指的是 64 位和 32 位有符号 2 的补码。


受这个问题的启发:Generating 10 digits unique random number in java

当我使用 C# 时,这个问题与语言无关,更多的是关于离散数学而不是编程,但它困扰我的主要不是数学上的好奇心,而是一个程序员想要使用公式,只有当它做它的时候应该这样做,并且从安全的角度来看。

0 投票
4 回答
1062 浏览

math - 带有连接的常规语言

常规语言在操作下关闭:

init(L) = 字符串 w 的集合,使得对于某些 x,wx 在 L 中。

编辑: x 可以是任何字符串、字符或空字符串我如何证明这一点?

0 投票
3 回答
12537 浏览

algorithm - 请向我解释以下问题的解决方案

问题:

考虑将两个 n 位二进制整数相加的问题,存储在两个 n 元素数组 A 和 B 中。两个整数的和应以二进制形式存储在 (n + 1) 元素数组 C 中。说明问题正式并编写用于添加两个整数的伪代码。

解决方案:

  1. C ← [1 ... n + 1] ▹ C 是零填充的。
  2. 对于 i ← 1 到 n
  3. 求和 ← A[i] + B[i] + C[i]
  4. C[i] ← 总和 % 2
  5. C[i + 1] ← sum / 2 ▹ 整数除法。
  6. 输出 C

问题:

  1. 我认为 C[i] 是 A[i]+B[i] 为什么在步骤 3 中添加 sum ← A[i] + B[i] + C[i] ?
  2. 为什么 sum % 2 (为什么需要在步骤 4 中使用模数?)
  3. 为什么 sum / 2 (为什么需要在步骤 5 中使用除法?)

你能用真实的例子解释一下上述解决方案吗?谢谢。

0 投票
5 回答
133 浏览

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 以及哪种会为大值提供“最线性”类型的映射?

0 投票
1 回答
3056 浏览

java - 如何在java中生成离散对数

我正在为 java 寻找一个简短的算法,这将有助于在循环组 Z*p 中找到 LOGa(x)。我的方法

将是 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 我这样说对吗?