I couldn't find any built in functions or options that would produce circle permutations. Here is a way to do it.
First, define a function that puts a permutation into some canonical order. I chose to rotate the permutation until its "minimal" element (by sort order) is first.
CanonicalizePermutation[perm_List] :=
NestWhile[RotateLeft, perm, Not@*MatchQ[{1, ___}]@*Ordering]
If we take a list of permutations and put them all in this canonical form, we can then use Union
or DeleteDuplicates
or just DeleteDuplicatesBy
.
DeleteDuplicatesBy[Permutations[{a, b, c, d}, {3}], CanonicalizePermutation]
(* {{a, b, c}, {a, b, d}, {a, c, b}, {a, c, d}, {a, d, b}, {a, d, c}, {b, c, d}, {b, d, c}} *)
DeleteDuplicates[CanonicalizePermutation /@ Permutations[{a, b, c, d}, {3}]]
(* {{a, b, c}, {a, b, d}, {a, c, b}, {a, c, d}, {a, d, b}, {a, d, c}, {b, c, d}, {b, d, c}} *)
Union[CanonicalizePermutation /@ Permutations[{a, b, c, d}, {3}]]
(* {{a, b, c}, {a, b, d}, {a, c, b}, {a, c, d}, {a, d, b}, {a, d, c}, {b, c, d}, {b, d, c}} *)