【发布时间】:2010-11-01 19:35:00
【问题描述】:
这个问题纯粹是出于好奇。我暑假放学了,我打算实现一个算法来解决这个问题,只是为了好玩。这就引出了上面的问题,这个问题有多难?
问题:给定一个正整数列表、一组数学运算符和等号 (=)。您可以使用整数(以相同顺序)和运算符(任意次数)创建有效的数学表达式吗?
一个例子应该可以澄清任何问题:
给定:{2, 3, 5, 25} , {+, -, *, /} , {=}
输出:是的
表达式(我认为只有一个)是 (2 + 3) * 5 = 25。你只需要输出 YES/NO。
我相信问题出在 NP 上。我这样说是因为这是一个决策问题(是/否的答案),我可以找到一个非确定性的多时间算法来决定它。
一个。不确定地选择一系列运算符放在整数之间。
湾。验证你的回答是一个有效的数学表达式(这可以在常量中完成
时间)。
在这种情况下,最大的问题是:问题在 P 中吗? (即是否有确定性的多时间算法来决定它?)或者问题 NP 是否完整? (即,可以将已知的 NP Complete 问题简化为这个问题吗?或者等效地,每个 NP 语言的多时间都可以简化为这个问题吗?)或者两者都不是? (即 NP 中的问题,但不是 NP Complete)
注意:这个问题陈述假设 P 不等于 NP。另外,虽然我是 Stack Overflow 的新手,但我对 homework 标签很熟悉。这确实只是好奇,而不是作业:)
【问题讨论】:
-
P != NP 是一个被广泛接受的猜想。它没有被证明或证伪。当问一个问题时,我总是被告知要尽可能准确。这就是为什么我认为有必要将其作为注释包含在内。
-
@Toddeman - 好理性,聪明的评论被删除!
-
您的表达式暗示了许多其他有效的表达式:2+3 = 25/5、25/5 - 3 = 2 等等。当然,这与问题没有实际关系。
-
@TokenMacGuy - 问题指出整数必须与给定的顺序相同。
-
由于整数必须保持有序,因此将其称为集合只会使事情变得混乱。集合没有顺序。
标签: algorithm math np-complete