【问题标题】:generating permutations using mathematica 4.0使用mathematica 4.0生成排列
【发布时间】:2011-01-30 18:39:18
【问题描述】:

您好,我使用的是 Mathematica 4.0。我试图找到所有排列,例如,假设有两个数字 0 和 1。我试图在 3(比如说)重复的地方使用这两个数字生成所有排列,例如 {1,1,1}, {1,1,0},{1,0,1},{1,0,0}...我也试图将每个排列放入一个数组中。 Mathematica 4.0 中是否有任何代码或命令可以让我做所有这些事情。请帮助我完成这项任务...

【问题讨论】:

  • 请允许我欢迎您来到 StackOverflow,并提醒我们通常在这里做的三件事:1) 当您获得帮助时,请尝试在您的专业领域中回答问题 2) Read the FAQs 3) 当你看到好的问答时,给他们投票using the gray triangles,因为系统的可信度是基于用户通过分享他们的知识而获得的声誉。还记得接受更好地解决您的问题的答案,如果有的话,by pressing the checkmark sign

标签: wolfram-mathematica


【解决方案1】:

在 Mathematica 5.1 及更高版本中,有一个函数 Tuples 可以满足您的需求。你可以试试

getTuples[elements_List, length_Integer] :=
  Flatten[Outer[List, Sequence @@ Table[elements, {length}]], length - 1]

例如:

In[6]:= getTuples[{0, 1}, 3]

Out[6]= {{0, 0, 0}, {0, 0, 1}, {0, 1, 0}, {0, 1, 1}, {1, 0, 0}, {1, 0, 1}, {1, 1, 0}, {1, 1, 1}}

但我不知道这是否适用于 M4.0。它应该,我猜,但我无法检查。一般来说,使用 4.0 这样过时的版本,您将面临各种各样的困难,包括缺乏功能、性能和界面(前端)较差、某些在更高版本中修复的错误、与后来编写的代码不兼容版本,并获得帮助。对于 Mathematica 来说尤其如此,因为自 4.0 以来在各种方向上都取得了巨大的进步。因此,如果您打算定期使用它,我强烈建议您升级。

【讨论】:

  • 谢谢,我已经将我的版本升级到 5.2 并得到了我的结果。现在我想把每个排列放在一个单独的数组中,比如 lst1={0,0,0};lst2={ 0,0,1}...使用循环。因为如果没有。如果排列变大,那么为每个数组编写单独的列表名称是不明智的。请帮助我完成这项任务
  • @rajib arefin:很抱歉,但这不是 SO(堆栈溢出)的工作方式。请把它作为一个单独的问题发布,这里的人们会很乐意回答。这样,它将被编入索引并对寻找相同答案的新用户有用。
【解决方案2】:

一种考古问题:D。第 4 版已经很老了!

<<DiscreteMath`Combinatorica`

perm1[l_,n_]:=Union[KSubsets[Flatten[Table[l,{n}]],n]]  

In[70]:= perm1[{1,2,1},4]
Out[70]= {{1,1,1,1},{1,1,1,2},{1,1,2,1},{1,1,2,2},{1,2,1,1},
          {1,2,1,2},{1,2,2,1},{1,2,2,2},{2,1,1,1},{2,1,1,2},
          {2,1,2,1},{2,1,2,2},{2,2,1,1},{2,2,1,2},{2,2,2,1},{2,2,2,2}}  

In[73]:= perm1[{1,0},3]
Out[73]= {{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}}

【讨论】:

  • 感谢您的回复。但它在 Mthma4.0 中不起作用,显示此结果:In[45]:= perm[n_] := Permutations[Flatten[Table[{1, 0} , {n}]], {n}] In[46]:= perm[3] From In[46]:= Permutations::"argx": "\!(Permutations) 用 \!(2) 参数调用; 1 \ 参数是预期的。” Out[46]= 排列[{1, 0, 1, 0, 1, 0}, {3}]
  • 好的,我可以收集mathematica 5.0。 Mathematica 5.0 是否支持这些代码?
  • @rajib Permutations 最后一次修改是在 v6 中,所以我不确定,因为我拥有的文档没有说明在哪个版本中进行了哪些修改。
  • belisarius 和 Leonid Shifrin 提供的解决方案都适用于 Mma v5.2,如果有任何用途(安装在旧 Mac 上)。不过,没有 v 4.0。
  • @TomD 你的博物馆太棒了:D
【解决方案3】:

顺便说一句 - 请注意,所有以前版本的 Mathematica 的文档都可以在 http://reference.wolfram.com/legacy 在线免费获得 - 特别是版本 4,请参阅 http://reference.wolfram.com/legacy/v4

您可以通过 google 搜索 v4 文档:

排列网站:reference.wolfram.com/legacy/v4

它打开了 v4 函数 Permutations http://reference.wolfram.com/legacy/v4/RefGuide/Permutations.html,其中包含示例和一些指向旧 Mathematica Book 其他部分的链接。

【讨论】:

  • V4 中的排列没有达到 OP 的要求。后来修改了,现在你可以说Permutations[{1,0},3] ...但当时还没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2011-05-18
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
相关资源
最近更新 更多