Algorithms that enumerate or randomly select combinatorial structures (subsets, permutations, compositions, partitions, etc)