|
7
|
| Ozgur Ozcitak Vikash Choudhary · 技术社区 · 17 年前 |
|
|
1
5
“排序”通常使用二进制比较运算符(“小于或等于”)定义。您要寻找的是列表的“最佳”排列,其中“最佳”定义为在整个列表上定义的标准(虽然“特定函数”在相邻元素上定义,但整个列表上的总和使其成为全局属性)。 如果我理解正确的话,“旅行推销员”就是你问题的一个例子,所以你的问题是NP完全的;-) |
|
|
2
3
因为使用的函数没有限制
如果使用一个常量函数(比如alwasys返回1),那么所有排序的和都是相同的,但在查看所有排序之前,您不一定知道这一点。 所以我看不到比计算所有排列的函数和和更快的了。
编辑:另外,由于它可能是一个作用于所有元素的函数,因此可以有一个函数,该函数对所有置换返回0,但对其中一个置换返回1。 所以对于一般情况,你肯定需要计算所有置换的函数。 |
|
|
3
2
Optimization Probelm ,而不是排序问题。 我敢打赌,只要有一点点(或者很多)的工作,有人就会证明这在功能上等同于一个著名的NP完全问题。但是,对于某些特定函数(例如示例中的^b),问题可能更容易解决。 |
|
|
4
2
如果不是,那就是一个动态规划问题。要了解它,您应该以您的示例为基础,将您的问题转化为以下问题。你在一开始。您可以选择{1,2,3,4}中的任意一个。从那里你可以选择去{1,2,3,4}。这样做4次,你就得到了列表{1,2,3,4}中长度4的所有排列。 现在您需要一个成本函数,其定义如下:
总成本表示为:
注意
从那里你可以导出一个算法。查看维基百科,了解更多信息 introduction to dynamic programming .
|
|
|
5
2
强力攻击
我从你那里偷了排列码 Ian Griffiths blog |
|
|
6
1
这绝对不是一个排序列表。如果您有一个排序列表[x~0~…x~n~],则该列表 [x~0~…x~i-1~,x~i+1~…x~n~](即x~i~删除)也将根据定义进行排序。在您的示例中,从子序列100,0100中删除0很可能会取消列表的排序。 |
|
7
1
这就是我目前所拥有的。我创建了一个Calc类,我可以将我的每个组合传递给它,然后它计算总数,并有一个ToString()方法,因此您不必担心迭代以输出总和字符串和值。您可以获取构造函数中传入的总计和列表。然后,您可以将每个组合集添加到列表中,您可以在
然后我们在计算中使用类,并根据每个排列的总数快速排序:
|
|
8
1
但是,一旦给定了一个函数,您可以(可能)为该函数设计一种排序方法,例如,对于上面的a^b,将列表排序为Max、min、next Max、next min。然后颠倒顺序。 根据给定功能的复杂性,提供优化的排序例程将越来越困难。 谢谢 |
|
|
9
0
这个问题的解决方案将在很大程度上取决于您希望用于排序的方法。然而,乍一看,您可能需要迭代所有可能的订单以找到最小订单。如果当前总和大于以前的总和,则可能导致短路。
|
|
|
10
0
我猜不会那么简单。。。但这对你的例子来说是有效的,这不是真正重要的吗? |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
|
Daniel Lobo · 使用约束进行优化 1 年前 |
|
Sergio · python中大量数字的乘法 2 年前 |
|
|
Sergey Dev · 临时表与表变量 2 年前 |
|
|
John · 减少C中的内存消耗++ 2 年前 |