问题标签 [integer-partition]

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 投票
1 回答
2732 浏览

python - 可变数量的依赖嵌套循环

给定两个整数nd,我想构造一个长度为 的所有非负元组的列表dn包括所有排列。这类似于整数分区问题,但解决方案要简单得多。例如 d==3

这可以很容易地扩展到更多维度,例如d==5

我现在想做d一个变量,即嵌套循环的数量,但我不确定如何嵌套循环。

有什么提示吗?

0 投票
0 回答
342 浏览

python - Python中的受限整数分区

我想知道有多少种方法可以仅使用 1、2、5、10、20、50、100 和 200 来制作 500。我知道存在可以解决此类问题的贪婪算法等,但我希望能够通过以下方式做到这一点:

给定数 n 的整数分区数,仅使用某个集合 T 中的数,可以从所有 (1-x t ) -1乘积中的 x n项的系数获得,其中 t 在 T .

为此,请注意 (1-x t ) -1的泰勒展开式等于 (1+x t +x 2t +...)。这是我到目前为止编写的代码:

我的问题是我不确定这个给出的答案是正确的。我已经将它与其他两种贪心算法进行了比较,它们的输出彼此一致,但不是我的。谁能看到我可能出错的地方?

0 投票
0 回答
132 浏览

prolog - 如何转换为定句语法

我正在尝试编写一个明确的子句语法来输出数字的分区。例如?- w(3,L,[])应该输出:

我的代码如下所示:

我的分区函数似乎工作正常,但我不确定如何正确实例化“w”。抱歉,如果这真的很基本,我对序言很陌生。

0 投票
2 回答
125 浏览

python - 计算机查找非负整数 x_1<=x_2<=...<= x_n 和总和为 100 的最快方法

我想为计算机找到一种有效的方法来处理大量变量(比如 50:x1,...,x50),这些变量执行如下操作:找到所有组合 [x1,x2,x3] 满足:

  1. 0 <= x1 <= x2 <= x3

  2. x1 + x2 + x3 = 100

这是一个查找 sum = 100 的所有组合的示例,但 [1,99] 和 [99,1] 在这里被认为是不同的:

我想找到一种方法来减少循环次数,并且只提供以下内容:

[0,100], [1,99], [2,98], ...., [50,50]

[51,49] 中没有任何内容。

主要目标是使用 50 个变量 (x_1,...x_50) 执行此操作,总和为 100。

用正常循环不太可能做到这一点

0 投票
2 回答
257 浏览

python - Python 和数论:我们如何创建 q(n) 的生成函数(将 n 划分为不同部分的数量)?

https://en.wikipedia.org/wiki/Partition_%28number_theory%29#Restricted_pa​​rtitions,我们知道整数 p(n) 的分区数由下式给出

p(n)

可以用python写成:

我的问题是:如何修改它以返回 q(n),即包含不同部分的分区数?

IE;

p(3)=2, 因为 3=2+1 3=1+1+1 (1,1,1)不明显。

但是q(3)=1,因为只 3=2+1包含不同的元素。

的生成函数由q(n)下式给出

在此处输入图像描述

我在 python 中找不到一个好的产品函数,它可以将产品从 n 返回到无穷大。

0 投票
1 回答
163 浏览

c++ - 如何索引双重限制的整数分区?

枚举具有以下 2 个限制的正整数的所有分区时:

  • 每个分区的大小总是PartitionSize
  • 这些分区的所有元素都小于或等于MaxVal,并且大于零。

...我面临着对这些分区进行编号/索引的任务,这样我可以存储它们的索引,然后检索它们以从任意索引快速重新生成一个分区的元素。索引不需要是连续的。

:计算此类分区索引的最佳方法是什么?

下面列出了生成这些分区的函数:

请注意,此函数会生成分区,其中每个分区中的所有元素都按从小到大(从左到右)排序。此功能不能被破坏。

分区本身(垂直)之间的排序是字典顺序的。失去它我会不高兴,但没有它我还能活下去。

此外,我故意选择不将其作为递归函数来实现,因为递归解决方案对非常大的分区(尽管实现更简单)具有低性能和 RAM/堆栈影响。

如果有人想编译它,下面是帮助函数。

0 投票
1 回答
265 浏览

arrays - 具有 k 个部分的 rank 和 unrank 整数分区

对于正整数nk,设“ n的k分区”是k个不同正整数的排序列表,它们加起来为n ,并让给定的n的k分区的“等级”是它在所有这些列表按字典顺序排序的列表,从 0 开始。

例如,有两个 5 的 2 分区(n  = 5,k  = 2):[1,4] 和 [2,3]。由于 [1,4] 按字典顺序排在 [2,3] 之前,因此 [1,4] 的秩为 0,[2,3] 的秩为 1。

所以,我希望能够做两件事:

  • 给定nkn的k分区,我想找到n的k分区的等级。
  • 给定nk和一个等级,我想找到n具有该等级的k分区。

我可以这样做而不必计算n的所有k分区在感兴趣的分区之前吗?

这个问题与其他问题不同,因为我们在这里讨论的是整数分区而不仅仅是组合。

0 投票
1 回答
88 浏览

arrays - 从一组属性重构位序列

我想从给定的 Sets ones、数字x和其他属性重建一个 Bitsequence。在位序列中,第一位的值为 1,第二位的值为 2,第三位的值为 3。依此类推。

例如我有以下属性:

x=15(所有设置位值的总和)

位序列长度:8

所有子序列中的计数1:2

子序列数1:1

  1. 子序列长度:2

所以解决方案是11000000

可以存在多个解决方案,我对所有解决方案都感兴趣

我怎样才能有效地找到具有给定属性的解决方案?

0 投票
1 回答
205 浏览

r - 查找 6 个数字加起来为 10 的所有组合的列表

所以我之前看到过这个问题的类似版本(Getting all combination which sum up to 100 using R)但我正在努力寻找一种方法来确定我需要专门运行什么。我正在尝试在 R 中创建一个包含 6 个数字的所有不同组合的列表,这些数字加起来为 10。但是,我想在行中包含 0 和相同 # 的重复。所以它看起来像这样:

10 0 0 0 0 0 9 1 0 0 0 0 8 2 0 0 0 0 我试过运行以下命令:

但是,当我这样做时,它似乎不包括其中包含 0 的变体。我尝试将 include.zero=TRUE 函数输入到我正在运行的不同部分,但到目前为止我还没有运气。有什么建议么?

0 投票
1 回答
813 浏览

python - 在 Python 中将整数 n 的受限弱整数组合(或分区)生成 k 部分

(重新发布,因为我没有得到对我之前的帖子的任何回应)
我正在尝试编写一个 Python 代码来生成一个数字“n”到“k”部分但具有最小值和最大值的弱整数组合(分区)每个分区的值约束(参见下面给出的示例)。此外,分区必须按字典顺序生成。我找到了一些相关的帖子,但一直无法实现。任何帮助将不胜感激。

示例:
k=3 部分中 n=5 的可能整数分区:
[5,0,0], [4,1,0], [4,0,1], [3,2,0], [3, 1,1], [3,0,2], ..., [0,0,5]
在强制分区中的每个整数都有一个最小值 0 和一个最大值 3 的约束之后,我应该得到:
[ 3,2,0], [3,1,1], [3,0,2], ...等等,只有。

相关文章:
用于整数分区的优雅 Python 代码
在 Python 中高效地生成字典序列