最近、私は計算の複雑さの概念を非公式に説明した痛みを伴う楽しい経験を経験しました。才能のある独学のプログラマーはアルゴリズムや複雑さの正式なコースを受講したことがありません。驚くことではないが、概念の多くは、いくつかの例で最初のが、作られた意味で奇妙に思えた(PTIME、扱いにくさ、uncomputability)他の人がより自然に来るように見える一方で、(リソース、漸近解析などの削減、時間と空間を経由して、問題の分類を)。SATを誤って認めるまで、すべてが順調でした効率的に解決できます*実際には...そしてそのように、私はそれらを失いました。私がどれほど説得力を持って理論を主張しようとしていたかは関係ありませんでした。子供はそれがすべて人工的なくだらない数学であると彼が気にするべきではないと確信していました。まあ...
¯\ _(ツ)_ /¯
いいえ、私は心を痛めていませんでしたし、彼が何を考えていたかについても気にしませんでした。それはこの質問のポイントではありません。私たちの会話は私に別の質問を考えさせました、
理論的には難解(超多項式時間の複雑さ)であるが、実際には(ヒューリスティック、近似、SATソルバーなどを介して)解ける問題について、実際にどのくらい知っていますか?
あまり気づかなかった。私は、巨大なインスタンスを効率的に解決するいくつかの非常に効率的なSATソルバーがあり、シンプレックスが実際にうまく機能し、さらにいくつかの問題やアルゴリズムがあることを知っています。より完全な絵を描くのを手伝ってもらえますか?このカテゴリに含まれる既知の問題または問題のクラスはどれですか?
TL; DR:実際には、直感に反して解決できる問題とは何ですか?さらに読むための(更新された)リソースはありますか?それらの特性はありますか?そして最後に、一般的な議論の質問として、我々はそうではないでしょうか?
EDIT#1:例えば、約私の最後の議論の質問に答えるためにしようとして特徴づけを、私はに導入された平滑化解析アルゴリズムの、連続ワーストケースの間を補間すること[1]でダニエル・スピールマンとシャン・フア・テンによって導入コンセプトとアルゴリズムの平均ケース分析。これは、上記の説明とまったく同じではありませんが、同じ概念を捉えており、興味深いものでした。
[1] Spielman、Daniel A.、およびShang-Hua Teng。「アルゴリズムのスムーズな分析:シンプレックスアルゴリズムが通常多項式時間を要する理由。」Journal of the ACM(JACM) 51、no。3(2004):385-463。