NP完全性の教育-チューリング削減対カープ削減


25

コンピューターサイエンス専攻にNP完全性を教えるのに最適な方法についての質問に興味があります。特に、Karp削減またはチューリング削減を使用してそれを教える必要がありますか?

NP完全性と削減の概念は、すべてのコンピューターサイエンス専攻が学ぶべきものだと思います。しかし、NP完全性を教えるとき、カープ削減の使用にはいくつかの欠点があることに気付きました。

第一に、カープの削減は一部の学生にとって不必要に混乱させるようです。削減の直感的な概念は、「問題Xを解決するアルゴリズムがあれば、それを使用して問題Yも解決できます」です。これは非常に直感的ですが、カープの削減よりもチューリングの削減にはるかに良く対応します。その結果、NP完全性を証明しようとする学生は、直感に惑わされ、誤った証明を形成することがわかります。両方の種類の縮約を教えようと試み、カープ縮約のこの側面を強調することは、不必要な形式主義のように感じられ、不必要な授業時間と不必要な技術的詳細のように感じることに学生が注意を払うことがあります。このより制限された削減の概念を使用する理由は自明ではありません。

カープ削減とチューリング(クック)削減の違い、およびそれらがどのようにNP完全性の異なる概念につながるかを理解しています。カープの削減により、複雑さのクラス間の区別がより細かくなります。したがって、複雑性理論を真剣に研究するためには、カープ削減が明らかに正しいツールです。しかし、これを学んでいるだけで複雑性理論に進まないコンピューターサイエンスの学生にとって、この細かい区別が重要であるかどうかは、彼らがさらされるために重要です。

最後に、学生として、私は「トートロジー」のような問題に出くわしたとき戸惑っていたのを覚えています。たとえば、ブール式を与えられ、それがトートロジーであるかどうかを確認します。紛らわしいのは、この問題が明らかに難しいことです。そのための多項式時間アルゴリズムは、P=NP; この問題を解決することは、明らかにトートロジーの問題を解決するのと同じくらい難しいです。ただし、直感的にトートロジーは充足可能性と同じくらい困難ですが、トートロジーはNP困難ではありません。はい、今日これがなぜそうなのか理解していますが、当時私はこれに戸惑っていたことを覚えています。(結局、頭を突き抜けたのは、どうしてNPハードとコNPハードを区別するのかということです。とにかく、それは人為的なものであり、実践によってあまり動機付けられていないようです。実際の観点から見ると、co-NPの硬度はNPの硬度と本質的に同じ実際的な結果をもたらすように思われますが、なぜこの区別にすべてがこだわるのでしょうか?はい、私は知っています答えですが、学生として、私はこれが主題をより不可解でやる気が少ないと感じただけだったことを覚えています)

だから、私の質問はこれです。NP完全性を生徒に教えるとき、カープ削減またはチューリング削減を使用して教える方が良いですか?チューリング縮約を使用してNP完全性の概念を教えようとした人はいますか?もしそうなら、それはどうでしたか?チューリング簡約を使用して概念を教え、カープ簡約に関連する概念上の問題をスキップした場合、非自明な落とし穴または欠点はありますか?


関連:ここここを参照してください。文献でKarpリダクションを使用する理由は、NP硬度とco-NP硬度を区別できるためです。ただし、この能力がすべてのCS専攻で取られるべきアルゴリズムクラスの学習目標にとって重要であるかどうかの教育学的観点に焦点を当てた答えを与えていないようです。同様の議論があるcstheory.SEのこちらも参照してください。


動機付けの観察:NPの問題に対するチューリング還元は、を暗示することは知られていません。XNP

1
@RickyDemer、わかりました-しかし、問題を実証しようとするときは難しいのですが、がNPにあるかどうかはあまり気にしません。そして、問題を示すことは難しいNP、NP完全、NP困難、などの主要なアプリケーションですX
DW

1
そんなに違いはありません。クックの「他の問題の解決策を求める」という考え方はプログラミングにとっては自然なことですが、問題のインスタンス間のマッピングをより抽象的な背景(ベルトの下にある離散的な数学)を持つ人々にとっても当然です。
フォンブランド

回答:


10

Karp(多対1)削減を使用して非常に確実に教えると思います。ポリタイムチューリング削減(Cook)を使用する利点に関係なく、カープ削減は標準モデルです。

誰もがKarpを使用しており、クックを教える主な落とし穴は、教科書を読んだり、教科書を教えられなかった人と主題について話し合ったりするたびに病理学上混乱する学生のクラス全体になってしまうことです。

クックの削減はいくつかの点でより賢明であり、NP硬度とcoNP硬度の間には実用的な用語で区別がないことに同意します。両方とも「この問題はかなり困難であり、大規模なインスタンスに対処できる一般的で効率的で正確なアルゴリズム。」一方、NPとcoNPの区別は、Karp削減に基づく理論の成果物だけではありません。非3色性のグラフや、  頂点のすべてのセットが少なくとも1つのエッジ。どういうわけか、問題の「自然な」バージョンはしばしばcoNPではなくNPにあるようです。k


7

両方を教える方が良いです!コンピューターサイエンスの専攻は、両方について知っている必要があります。

NP完全性を教えるためにクック削減を使用する人は誰も知りませんが、複雑性理論家は明らかにそうではありません。非複雑性理論家は通常、Karpの論文以来の標準定義であり、すべての教科書(私が知っている)で使用されています。標準的な用語を守らないと、後で混乱を招くことになります。

クック削減は、本質的にブラックボックスサブルーチンを使用して問題を解決しています。生徒がプログラミングの経験を持っている場合、説明や動機付けが簡単です。Cookの削減がなければ、検索の問題、最適化の問題などの間の削減を議論できないため、これらは不可欠です

NPNPPNPNP

NPcoNPNPNPNPPNP

バツAfバツB


2
NPNPNPNP

@DWは、コメントの(2番目と3番目の)「Karp」の代わりに「Cook」を意味しましたか?それでも、Cookを使用して問題が困難であることを証明できますが、それは問題ではありません。問題は、NPがそれらの下で閉じられていないことです。つまり、クック削減は問題の検証可能性を効率的に保存しません。
カヴェー14

2
おっと、はい、私はクックを意味し、カープは意味しませんでした。(argh!)NPはクック削減では閉じられていないことを理解していますが、大学生にアルゴリズムを教える方法の観点から、それが問題である理由を詳しく説明できますか?どのような教育的または概念的な問題が発生しますか?そのようなアルゴリズムを教え、NPがクック削減の下で閉じられていないことを認めた/受け入れた場合、負の結果はどうなるでしょうか?たとえば、学生の間で問題のある概念的な誤解を引き起こすでしょうか?
DW

-3

削減の直感的な概念は、「問題Xを解決するアルゴリズムがあれば、それを使用して問題Yも解決できます」です。

この特定の教育問題に取り組むための興味深い方法は、NPの完全性が、直感的でもない決定不能性と類似性および類似性を持っていることを認識することです。生徒は、停止するアルゴリズムを聞いたことがあるだけで授業に参加します。しかし、TCSの原則定理は、保証された解決策がない問題、つまり停止問題が存在するということです。実際、決定できない問題は、人為的なものとはかけ離れたものに見え始め、明らかにやや不公平です。

そう、理論はプロセスとして基本的な計算を表示するために私たちに道を語っていることがあり、いくつかの状況下で答えを返します。他の状況では、そうでない場合があります。NPの完全性と決定性については、基本的かつ最も一般的な質問は、「YP時間で戻るアルゴリズムがありますか」です。しかし、これはNP時間で戻るアルゴリズムについては何も言いません。アルゴリズムはY、1つのインスタンスに対してP時間で戻ることができますが、他のインスタンスでは答えを返すことはできません。理論は、ここでは注意を払わなければならない明確な違いがあることを教えています。直感的でない場合、それは私たちの基本的な直観を再調整する必要があることを意味します(理論的な教えの場合によくあることです)。


言い換えれば、明らかYにP時間で戻るが、P時間よりも「長い」時間を返すアルゴリズムが存在する可能性がNあり、理論は答えるのにかかる時間に基づいて/指向/焦点を当てていますY
vzn

1
5つを超えるプログラムを作成した学生は、直接的な個人的な経験から「止まらないアルゴリズム」の概念に精通しています。
デビッドリチャービー

日常の経験/類似性に基づいて、要求に応じてcoNPをより直感的な方法で定義しようとするだけです。私自身も常に直感的でないと感じています。誰もがより良い方法を持っていますか?
vzn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.