jjzjj

combinatorics

全部标签

python - 赋值问题,一个 NumPy 函数?

自assignmentproblem可以以单个矩阵的形式构成,我想知道NumPy是否有解决这种矩阵的功能。到目前为止我还没有找到。也许你们中有人知道NumPy/SciPy是否有赋值-问题-求解函数?编辑:与此同时,我在http://software.clapper.org/munkres/找到了一个Python(不是NumPy/SciPy)实现。.我仍然认为NumPy/SciPy实现会更快,对吧? 最佳答案 在sklearn/utils/linear_assignment_.py下的scikit-learn中现在有一个munkres

python - 通过索引号获取指定次数的排列

我已经为此工作了几个小时,但无法弄清楚。将排列的次数定义为创建它所需组合的最小换位数。所以(0,1,2,3)的度数为0,(0,1,3,2)的度数为1,(1,0,3,2)为2等将空间Snd视为长度为n且度数为d的所有排列的空间。我想要两种算法。一个在该空间中进行排列并为其分配一个索引号,另一个在Snd中获取项目的索引号并检索其排列。索引号显然应该是连续的(即在0到len(Snd)-1范围内,每个排列都有一个不同的索引号。)我希望在O(sane)中实现它;这意味着如果您要求排列编号17,则算法不应遍历0到16之间的所有排列来检索您的排列。知道如何解决这个问题吗?(如果您要包含代码,我更喜欢

python - numpy 中 itertools.combinations 的 N-D 版本

我想实现itertools.combinations对于NumPy。基于thisdiscussion,我有一个适用于一维输入的函数:defcombs(a,r):"""Returnsuccessiver-lengthcombinationsofelementsinthearraya.Shouldproducethesameoutputasarray(list(combinations(a,r))),butfaster."""a=asarray(a)dt=dtype([('',a.dtype)]*r)b=fromiter(combinations(a,r),dt)returnb.view(

python - numpy 中 itertools.combinations 的 N-D 版本

我想实现itertools.combinations对于NumPy。基于thisdiscussion,我有一个适用于一维输入的函数:defcombs(a,r):"""Returnsuccessiver-lengthcombinationsofelementsinthearraya.Shouldproducethesameoutputasarray(list(combinations(a,r))),butfaster."""a=asarray(a)dt=dtype([('',a.dtype)]*r)b=fromiter(combinations(a,r),dt)returnb.view(

java - 是否有相当于Python的Python的itertools?

我正在搜索一个库(最好是通用库),它生成集合中包含的数据的可重复组合和排列。笛卡尔积也不错。描述我想要的最好的方法是“Java的Type工具”。 最佳答案 itertools不仅仅是组合和排列,所以(虽然在编码Java时拥有所有的itertools当然是好的),但是你可以少用很多。例如,对于排列,请参见here;对于组合,请参见here(两个类都来自同一作者)。 关于java-是否有相当于Python的Python的itertools?,我们在StackOverflow上找到一个类似的问

java - 是否有相当于Python的Python的itertools?

我正在搜索一个库(最好是通用库),它生成集合中包含的数据的可重复组合和排列。笛卡尔积也不错。描述我想要的最好的方法是“Java的Type工具”。 最佳答案 itertools不仅仅是组合和排列,所以(虽然在编码Java时拥有所有的itertools当然是好的),但是你可以少用很多。例如,对于排列,请参见here;对于组合,请参见here(两个类都来自同一作者)。 关于java-是否有相当于Python的Python的itertools?,我们在StackOverflow上找到一个类似的问

c# - 在尊重偏好的情况下将人员分配到建筑物?

今天有friend问我一个关于分配问题的问题。我找到了一个非常简单的解决方案,但我觉得它可以变得更简单、更快。您的帮助将不胜感激。问题:假设我有N个人,我需要将他们分配到M栋楼,每栋楼可以容纳K人。并非所有人都愿意和对方住在一起,所以我有一个N*N单元格矩阵和一个1,表示愿意和对方住在一起的人。如果一个单元格包含1,则表示I和J可以住在一起。显然矩阵围绕主对角线对称。我的解决方案如下(伪代码):int[]Match(int[]people,int[][]pairs,intnumBuildings,intbuildingsSize){int[]freePeople=findFreePeo

c# - 在尊重偏好的情况下将人员分配到建筑物?

今天有friend问我一个关于分配问题的问题。我找到了一个非常简单的解决方案,但我觉得它可以变得更简单、更快。您的帮助将不胜感激。问题:假设我有N个人,我需要将他们分配到M栋楼,每栋楼可以容纳K人。并非所有人都愿意和对方住在一起,所以我有一个N*N单元格矩阵和一个1,表示愿意和对方住在一起的人。如果一个单元格包含1,则表示I和J可以住在一起。显然矩阵围绕主对角线对称。我的解决方案如下(伪代码):int[]Match(int[]people,int[][]pairs,intnumBuildings,intbuildingsSize){int[]freePeople=findFreePeo

javascript - 确定从序列中删除一组值的所有可能方法的算法

我正在尝试确定可以从序列中删除一组值,按顺序(稳定)保留原始序列的方式,并确保从原始序列中仅删除一个实例值。例如,如果我有[1,2,1,3,1,4,4],我想删除[1,4,4],我得到的组合是:[1,2,1,3,1,4,4]\[1,4,4]=[[2,1,3,1],[1,2,3,1],[1,2,1,3]]或者[1,2,1,3,1,4,4]\[1,1]=[[2,3,1,4,4],[1,2,3,4,4],[2,1,3,4,4]]我有编写的javascript代码可生成所有数组值的组合而无需删除,而删除部分似乎应该很容易,但是当需要多次删除多个值时,我看不到算法。

javascript - 确定从序列中删除一组值的所有可能方法的算法

我正在尝试确定可以从序列中删除一组值,按顺序(稳定)保留原始序列的方式,并确保从原始序列中仅删除一个实例值。例如,如果我有[1,2,1,3,1,4,4],我想删除[1,4,4],我得到的组合是:[1,2,1,3,1,4,4]\[1,4,4]=[[2,1,3,1],[1,2,3,1],[1,2,1,3]]或者[1,2,1,3,1,4,4]\[1,1]=[[2,3,1,4,4],[1,2,3,4,4],[2,1,3,4,4]]我有编写的javascript代码可生成所有数组值的组合而无需删除,而删除部分似乎应该很容易,但是当需要多次删除多个值时,我看不到算法。