标签: discrete-mathematics

mathematica等程序如何绘制图表以及如何制作这样的程序?

我一直想知道像mathematica和mathlab等程序如何优雅而快速地绘制函数图.任何人都可以向我解释他们是如何做到这一点的,而且,我怎么做到这一点?它与计算机编程或数学的方面或课程有关吗?然后呢?

math graphics matlab wolfram-mathematica discrete-mathematics

8
推荐指数
1
解决办法
1296
查看次数

双精度值在[0.0,1.0]范围内的唯一值总数是多少?

Random.NextDouble()(一个从双[0.0,1.0的范围内))有时具有大的Int64相乘(让大的Int64 = 9000000000L),并且将结果地板以获得随机的Int64值比可以从随机获得较大.Next()(范围为[0,Int32.MaxValue)的Int32).

Random r = new Random();
long big = 9000000000L;
long answer = (long) (r.NextDouble() * big);
Run Code Online (Sandbox Code Playgroud)

在我看来,在[0.0,1.0]范围内Double的唯一值的总数提供了它可能生成的唯一Int64的数量的上限.事实上,一个松散的上限,因为许多不同的双打将映射到相同的Int64.

因此,我想知道:在[0.0,1.0]范围内,double的唯一值总数是多少?

如果你可以告诉我"大"可以采取的最大值是什么,以便"回答"可以是范围[0,大]的值,以及"回答"的值的分布是否均匀,假设Random.NextDouble()是统一的.

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


灵感来自这个问题:在java中生成10位唯一随机数

虽然我使用C#,这个问题是语言无关,更多的是离散数学不是编程,但它困扰我不主要是从数学的好奇感,但是从想使用一个公式,只有当它做什么它一个程序员应该从安全角度来做.

language-agnostic random floating-point discrete-mathematics

8
推荐指数
2
解决办法
714
查看次数

PHP采用所有组合

我看到这个算法将采用数字或单词并找到所有可能的组合

我正在使用它,但它不会返回所有"真正的"组合.

PHP:

<?php
    require_once 'Math/Combinatorics.php';
    $words = array('cat', 'dog', 'fish');
    $combinatorics = new Math_Combinatorics;
    foreach($combinatorics->permutations($words, 2) as $p) {
        echo join(' ', $p), "\n"; 
    }
?>
Run Code Online (Sandbox Code Playgroud)

它返回:

cat dog
dog cat
cat fish
fish cat
dog fish
fish dog
Run Code Online (Sandbox Code Playgroud)

但这些都不是真正的组合,所有真正的组合也包括这些:

cat cat
dog dog
fish fish
Run Code Online (Sandbox Code Playgroud)

这就是我需要的,获得所有真实组合的方法:

cat dog
dog cat
cat fish
fish cat
dog fish
fish dog
cat cat
dog dog
fish fish
Run Code Online (Sandbox Code Playgroud)

php algorithm combinations combinatorics discrete-mathematics

8
推荐指数
1
解决办法
4567
查看次数

枚举所有部分订单

如何有效地枚举有限集上的所有偏序?

我想检查是否存在具有指定属性的部分订单.为了检查这一点,我将用蛮力来枚举小有限集上的所有可能的偏序.

algorithm math discrete-mathematics poset

8
推荐指数
1
解决办法
582
查看次数

如何在scipy中使用离散变量值最小化函数

我正在尝试优化具有多个输入变量(24到30之间)的目标函数.这些变量是三个不同统计变量的样本,目标函数值是t检验概率值.误差函数表示期望和实际t检验概率之间的误差(差的平方和).对于所有三个t检验,我只能接受误差小于1e-8的解决方案.

我正在使用scipy.optimize.fmin它,效果很好.有许多目标函数变为零的解决方案.

问题是我需要找到一个解决方案,其中变量介于0和10.0之间,并且是整数或不具有多个数字小数部分.有效值的示例是0 10 3 5.5 6.8.无效值的示例:-3 2.23 300.16666667.

我碰巧知道至少有一种解决方案,因为目标值来自实际测量数据.原始数据丢失了,我的任务是找到它们.但我不知道怎么做.使用试验/错误不是一种选择,因为每个变量有大约100个可能的值,并且给定变量的数量,可能的情况的数量将是100**30,这太多了.使用fmin很棒,但它不适用于谨慎的值.

有办法解决这个问题吗?如果我需要运行一个程序数小时才能找到解决方案,这不是问题.但是我需要在几天内找到大约10个目标值的解决方案,而且我没有新的想法.

这是一个MWE示例:

import math
import numpy
import scipy.optimize
import scipy.stats
import sys

def log(s):
    sys.stdout.write(str(s))
    sys.stdout.flush()

# List of target T values: TAB, TCA, TCB
TARGETS = numpy.array([
    [0.05456834,   0.01510358,    0.15223353   ],  # task 1 to solve
    [0.15891875,   0.0083665,     0.00040262   ],  # task 2 to solve
])
MAX_ERR = 1e-10 # Maximum error in T values
NMIN,NMAX = 8,10 # Number of …
Run Code Online (Sandbox Code Playgroud)

python math numpy discrete-mathematics scipy

8
推荐指数
1
解决办法
5966
查看次数

用于查找最小组件集合的算法

我正在寻找一种算法来解决以下问题.我有一组给定集合(ah)的子集(1-n).我想找到最小的子集合,这些子集将允许我通过组合构造所有给定的子集.此集合可以包含1-n中不存在的子集.

  a b c d e f g h
1 1
2 1   1
3   1     1   1
4 1       1
5   1         1
6 1     1   1   1
7 1       1 1   1
8 1   1       1
9 1         1   1
Run Code Online (Sandbox Code Playgroud)

下面是两个可能的集合,其中最小的集合包含七个子集.我用x表示了新的子集.

1 1
x   1
x     1
x       1
x         1
x           1
x             1
x               1

1 1
x   1         
x     1
x       1        
x         1    
x           1   1
x             1
Run Code Online (Sandbox Code Playgroud)

我相信这一定是一个已知问题,但我对算法并不熟悉.非常感谢任何帮助,以及更好的主题标题的建议.

谢谢!

更新

图形着色让我走了很长的路,谢谢.但是,在我的情况下,允许子集重叠.例如:

  a b …
Run Code Online (Sandbox Code Playgroud)

algorithm combinations graph-theory mathematical-optimization discrete-mathematics

8
推荐指数
2
解决办法
302
查看次数

使用scipy.signal.welch找不到合适的能量

对于x(t)具有间距dt(等于1/fs,fs即采样率)的给定离散时间信号,能量为:

E[x(t)] = sum(abs(x)**2.0)/fs
Run Code Online (Sandbox Code Playgroud)

然后我做了一个DFT x(t):

x_tf = np.fft.fftshift( np.fft.fft( x ) ) / ( fs * ( 2.0 * np.pi ) ** 0.5 )
Run Code Online (Sandbox Code Playgroud)

并再次计算能量:

E[x_tf] = sum( abs( x_tf ) ** 2.0 ) * fs * 2 * np.pi / N
Run Code Online (Sandbox Code Playgroud)

(这里因子fs*2*np.pi/N=脉动间距dk,文档fftfreq提供了有关频域间距的更多细节),我有相同的能量:

E[x(t)] = E[x_tf]
Run Code Online (Sandbox Code Playgroud)

但是...当我计算的功率谱密度x(t)使用scipy.signal.welch,我无法找到合适的能量.scipy.signal.welch返回频率f和能量的矢量Pxx(或每个频率的能量,取决于scaling我们在参数中输入的能量scipy.signal.welch).

我怎样才能找到E[x(t)]和 …

python signal-processing numpy fft discrete-mathematics

8
推荐指数
1
解决办法
6007
查看次数

删除最小边数以断开图中的两个顶点

在这里,我试图以最小的边缘去除来断开图中的两个顶点。

示例图 在此图形中,在两个顶点AZ之间,您可以找到很多答案。以最佳方式,您可以从AB仅移除一条边。

是否有针对此的特定算法?

我发现了一些使用最大流量最小割定理解决此问题的建议,但我并没有获得将这个问题转换为最大流量最小割定理的一般想法。同样,在此过程中,我可能最终会删除FG之间无用的边缘。

java algorithm graph discrete-mathematics

8
推荐指数
1
解决办法
1406
查看次数

具有并行性的置换奇偶性

我有一个长度为 N 的整数数组,其中包含值 0, 1, 2, .... (N-1),表示整数索引的排列。

鉴于我也有 O(N) 的并行计算,确定排列是否具有奇偶校验的最有效方法是什么?

例如,您可以使用并行计算对 log(N) 中的 N 个数字求和。我也希望在 log(N) 中找到排列的奇偶校验,但似乎找不到算法。我也不知道这个“并行计算的复杂度顺序”是如何调用的。

algorithm permutation discrete-mathematics

8
推荐指数
1
解决办法
191
查看次数

资源配置(最优策略)

我知道这不是提出这个问题的正确位置,但也许是一个聪明人遇到并有解决方案.

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

游戏在2名玩家之间进行.每边都有1.000美元.有三个"盒子",每个玩家记下他要放入这些盒子里的钱.然后比较这些数量.谁在一个盒子里放了更多的钱,得分为1分(如果每个人得到半分).获得更多积分的人赢得了对手1.000美元.游戏示例:

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

玩家A获胜是因为他赢得了方框A和方框B(但输掉了方框C).

问题:放钱的最佳策略是什么?

我有更多问题要问(算法相关,而不是数学相关)但我需要首先知道这个问题的答案.

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

更新(2):我写了一个小动作文件来演示Tom Sirgedas提到的论文中的策略.你可以在megaswf测试它.说明:单击三角形内的一个点.红色区域代表胜诉案例.蓝色区域代表丢失的情况,微小的白色线代表抽奖.

algorithm math game-theory discrete-mathematics

7
推荐指数
1
解决办法
927
查看次数