Python backtracking and subsets
Backtracking explores alternatives while maintaining a partial choice. This subset generator first excludes an item, then includes it, and removes it before returning.
Python
def subsets(values):
result = []
path = []
def visit(index):
if index == len(values):
result.append(path.copy())
return
visit(index + 1)
path.append(values[index])
visit(index + 1)
path.pop()
visit(0)
return result
print(subsets([1, 2]))
assert subsets([]) == [[]]