子集的积和

2023-11-23

这个操作有名字吗?并且:是否存在封闭式表达式?

  • 对于给定的 n 个元素集合,k 值介于 1 和 n 之间,
  • 获取 k 个项目的所有子集(组合)
  • 求每个子集的乘积
  • 求所有这些乘积的总和

我可以用 Python 表达这一点,并且很容易地进行计算:

from operator import mul
from itertools import combinations
from functools import reduce
def sum_of_product_of_subsets(list1, k):
    val = 0
    for subset in combinations(list1, k):
        val += reduce(mul, subset)
    return val

我只是在寻找闭合形式表达式,以避免在集合大小变大时出现循环。

请注意,这与这个问题不同:每组中一个元素的所有组合的乘积之和——这个问题是关于笛卡尔积的乘积和。我正在寻找大小为 k 的组合集合的乘积和;我不认为它们是一样的。

明确地说,对于 set(a, b, c, d),则:

k = 4 --> a*b*c*d
k = 3 --> b*c*d + a*c*d + a*b*d + a*b*c
k = 2 --> a*b + a*c + a*d + b*c + b*d + c*d
k = 1 --> a + b + c + d

只是寻找表达方式;无需专门提供Python代码。 (如果您想提供示例实现,任何语言都可以说明。)


这些都是初等对称多项式。您可以使用维基百科中的求和符号来书写它们。您还可以使用维埃塔的公式一次获取所有它们作为多项式的系数(最多符号)

(x-a_1)(x-a_2)...(x-a_k) =
   x^k -
   (a_1 + ... + a_k) x^(k-1) +
   (a_1 a_2 + a_1 a_3 + ... + a_(k-1) a_k)) x^(k-2) +
   ... +
   (-1)^k a_1 ... a_k

通过展开 (x-a_1)(x-a_2)...(x-a_k),您将获得一个多项式时间算法来计算所有这些数字(您的原始实现以指数时间运行)。

编辑:Python实现:

from itertools import izip, chain

l = [2,3,4]

x = [1]    
for i in l:
    x = [a + b*i for a,b in izip(chain([0],x), chain(x,[0]))]
print x

得到 [24, 26, 9, 1],如 2*3*4=24, 2*3+2*4+3*4=26, 2+3+4=9。最后一个 1 是空乘积,对应于您的实现中的 k=0。

This should be O(N2). Using polynomial FFT you could do O(N log2 N), but I am too lazy to code that.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子集的积和 的相关文章

  • 如何提高洪水填充例程的性能?

    我正在我的应用程序中实现四路洪水填充 伪代码如下 Flood fill node target color replacement color 1 If the color of node is not equal to target co
  • 将数字的各个数字部分相加/求和的最快方法

    不久前 我在数学论坛上看到一个问题 其中一个人正在讨论一遍又一遍地将数字中的数字相加 直到达到个位数 即 362 将变成 3 6 2 这将变成 11 然后 11 将变成 1 1 将变成 2 因此 362 将返回2 我写了一些很好的代码来得到
  • 寻找簇的中心

    我有以下问题 进行抽象以找出关键问题 我有 10 个点 每个点与其他点有一定距离 我想要 能够找到簇的中心 即与其他点的成对距离最小的点 令 p j p k 表示点 j 和 k 之间的成对距离p i 是簇的中心点 iff p i s t m
  • 最接近 x,y 的线上的点[重复]

    这个问题在这里已经有答案了 可能的重复 如何判断一个点是否在某条线附近 https stackoverflow com questions 910882 how can i tell if a point is nearby a certa
  • 在Python中确定句子中2个单词之间的邻近度

    我需要确定 Python 句子中两个单词之间的接近度 例如 在下面的句子中 the foo and the bar is foo bar 我想确定单词之间的距离foo and bar 确定之间出现的单词数foo and bar 请注意 该词
  • 为什么Python中pop()的大O与pop(0)不同[重复]

    这个问题在这里已经有答案了 他们不应该都是O 1 因为从 Python 列表中的任何位置弹出一个元素涉及销毁该列表并在新的内存位置创建一个元素 蟒蛇的list实现使用动态调整大小的 Carray在引擎盖下 删除元素usually要求您移动后
  • 整数除法性质

    下面的整数算术性质成立吗 m n l m n l 起初我以为我知道答案 不成立 但现在不确定 它适用于所有数字还是仅适用于某些条件 即n gt l 该问题涉及计算机算术 即q n m q m n 忽略溢出 Case1 assume m kn
  • 逐字遍历句子

    如何逐字遍历任何给定的句子 java中有内置函数吗 我不知道如何开始 像这样的事情 String sentence Your sentence here String words sentence split s splits by whi
  • 算法:找到圆中的峰值

    Given n排列成圆圈的整数显示了一种可以找到一个峰值的有效算法 峰值是不小于它旁边的两个数字的数字 一种方法是遍历所有整数并检查每个整数以查看它是否是峰值 这产生O n 时间 似乎应该有某种方法来分而治之 以提高效率 EDIT 好吧 基
  • 最低共同祖先算法

    所以我一直在研究实现最低共同祖先算法 我研究了许多不同的算法 主要是 Trajan 解决方案的变体或 RMQ 的变体 我正在使用非二叉树 我的树经常会在查询之间发生变化 因此预处理不一定值得 树的节点数不应超过 50 75 个 我想知道的是
  • 如何计算一组字符串的最短唯一前缀?

    这是一个非常常见的算法命令行解析 给定一组预定义的长选项名称 计算唯一标识这些选项之一的最短前缀 例如 对于以下选项 help hostname portnumber name polymorphic 这将是输出 he ho por n p
  • 算法 - 树中所有节点的最大距离

    所以 找到树中两个节点之间的最长路径相当容易 但我想要的是找到从节点出发的最长路径x到树中的另一个节点 对于所有x 这个问题也可以用以下方式表达 计算从给定的树中可以生成的所有有根树的高度 One way of course is to j
  • 为什么使用 no-op 来填补 paxos 事件之间的空白是合法的?

    我正在学习Paxos算法 http research microsoft com en us um people lamport pubs paxos simple pdf http research microsoft com en us
  • n的渐近增长选择下限(n/2)

    如何找到 n select Floor n 2 的渐近增长 我试过 使用扩展并得到它等于 n n 1 floor n 2 1 n floor n 2 知道我该如何从那里去吗 感谢任何帮助 更喜欢提示而不是答案 我同意上面的答案 但想提供更多
  • 递归:n项级数之和

    需要递归函数 系列是 1 2 3 3 4 5 4 5 6 7 递归求 n 的级数之和 我无法想到应该在函数中传递哪些参数 我的方法 我认为我应该传递 n 要相乘的项数 但我无法想到的是我应该如何在同一个函数中 和 以及我的 return 语
  • 如何以最小化每个分区总和的最大值的方式对整数数组进行分区?

    输入是正整数或空整数的数组 A 和另一个整数 K 我们应该将 A 划分为 K 个连续元素块 我所说的 划分 是指 A 的每个元素都属于某个块 并且 2 个不同的块不包含任何共同元素 我们将块的总和定义为该块的元素的总和 目标是在 K 个块中
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • 正则表达式等价

    有没有办法找出两个任意正则表达式是否等价 对我来说看起来很复杂的问题 但可能有一些 DFA 简化机制之类的 要测试等价性 您可以计算的表达式并进行比较
  • 为什么对本地列表求和比用“GHC -O2”对教会编码列表求和慢?

    为了测试教会编码的列表如何针对用户定义的列表和本机列表执行 我准备了 3 个基准测试 用户定义的列表 data List a Cons a List a Nil deriving Show lenumTil n go n Nil where
  • 在c#中遍历对象树

    我有一棵由多个对象组成的树 其中每个对象都有一个名称 string id int 以及可能是同一类型的子数组 如何遍历整个树并打印出所有 id 和名称 我是编程新手 坦率地说 我很难理解这个问题 因为我不知道有多少个级别 现在我正在使用fo

随机推荐

  • 南希:如何捕获所有请求,无论动词或路径如何

    我想将 Nancy 与默认路由一起使用 因为它干净且运行良好 但是我想要一个选项来将所有传入请求记录到控制台 我正在使用 Nancy 的自托管模块 无论是否存在显式路由 简而言之 我希望能够捕获动词 传入请求 URI 任何发布的数据 如果是
  • ModuleNotFoundError:没有名为“pandas.core.indexes”的模块

    我编写了这段代码来将数据集加载到数据框中 数据集在 pickle 文件中给出 但会引发错误 ModuleNotFoundError 没有名为 pandas core indexes 的模块 import pickle import pand
  • 如何从 ASP .NET Core MVC 1.0 中的视图访问会话

    我正在尝试从视图内部访问会话数据 使用案例 我将状态消息存储在会话中 该消息将显示在页面顶部 目前我通过使用DisplayMessages 设置一些函数ViewData 属性并在每个控制器操作开始时调用它 Goal 我只想设置一次状态消息
  • 如何从 Java 向 Erlang 发送消息?

    我正在 Erlang 中制作一个应用程序 并使用 Java 中的 GUI 我已经成功地在两种语言之间建立了连接 但现在我需要 我猜 每次按下按钮时从 Java 向 Erlang 发送一条消息 这是正确的做法吗 这样的消息看起来怎么样 我发现
  • #includes 在命名空间中,将预先编写的内容“嵌入”命名空间中

    简而言之 这样做安全吗 namespace Foo include bar 在你愉快地拒绝之前 我想我有一些规则可以保证它相当安全 但我不喜欢它们 因为它们要求包含器单独包含所需的所有全局范围标头 尽管这可能是可以容忍的 但如果我们想象包含
  • 是什么导致 Java JLabel 图标图像质量差?

    Java JLabel图标显示的像素扭曲JFrame 不同的 png 图像 均为 32x32 都会出现这种情况 我没有缩放图像 它们在程序中显示为 32x32 我使用它进行了验证getWidth and getHeight在 JLabel
  • 如何在列表理解中转换这个 for 循环?

    我有一个像这样的 for 循环 for i in conversion for f in glob glob i print os path getsize f 我想将其转换为列表理解 尝试过这个 os path getsize f for
  • 从某个范围生成随机整数

    我需要一个函数 它可以生成给定范围 包括边界值 内的随机整数 我没有不合理的质量 随机性要求 我有四个要求 我需要它快点 我的项目需要生成数百万 有时甚至数千万 的随机数 而我当前的生成器函数已被证明是一个瓶颈 我需要它相当均匀 使用 ra
  • 获取对象的实例名称,而不是 C# 4.0 中的对象类型名称

    假设这个类型 public class Car 我创建了一个实例 Car myCar new Car Target target new Target target Model myCar 这是另一种类型 public class Targ
  • C# python 实时进程间

    我正在开发一个项目 其中一个应用程序使用 C 编写 另一个应用程序使用 Python 编写 C 应用程序将持续分析数据流 并在每次检测到有趣的内容时发出一个标志 因此 每次发生事件时 我的 Python 应用程序都必须读取它并继续其自己的进
  • 包含 espresso-contrib:2.0 时出现 java.lang.InknownClassChangeError

    我有 android support v7 widget RecyclerView 的子类 当我使用该应用程序并进行测试时 它工作得很好 但是 当我在 gradle 应用程序文件中包含 espresso contrib 时 当我尝试运行相同
  • 自定义 Visual Studio MSIX 打包项目输出

    我正在使用 Visual Studio MSIX 打包项目在网络共享上为内部应用程序创建安装程序 一个问题是它正在创建一个末尾带有 Test 的目录 为什么会这样以及我该如何摆脱它 我只想要 MyApp MSIX 0 0 1 0 或者理想情
  • 在 matlab 中保存 imagesc 的精确图像输出

    你好 我想保存这张图片imagesc magic 3 确切的彩虹表示 可能吗 Thanks 这个问题可能看起来像重复的问题 但事实并非如此 我在这个网站上查看了类似问题的解决方案 但它并不令我满意 我查看了 Matlab 帮助中心 得到的最
  • android ffmpeg .so下载[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人知道从哪里获得 Android 编译的 so FFMPEG 库吗 我尝试了数千次使用 Android NDK 在 windows 7 上手动编译
  • 接受 YouTube 的 cookie 同意

    我正在尝试从 Youtube 频道检索 Youtube 视频列表 例如 https www youtube com user YouTube videos 以获得第 n 个第一个视频 感谢key videoId 它曾经像魅力一样发挥作用 直
  • Oracle中的游标for循环

    请解释一下如何在 oracle 中使用游标 for 循环 如果我使用下一个代码 一切都很好 for rec in select id name from students loop do anything end loop 但是如果我为这个
  • 绘制一个奇特的对角相关矩阵,其系数位于上三角形中

    我有以下内容合成的数据框 包括数值 and 绝对的列以及label柱子 我想绘制一个对角相关矩阵并在上部显示相关系数 如下所示 预期产出 尽管合成数据集 数据帧中的分类列df需要转换成数值 到目前为止我已经用过这个海伯恩的例子 using
  • 如何以角度获取前一个日期?

    请帮我获取 Angular 4 中之前的日期 currentdate Date this currentdate new Date console log this datePipe transform this currentdate y
  • 如何在 OpenNLP 中训练命名实体识别器标识符?

    好的 我有以下代码来训练来自 OpenNLP 的 NER 标识符 FileReader fileReader new FileReader train txt ObjectStream fileStream new PlainTextByL
  • 子集的积和

    这个操作有名字吗 并且 是否存在封闭式表达式 对于给定的 n 个元素集合 k 值介于 1 和 n 之间 获取 k 个项目的所有子集 组合 求每个子集的乘积 求所有这些乘积的总和 我可以用 Python 表达这一点 并且很容易地进行计算 fr