AMPLでべき乗セットを生成


貧挙を行う場合、ある集合のべき乗セットを得る必要がある場合があり、AMPLを使用して実現されるコードは以下の通りである.
set S ordered;
set P{j in 0..2^card(S)-1} ordered by S :=
  {i in S: (j div (2**(ord(i)-1))) mod 2 =1};
data;
set S:=A B C;
display P;

その基本思想は自然数のバイナリ表現とべき乗集で一つ一つ対応することである.のべき乗セットは、Pで表されるクラスタに格納され、出力結果は次のようになります.
set P[0] := ; # empty set P[1] := A; set P[2] := B; set P[3] := A B; set P[4] := C; set P[5] := A C; set P[6] := B C; set P[7] := A B C;