我正在寻找一种算法来生成集合的排列,以便可以在Clojure中列出它们的惰性列表。即,我想遍历一系列排列,在我请求之前不会计算每个排列,并且不必将所有排列立即存储在内存中。
或者,我正在寻找一种算法,给定特定集合,该算法将返回该集合的“下一个”排列,以这种方式,在其自己的输出上重复调用该函数将循环遍历原始集合的所有排列,一些订单(顺序无关紧要)。
有这样的算法吗?我见过的大多数排列生成算法都倾向于一次全部生成它们(通常是递归生成),而这些算法并不能扩展到非常大的集合。用Clojure(或另一种功能语言)实现将很有帮助,但我可以从伪代码中弄清楚。
侃侃无极