繁体   English   中英

Java:生成电源集

[英]Java: Generate a Powerset

这可能是语言不可知/有用的答案,可能只是伪代码。

我有一个要在多种输入下测试的程序。 该程序采用一组文件,其中一个文件被指定为根文件。 我想用所有可能的文件子集运行程序。 (两个子集包含相同的文件,但具有不同的根,被认为是不同的。)

这是一个相同的例子。 假设我有文件A,B和C。我想使用以下文件进行测试:

{A}, root = A
{B}, root = B
{C}, root = C
{A B}, root = A
{A B}, root = B
{B C}, root = B
{B C}, root = C
{A C}, root = A
{A C}, root = C
{A B C}, root = A
{A B C}, root = B
{A B C}, root = C

等等。 我相信这将成为动力。

给定一个充满文件的目录,用Java生成此集合的最佳方法是什么?

您说过Java,但是请看一下: 使用C#泛型的置换,组合和变体

这是用于对所有可能的混合进行测试的递归方法的伪代码.largest-subsets-first:

allofthem = set(listallfiles(thedir))

function trythemall(someset):
  if someset is empty: return
  for entry in someset:
    dotest(someset, root=entry)
  for entry in someset:
    trythemall(someset - set([entry]))

trythemall(allofthem)

当然,如果您首先需要最小的子集,则不难进行重组。

这是您所追求的(伪代码)吗?

set = new List()
foreach (file in dir) {
    set.add(file)
    foreach (entry in set) {
        do-test(set, entry)
    }
}

这将建立一个集合,然后将该集合和集合中的每个条目传递给do-test方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM