方法:递归数据集 - 树分支细化

时间:2015-08-22 14:57:41

标签: python methodology

我有很多数据集。这些集合包含指定用户在传递到下一个索引时获得的点数的数字:

A = (2,[2],2,6,6,10)
B = (2,4,[4],2,5,7,7,6,10,12,10,6)
C = (2,3,[4],5,6,7,7,8,10)

在这个例子中,我使用了三组,但在实际问题中,它是更多的集合(可变数量)。 [square]括号表示这是当前选定的索引,因此上面指定的索引是:(1,2,2) 所有这些索引一起组成一个总数,我可以通过从网页抓取它来跟踪(在这种情况下,总数为:(2+2)+(2+4+4)+(2+3+4) = 23)。通过跟踪总数,我知道总数随数字变化,我们称之为数字X.

Total:   23 -> 25 -> 30
X:          +2   +5       (these are the numbers X I can keep track of, they are given, but variable)  

在这个例子中,第一个X是+2,这意味着A从1> 2开始或B从2开始> 3:

案例1:A传递

A = (2,2,[2],6,6,10)
B = (2,4,[4],4,5,7,7,6,10,12,10,6)
C = (2,3,[4],5,6,7,7,8,10)

案例2:B传递

A = (2,[2],2,6,6,10)
B = (2,4,4,[2],5,7,7,6,10,12,10,6)
C = (2,3,[4],5,6,7,7,8,10)

我们知道下一次增加是+5,这或者意味着对于情况1,C从2开始 - > 3或对于情况2:B 3-> 4或C 2 - > 3

案例1:增加=> C增加

A = (2,2,[2],6,6,10)
B = (2,4,4,[2],5,7,7,6,10,12,10,6)
C = (2,3,4,[5],6,7,7,8,10)

案例2:B增加=> B增加了

A = (2,[2],2,6,6,10)
B = (2,4,4,2,[5],7,7,6,10,12,10,6)
C = (2,3,[4],5,6,7,7,8,10)

案例3:B增加=> C增加

A = (2,[2],2,6,6,10)
B = (2,4,4,[2],5,7,7,6,10,12,10,6)
C = (2,3,4,[5],6,6,7,8,10)

现在我需要编写一个算法来显示由于增加I=(+2,+5)而导致的每个可能的索引组合,请注意它实际上是变量:I=(+X, +Y, +Z, ...)并且深度是也是变数。

现在问题看起来很容易,但是想象下一次增加为7导致I=(+2,+5,+7),那么只有1种情况有效(B-> B-> B)。因此,在某种程度上,我需要编写一个大的递归函数来重新评估所有结果并删除死角,对于每个后续的增加,但我不知道如何编写这样的函数。

如需进一步说明:想象跟踪的数据会变为+ 2,+ 5,+ 6,+ 6,然后此图表会显示我想要完成的内容:Tree diagram

摘要:因此,所有变量的完整问题是:

N组数据:

A = (a1,a2,a3,a4,...)
B = (b1,b2,b3,b4,...)
...
N = (n1,n2,n3,n4,...)

具有当前所选索引的给定数组Z:

Z = ([A], [B], [C], ... , [N])

给定的数组I随深度增加N:

I = (+X,+Y,...,+N)

问:可能的新数组Z(仅使用数据集中指定的增量以给定间隔获取新总数的可能方法)

我想要的是什么:如何为此目的编写算法,我不需要你编写算法,但是起点很好,我有点迷失在问题中

注意:由于这个问题很长且技术性很强,可能会出现一些小错误,在下面发表评论,我会尝试解决它们

0 个答案:

没有答案