この質問は純粋に好奇心からです。私は夏の間学校を休んでおり、楽しみのためにこれを解決するアルゴリズムを実装するつもりでした。それが上記の質問につながりました。この問題はどれくらい難しいですか?
問題: 正の整数のリスト、一連の数学演算子、および等号 (=) が与えられます。整数 (同じ順序で) と演算子 (何回でも) を使用して有効な数式を作成できますか?
例は、質問を明確にする必要があります。
指定: {2, 3, 5, 25} , {+, -, *, /} , {=}
出力: はい
式(私が思うのは1つだけ)は(2 + 3)* 5 = 25です。YES / NOを出力するだけで済みます。
問題はNPにあると思います。これは決定問題 (YES/NO の答え) であり、それを決定する非決定論的ポリ時間アルゴリズムを見つけることができるためです。
を。整数の間に配置する一連の演算子を非決定論的に選択します。
b. 答えが有効な数式であることを確認してください (これは一定の時間で行うことができます)。
この場合、大きな問題はこれです: 問題は P にありますか? (つまり、それを決定する決定論的なポリ時間アルゴリズムはありますか?) または問題の NP は完全ですか? (つまり、既知の NP 完全問題をこれに還元できますか? または同等に、すべての NP 言語のポリ時間はこの問題に還元できますか?) またはどちらでもない? (つまり、NP に問題がありますが、NP 完全ではありません)
注: この問題文は、P が NP と等しくないことを前提としています。また、スタック オーバーフローは初めてですが、homework タグには慣れています。これは確かに単なる好奇心であり、宿題ではありません:)