powerset이란? 특정 집합의 공집합을 포함한 모든 부분 집합을 멱집합(powerset)이라 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def powerset(level): length = len(List) if level == length: element = [] for i in range(0, length): if include[i]: element.append(List[i]) print element return else: include[level] = False powerset(level+1) include[level] = True powerset(level+1) List = ['a','b','c'] include = [False for _ in xrange(len(List))] powerset(0) | cs |
[]
['c']
['b']
['b', 'c']
['a']
['a', 'c']
['a', 'b']
['a', 'b', 'c']
List의 level은 0번부터 len(list)까지의 인덱스를 나타낸다. level에서 list[level]를 포함하는지 하지 않는지에 따라서 분기가 갈린다. 가장 마지막 레벨에서 요소들을 모두 포함하지 않는 공집합부터 하나, 둘 그리고 모두를 포함하는 요소들까지 갈린 분기들의 마지막이 되어 출력된다.
'* Computer Science > Algorithm' 카테고리의 다른 글
Unit 3. Binary Search Tree (0) | 2017.02.27 |
---|---|
Unit 3. heap sort (0) | 2017.02.09 |
Unit 3. 들어가기 앞서 (0) | 2017.01.29 |
Unit 2. 상태 공간 트리 (0) | 2017.01.29 |
Unit 2. n-queens (0) | 2017.01.29 |