我想知道我们可以用多少种方式将数字 x 表示为给定数字集合 {a1.a2,a3,...} 中的数字之和。每个数字可以被多次取走。
\n\n例如,如果x=4且a1=1,a2=2,则x=4的表示方式为:
\n\n1+1+1+1\n1+1+2\n1+2+1\n2+1+1\n2+2\nRun Code Online (Sandbox Code Playgroud)\n\n因此路数=5。
\n\n我想知道是否存在一个公式或其他一些快速方法可以做到这一点。我无法用暴力破解它。我想为它编写代码。
\n\n注意:x 可以大到 10^18。a1,a2,a3,\xe2\x80\xa6 的项数最多可达 15 个,并且 a1,a2,a3,\xe2\x80\xa6 中的每一项也最多只能达到 15 个。
\n给定一个S包含n元素的集合和一个整数k。我需要找到所有n选择对的乘积之和k。也就是说,如果S = {1,2,3,4} and k = 2,那么我正在寻找P = 1*2 + 1*3 + 1*4 + 2*3 + 2*4 +3*4。请注意,乘积对构成了集合——k从一组n元素中获取不同的元素。我可以制定一个简单的动态编程版本:
P(n,k) = a_{n}P(n-1,k-1) + P(n-1,k)
Run Code Online (Sandbox Code Playgroud)
也就是说,获取n-1元素并选择k-1、添加a_{n}和删除a_{n}。是否有一些不错的理论可以找到上述问题的封闭式解决方案?尽管编程让我兴奋,但我在高等数学方面有点欠缺。我能够推导出上述的 DP,但无法继续到我希望有的封闭形式!
dynamic-programming combinatorics discrete-mathematics polynomial-math
给定 k 值。这样 k<=100000 我们必须打印对的数量,使得每对元素的总和可以被 k 整除。在以下条件下,第一个元素应该小于第二个,并且两个元素都应该小于 10 9。
我有一个依赖图,其中一个节点需要前一个节点的两个副本才能满足。我想使用拓扑排序来获得评估顺序,但问题是拓扑排序忽略了平行/多边,而只是将其视为一种依赖关系。我的建模是否错误,或者我是否需要一个适用于多重图的特定拓扑排序?
来自 python 的文档:https : //docs.python.org/2/library/itertools.html#itertools.combinations
见组合_with_replacement:“#组合_与替换('ABC',2)--> AA AB AC BB BC CC”
我想使用相同的功能,附带生成“BA”、“CA”和“CB”的奖励。
python combinations combinatorics cartesian-product python-itertools
假设您有一组硬币,例如 4 10¢、4 5¢ 和 4 1¢。
您被要求将这些硬币放置在 12 小时模拟钟面上,您放置的下一个硬币必须在前一个硬币之后 X 小时放置,其中 X 是前一个硬币的价值。
因此,如果您将 1 美分放在 12 上,则您放置的下一个硬币将变为 1。如果您将 5 美分放在 1 上,则您放置的下一个硬币将变为 6。以此类推。
在下一个硬币必须放入已经被占用的插槽之前,您如何最大限度地增加可以放置在时钟上的硬币数量?
这是我遇到的一个问题,除了通过详尽的搜索之外,我一直无法解决。如果输入是任意的,详尽的搜索很快就会失败——比如说它是任意数量的任意已知面额的硬币,时钟上有任意数量的小时。然后你就不能再进行穷举搜索了,因为它变成了阶乘时间并且由于过多的计算时间要求而失败。
我想知道是否有人可以帮助完成以下任务:当顺序无关紧要时,如何将列表的所有组合拆分为子列表?
假设我有一个包含 4 个项目的列表:
import itertools as it
a = [1, 2, 3, 4]
print(list(it.combinations(a, 2)))
Run Code Online (Sandbox Code Playgroud)
这会给我一个包含 6 个可能对的列表:
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
Run Code Online (Sandbox Code Playgroud)
如何制作(用它?或任何其他方式)一组[1, 2, 3, 4]以任何顺序包含原始序列的列表?因此,对于此示例,它将包含三个子列表:
[(1, 2), (3, 4)]
[(1, 3), (2, 4)]
[(1, 4), (2, 3)]
Run Code Online (Sandbox Code Playgroud)
更新:一个小的澄清:换句话说,当 n 元组中的顺序无关紧要时,我需要获取所有 n 元组集,以便它们的成员包含原始列表的所有人口。因此[(1, 2), (3, 4)]可以,但[(2, 1), (3, 4)]如果我们忽略顺序,则不需要,因为它与第一组相同。
UPDATE2:因此对于长度为 6 的列表和大小为 2 的块,此fun函数应按如下方式工作:
import itertools as it
a = [1, 2, 3, …Run Code Online (Sandbox Code Playgroud) 在 Haskell 中,众所周知,map原语可用于将给定函数应用于列表的所有元素:
?> map toUpper "abcd"
"ABCD"
?>
Run Code Online (Sandbox Code Playgroud)
在尝试生成有限集(列表)的所有分区时,以下类似的原语会很方便:
?> sap toUpper "abcd"
["Abcd","aBcd","abCd","abcD"]
?>
Run Code Online (Sandbox Code Playgroud)
与sap站立连续应用。类型签名将是:
sap :: (a -> a) -> [a] -> [[a]]
Run Code Online (Sandbox Code Playgroud)
例如,集合“abcd”的部分分区可以从“bcd”的分区中通过用('a':)sap'来获得。
?> pbcd = [["b","c","d"],["b","cd"],["bc","d"],["c","bd"],["bcd"]]
?>
?> concatMap (sap ('a':)) pbcd
[["ab","c","d"],["b","ac","d"],["b","c","ad"],["ab","cd"],["b","acd"],["abc","d"],["bc","ad"],["ac","bd"],["c","abd"],["abcd"]]
?>
Run Code Online (Sandbox Code Playgroud)
然后可以通过添加 'a' 作为它自己单独的单例来获得 5 个丢失的分区。
我的问题是,我一直无法在语言库中找到这样的原语,而且给定类型签名的Hoogle没有返回任何感兴趣的内容。
sapHaskell 语言库中是否存在这样的原语???或者有没有一种方法可以写得如此简短和简单,以至于它甚至不值得成为一个单独的函数,将其置于所谓的费尔贝恩阈值以下?
脚注:可以这样写sap:
sap :: (a -> a) -> [a] -> [[a]]
sap fn ls = fst $ foldr …Run Code Online (Sandbox Code Playgroud) 我有关系
+-----+----+
| seq | id |
+-----+----+
| 1 | A1 |
| 2 | B1 |
| 3 | C1 |
| 4 | D1 |
+-----+----+
Run Code Online (Sandbox Code Playgroud)
并希望将其加入 PostgreSQL
+----+-------+
| id | alter |
+----+-------+
| B1 | B2 |
| D1 | D2 |
+----+-------+
Run Code Online (Sandbox Code Playgroud)
所以我得到了所有可能的替换组合(即或多或少替换的笛卡尔积)。所以第1组没有更新,第2组只有B2,第3组只有D2,第4组有B2和D2。
结尾应该像这样,但应该对更多人开放(例如 D1 的额外 D3)
+-------+-----+----+
| group | seq | id |
+-------+-----+----+
| 1 | 1 | A1 |
| 1 | 2 | B1 |
| 1 | …Run Code Online (Sandbox Code Playgroud) 仍然是 Python 和编码的新手,这次冒险只有大约 6 周。我开始了一个金融项目,试图弄清楚投资组合的现金比例应该是多少,以及应该根据当前的市场表现投资多少。不知道这项研究是否有任何相关性,但它有助于坚持每一步并学习新事物。
对于任何感兴趣的人,这是谷歌合作木星笔记本 https://github.com/Jakub-MFP/My_FIRE_Project/blob/master/portfolio_management/cashposition_backtest.ipynb
在第 4 步中,我正在尝试运行某种组合模拟。我一直在阅读https://docs.python.org/3/library/itertools.html,但它对我需要开始的地方有点不知所措。只是寻找一些关于我应该研究的术语或内容的指导,以解决这个特定问题。
此外,查看并看到称为 tpot 的东西对组合数学有好处?
组合问题
目前,在第 3 步中,我为市场上的各种下跌做了一个预定义的循环。它看起来像这样
if (current_market_status == 0): # all time high record
current_cash_required_equity = 0.3
elif (current_market_status < -0.05): #less than 5%
current_cash_required_equity = 0.25
elif (current_market_status < -0.10): #less than 10%
current_cash_required_equity = 0.20
elif (current_market_status < -0.15): #less than 15%
current_cash_required_equity = 0.15
elif (current_market_status < -0.20): #less than 20%
current_cash_required_equity = 0.10
elif (current_market_status < -0.25): #less than 25%
current_cash_required_equity = …Run Code Online (Sandbox Code Playgroud) combinatorics ×10
combinations ×3
python ×3
algorithm ×2
graph ×1
haskell ×1
numbers ×1
numpy ×1
postgresql ×1
routes ×1
sql ×1
variations ×1