当前位置: 首页 > 知识库问答 >
问题:

最小化最小差值

郑俊美
2023-03-14

给定一个正整数的矩阵(非正方形),其中同一行上的所有元素都是可置换的,问题是最小化列的最大和和最小和之间的差异。

例如

  9  5  7        5  7  9      
  9  3  4   ~>   9  4  3
 10  5  9        5 10  9
----------      ----------
 28 13 20       19 21 21

 28-13= 15      21-19= 2

答案是2。

我试着天真地对它进行分类(合并)

共有1个答案

燕凯旋
2023-03-14

不幸的是,通过划分问题的简化,这个问题是NP难的。在分区问题中,你会得到一个数字列表,并想确定是否有办法将这些数字分成两个不相交的组,从而使这些数字的总和相等。

您可以将分区问题的一个实例编码为问题的一个实例,如下所示:创建一个n×2矩阵,其中每行包含集合中的一个数字和一个0。例如,给定集合{1,3,5,7,9},就可以生成矩阵

1 0
3 0
5 0
7 0
9 0

如果你仔细想想,这里的行排列将返回两列,这两列可以被认为是你将数字划分成的两个集合。如果列之间的最小差值为0,则可以将集合划分为两个相等的子集。如果不是,则无法对集合进行分区。因此,最小化min和max列之间的差异将允许您作为特例解决分区问题。

因为这个问题是NP难的,所以除非P=NP,否则你将无法找到任何简单的多项式时间算法来解决它。不过,你也许可以开发一些启发式来击败蛮力解决方案。

希望这有帮助!

 类似资料:
  • 我在这个问题上使用了公认的答案:JavaFX最小化未装饰阶段,以适当地最小化我的应用程序。 然而,不幸的是,默认窗口最小化了 我知道可以在未装饰的窗口中显示动画,因为我有一个应用程序具有这种行为(PotPlayer)。 如何使用JNA制作动画? 编辑:这是一个可以正常最小化JavaFX窗口的Kotlin代码段,还添加了bounty。

  • 本文向大家介绍C ++中的最小时差,包括了C ++中的最小时差的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个“小时:分钟”格式的24小时制时钟点列表,我们必须找到列表中任何两个时间点之间的最小分钟差。因此,如果输入类似于[“ 12:30”,“ 15:17”],则返回167。 为了解决这个问题,我们将遵循以下步骤- 定义一个大小为24 * 60 + 1的名为ok的数组,并且最初都为假。 n

  • 如何学习? 0)单元测试 1)最小化问题 2)带着疑问学习 3)反复区分状态,语境 4)培养成就感 想想本文是如何带你这样玩的?

  • 1.2.4. 暴露最小化 PHP应用程序需要在PHP与外部数据源间进行频繁通信。主要的外部数据源是客户端浏览器和数据库。如果你正确的跟踪数据,你可以确定哪些数据被暴露了。Internet是最主要的暴露源,这是因为它是一个非常公共的网络,您必须时刻小心防止数据被暴露在Internet上。 数据暴露不一定就意味着安全风险。可是数据暴露必须尽量最小化。例如,一个用户进入支付系统,在向你的服务器传输他的信

  • 本文向大家介绍浅谈Python3 numpy.ptp()最大值与最小值的差,包括了浅谈Python3 numpy.ptp()最大值与最小值的差的使用技巧和注意事项,需要的朋友参考一下 numpy.ptp() 是计算最大值与最小值差的函数,用法如下: 运行结果: 以上这篇浅谈Python3 numpy.ptp()最大值与最小值的差就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支

  • 问题内容: 我正在使用和作为模块捆绑程序编写一个Web应用程序。到目前为止,我的代码还很轻巧,整个文件夹的大小为25 kb。 我创建的虽然是2.2 mb。使用标志运行优化后,它将捆绑包减少到700kb,这仍然非常大。 我调查了文件,文件大小为130kb。 Webpack是否可能产生如此大的文件,或者我做错了什么? webpack.config.js 编辑 package.json: 问题答案: 根