这个问题纯粹是出于好奇。我暑假放学了,我打算实现一个算法来解决这个问题,只是为了好玩。这就引出了上面的问题,这个问题有多难?
问题:给你一个正整数列表、一组数学运算符和等号(=)。您可以使用整数(以相同顺序)和运算符(任意次数)创建有效的数学表达式吗?
一个例子应该可以澄清任何问题:
给定: {2, 3, 5, 25} , {+, -, *, /} , {=}
输出:YES
表达式(我认为只有一个)是(2 + 3)* 5 = 25。您只需要输出 YES/NO。
我相信问题出在NP上。我这样说是因为它是一个决策问题(是/否答案),我可以找到一个非确定性的多时间算法来决定它。
一种。不确定地选择一系列运算符放在整数之间。
湾。验证您的回答是一个有效的数学表达式(这可以在恒定时间内完成)。
在这种情况下,最大的问题是:问题在 P 中吗?(即是否有确定性的多时间算法来决定它?)或者问题 NP 是否完整?(即,一个已知的 NP Complete 问题可以简化为这个问题吗?或者等效地,每个 NP 语言的多时间都可以简化为这个问题吗?)或者两者都不是?(即 NP 中的问题但不是 NP Complete)
注意:这个问题陈述假设 P 不等于 NP。另外,虽然我是 Stack Overflow 的新手,但我对 homework 标签很熟悉。这确实只是好奇,而不是作业:)