簡體   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