现实生活中的NP完整或NP难题


17

在现实生活中,是否有人在工作中定期解决NP完全问题或NP困难问题(通过试探法或追求次优解决方案等)?我知道它们会发生在调度,计划,VLSI设计等中,但是我试图了解当今经常使用程序员或工程师的主要行业。如果要开发专门知识或库,例如组合优化,在哪里可以将其用作编程工作的一部分?

有个人账户吗?


您是什么意思“定期”
康拉德·弗里克斯

@Conrad,嗯,我想这是一个主观的想法。我想说可能有超过5-10%的工作重点放在解决np-complete或np-hard问题上。
highBandWidth 2011年

我相信,游戏中的AI编程有可能成为NP完整的。
Michael K

那里存在许多NP难题(使用有限资源进行计划和规划通常是NP难题)。但是,组合优化是错误的方法。能够产生100!与能够应用特定于域的启发式方法相比,尽可能快的组合的有用性要差得多。
David Thornley

@David,我并不是说要通过组合优化来生成组合。我指的是一类问题,例如k-SAT或旅行推销员问题等
。– highBandWidth

Answers:


8

我能想到的一些事情(大多数我或多或少都参与过):

  • 语言和编译器的开发环境。诸如以下问题:该语法是否会产生歧义的语言?(这个问题实际上是无法确定的!)
  • 数据恢复。重新组装部分丢失的数据包或恢复碎片文件。(部位复杂度)
  • 软件安全性。通过一个软件评估所有可能的执行路径,以确定是否可以将某些观察到的行为归因于该软件。(停顿问题?)
  • 后勤。根据要传输的数据包,数据包的大小和到达的位置来优化传输方法的使用。(至少是指数)

有很多标准示例,例如查找最短路径,护士调度等,但是如果您要进行组合优化,则对这些都一无所知:)


那么,物流公司是否聘用了专门致力于解决这些优化问题的程序员,或者这些操作中的大多数通常只解决了一次,而对于大多数公司来说只是重复一次?+1是许多示例。您是否曾经参与其中的任何一项?
highBandWidth 2011年

我为前两个工具编写了工具,第三个是同事正在研究的工具。我希望大型物流公司会积极地进行这一领域的研究,因为如果他们通过某种新算法实现百分之几的额外性能,可以为他们节省数百万美元:)
Deckard

我曾面试过一个旅行推销员的角色。大型的母公司有一间充满博士学位的房间,这些博士被奴役,希望他们的选路能够提高百分之十分。每天对他们来说价值几百万美元。所以那些地方确实存在。路由和调度是两个大问题-假设您有1000名员工,而一家工厂要进行两三个班次。现在每个人都安排到工作记在下个月保持这些200个规则,每个人的喜好... ...

9

我已经使用了时间受限的模拟退火来解决触摸板制造中类似旅行商的问题。我们可以从每块面板的激光蚀刻周期中节省每毫秒的时间,这将提高机器的产量,利用率并因此提高利润率,因此我付出了很多努力来最大程度地减少划线路径之间的停滞时间(非划线路径)(显然无法进行优化)。

我使用了一个有时间限制的算法来解决问题的NP硬度,因为我们无法承担优化计算可能要花费比最佳路径节省的时间更长的风险。当机器将面板从加载位置移动到激光头位于最近角上的位置时,我有时间进行一些模拟。该算法几乎不会在移动的几百毫秒内完成,但是几乎总是返回比我们以前使用的任何简单的非自适应模型(例如螺旋形或蛇形路径)更好的划线路径。


2
这很酷。但是我认为每个面板都有相同的模式,您只需解决一次问题,而不是为每个小部件一遍又一遍。为什么每次都要解决它?
highBandWidth 2011年

2
每个面板的理想图案都是相同的,但是面板的机械对准,过程中前几层的位置以及激光刻划头的平铺特性意味着必须为每个面板计算一组动态的子图案单独然后被优化。这是一个有趣的问题,尤其是在时间限制的情况下。
Mark Booth,

7

我正在(实际上现在)正在研究多个局部DNA序列比对的生物信息学问题。这样做的目的是,如果某个特性相同的基因(在ChIP芯片实验中具有相似的表达谱或相同的转录因子结合)的许多序列在某个时刻强烈对齐,那么您可能已经发现了它们相同的原因属性。再说一次,我对问题的统计方面更感兴趣。即使是NP难题,在实践中使用启发式方法也不会造成太大损失。问题的有趣部分,恕我直言,是信噪比问题。


1
您使用的是经典组合/人工智能方法还是统计方法。在某种程度上,所有现代的nlp,集群,机器学习都处理np完全问题,但通常是从统计角度进行攻击。尽管如此,它仍然很有趣且相关。这是在学术界还是工业界?
highBandWidth 2011年

@highBandWidth:我的方法是统计的。我在学术界。我正在做的研究的全部重点是,如果您忽略统计问题,而只关注组合问题,那么“坏事就会发生”。
dsimcha 2011年

3

我真的不知道NP完整/困难意味着什么,但是我认为供应自动计划就是一种。

您有90天远期需求计划,可针对100个产品SKU:啤酒!SKU的100种产品来自:

  • 有10到15种1级基本原料酿造的东西,它们都是用千升大罐头酿造的,需要一天的时间。
  • 冲泡后,必须添加一些材料(沥水?),并且必须静置10-15天,然后才能得到15-20种2级原料;
  • 最后,当准备就绪时,应添加一些材料,这是3级原料,称为可饮用啤酒,带有CC。30种啤酒;
  • 啤酒可以3 dl,5 dl装瓶,有时会得到特殊的颈味(4级),然后可以包装成5x4盒,6包(5级)。

每种操作都有机器“生产线”:从酿造到包装。这些机器可以执行更多的操作,例如,某些包装机可以生产6件装和3件装,而其他包装机只能生产6件装。存在限制,例如速度,或者大的煮沸水壶用于最小的煮沸。最多6000升啤酒,最多8000升(但如果是淡啤酒,则最小为5000升,最大为7000升)。等等,在每个级别上。

任务:正如我提到的,有一个针对100种5级(瓶装,包装好的东西)的需求计划。做一个最佳 manufactoring计划为所有5个级别,所有的机器。尽量减少机器开关(例如,装瓶.5,.5,.5,.3,.3,.3比.3,.5,.3,.5,.3,.5更好,开关更少,减少装瓶机的停工时间)。客户优先:某些客户只需要在啤酒中保留超过50%的有效时间就可以发货。等等

发现瓶颈(eh),通过在这些点上添加不存在的计算机来制定替代计划,然后可以使用最佳虚拟方案来建议购买新计算机。

够难吗,还是我应该告诉您一家纺织厂如何运作?

(个人评论:网络,银行和物流是具有挑战性的领域,但与制造问题相比,它们是婴儿玩具。)

免责声明:出于安全原因,数字会失真,数量级是真实的。


您是否正在为此类工作或为雇主解决此类问题的工具?
highBandWidth 2011年

1
好吧,制造业是后勤方面的要旨。在这方面,绝对比融资难。但至少它处理的是已定义的问题,而不是随机方程和松散定义的运算顺序!
Michael K

1
资源最适合的任何一种调度算法都可能等同于背包问题,即NP完全问题。
Scott Whitlock,

我的一个朋友几年前已经在Excel + VB中创建了DP / SP系统。它不包含自动计划,该应用程序对于Excel来说太胖了。因此,我们刚刚制作了一个基于MySQL / PHP / AJAX的协作可扩展(请参阅:数据流-又名基于流的编程-方法)电子表格框架(me),并采用了XLS版本(朋友)中的biz逻辑。我们也实现了自动计划(朋友)。编写电子表格是一个疯狂的主意,但它确实有效。最好的部分:XLS-> SQL开关有些妙!我们可以使用任何工具/平台(PHP,Java,我们想要的)对数据进行任何处理(例如,自动计划)。
ern0 2011年

@ ern0,NP-complete / NP-hard基本上是指您甚至可以假设能够采取的捷径,而不是一一尝试所有的可能性。理论家花费大量精力来找出捷径,例如说,如果我们知道ABC路径总是比AC直接长,我们可以使其更快,并证明在最佳值的50%以内。等等
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.