P(a) と書かれたべき集合のアルゴリズムを書きました。アルゴリズム (Big-O) の時間の複雑さについて学んでいるので、間違っている場合は修正してください。
アルゴリズム:
function powerSet(int[] a ){
ArrayList pw = new ArrayList();
pw.add(" ");
for (int i = 1; i <= a.length; i++) //O(n){
ArrayList<String> tmp = new ArrayList<String>();
for (String e : pw)//O(n) {
if(e.equals(" "))
tmp.add(""+a[i-1]) //contanst time;
else
tmp.add(e+a[i-1]) //constant time;
}
pw.addAll(tmp)//O(1);
}
return pw;
}
この O(n)*O(n) = O(n^2) の時間計算量ですか、または 2^n のような指数関数 (c^n c > 1) です。これは、すべての可能なサブセットを列挙しているためです。 .