1
laike9m 2020-07-09 16:45:07 +08:00
和 Python 有啥关系?难道不写 SQL 么
|
2
laike9m 2020-07-09 16:47:10 +08:00 1
好吧当我没说。建议把输入和想要的输出写清楚,这样才好回答
|
3
gwy15 2020-07-09 16:53:52 +08:00
没看懂你定义的“随意随机”是什么意思,我描述下我的理解。
矩阵 A_ij 是 5x5 的矩阵,选出其中若干行,将行向量相加,得到 a,要求 a_0 > 1, a_1 > 2, etc. 如果是每行 01 选择的话直接位运算就行,2^5 复杂度; 如果是每行都可以若干次选择(线性组合),那就解五元线性不等式就行了,找本优化方面的书看。 |
4
L4Liiyooooo OP |
5
L4Liiyooooo OP @gwy15 比如 a+b+c 或者 a+b+e 同时满足条件 因为我想一次输出一个结果 所以说随意,随机
大佬你这方法对我来说有点困难了 我看不懂。。。 如果需要这么难的话 我还是暂时先放弃了。。。 |
6
Yourshell 2020-07-09 17:28:50 +08:00
搜索 subset sum
|
7
MOONLIGHTT 2020-07-09 17:34:17 +08:00
pandas 或者 numpy
|
8
Counter 2020-07-09 17:42:02 +08:00
我很想帮你,但是实在不懂你在说什么,谁理解了说下
|
9
jstony 2020-07-09 17:42:58 +08:00
这还要 python,太杀鸡用牛刀了吧,excel 的筛选不好用吗
|
10
aloxaf 2020-07-09 17:44:47 +08:00 1
|
11
AX5N 2020-07-09 17:57:48 +08:00
我猜楼主是这个意思
``` for i in list: if list[0] > 1 and list[1] > 2 and list[2] > 3 and list[3] > 4 and list[4]>5: print (i) ``` |
13
nuistzhou 2020-07-09 18:05:52 +08:00 via iPhone
我猜楼主随机的意思是从所有“行”里挑出满足这些“列”条件的。这玩意 SQL 或者 Pandas 很快解决的
|
14
L4Liiyooooo OP @jstony 一开始我是想设计一个可以随机输出一个满足条件的组合的程序。。。
|
15
L4Liiyooooo OP @Counter 谢谢
这是我编辑的一个示例 就是 A,B,C,D,E 都有一个标准值(肯定大于单独一行的数值) 然后任意行相加 大于或等于标准值 即为一种组合 比如 a+b,a+c+d 等等 我想找出所有的组合 |
16
aloxaf 2020-07-09 18:45:23 +08:00 via Android
只出现一次的话,直接穷举不就行了。。。
|
17
flamehaze 2020-07-09 19:02:20 +08:00
没太看懂,但是我隐约觉得 excel 自带的功能就能完成,excel 里也能编程的。
|
18
volvo007 2020-07-09 20:48:40 +08:00
楼主的条件是,任意行相加大于标准值就可以
但是楼主想过没有,你现在有 200 行……要打印出所有的组合你算过有多少种吗……说得轻巧啊……最坏情况可是 200 ! 200 的阶乘啊…… 我建议你找到一个满足条件的就收手,全打印出来太天真了 如果是随机提供行数,你这里 0-200 行选哪些行不确定,200 行里面每次选多少行出来也不确定,不过用两次随机数就可以了。用 np.random.randint(200) 可以生成一个 200 内的随机整数 N 作为需要相加的行数,用 np.random.choice(range(200), N) 就可以从 200 行当中不重复选出这随机的 N 行 然后得到的行数是一个数组,可以用 df.iloc[ list, :].sum(axis=0) 算出这些随机行的每一列的和 之后和你的标准值比较就可以了 这个过程可以循环多次。我估计不到一秒就能找到其中的一个组合。你要把组合全打印出来我真劝你放弃…… |
19
L4Liiyooooo OP @volvo007 看明白了 是这么个事啊 厉害厉害 受教了! 感谢感谢!
|
20
L4Liiyooooo OP @volvo007 选哪些行都行 选多少行相加也可以 只要满足条件即可 我自己都没描述清楚!你帮我说清楚了 感谢!
|
21
aijam 2020-07-10 08:52:15 +08:00
窃以为,考虑这个问题的满足(satisfaction)问题版本:判断是否存在任意一个行的组合,满足所有列的约束条件。可以很容易的 reduce 成 SAT 问题,所以可以肯定是一个 NP 问题。如此一来,基本只能靠一些 heuristics 来剪枝搜索空间了。
|
22
yongzhenchen682 2020-07-10 09:03:46 +08:00
测试不能穷举,等价类划分一下
|