いくと考えていいのか、それとも問題は、NP完全問題の仕事りますか?[定休日]

StackOverflow https://stackoverflow.com/questions/1724673

  •  19-09-2019
  •  | 
  •  

質問

今日がありました 質問 では、著者らはNP完全問題の面接とは言っていなければならないとも言われていったといえるでしょう。

目的は何かを問などはありますか?どの行動は、聞き手に期待をお伺いする場合は、なんだろうって。証?有用なヒューリスティクス?とはいっても正当ない場合で知られていませんがNP完全問題の皆様にとって知っておくべきこ?(ある たっぷりの)

役に立ちましたか?

解決

私には完全に合法です。あなたがコンピューターサイエンスの専門家である場合、問題が難しいと思われる理由を非公式に議論することができるか、(さらに良い)既知のNPハードの問題からの削減のスケッチを提供できるという良い可能性があります。

多くの現実世界の問題は最終的にNPハードであることが判明し、StackoverFlowは、難しい問題であることが判明した問題の複雑さについても時々質問します(たとえば、NPハード)。これは、解決が困難であることが知られている問題を認識し、議論することができるCSプロフェッショナルツールボックスの重要な部分です。

他のヒント

このようなことを尋ねることに問題はありません。また、プログラマーは、RoteによってNP完全な問題を認識することを期待されるべきではありません。ただし、特定の問題がNP完全であるかどうかに関係なく、アルゴリズムが潜在的に遅いことを特定できるはずです。

もちろん? NPコンプリートは、解決できないことを意味するものではなく、ソリューションが遅くなることを意味します。候補者がブルートフォースソリューションを選択するか、動的なプログラミングソリューションを試してみてください。そして、このタイプの質問は、ランタイムやその他の有用な理論に関する質問につながる可能性があります。

一部の国では違法なインタビュー質問のカテゴリーがあり、通常は雇用主のビジネスではない個人情報に関連しています。それはさておき、インタビュアーがインタビュイーの能力のアイデアを得るのに役立つと感じている場合、どんな質問も公正なゲームです!

単なるコードモンキーではなく思想家を求めるポジションのために雇っている場合、申請者にこの種の問題を投げることが役立つかもしれません。問題が「よく知られている」ことがNPであるかどうかを誰が気にしますか?男が良ければ、彼は問題を分析する際にその理解に来るでしょう。それは、インタビュアーが見たい結果かもしれませんし、申請者がさらに分析前をさらに行い、彼が問題をどのようにブルートしているのか、またはそれをより管理しやすくするために適用することができると考えることができる最適化を説明することができます。 。

私はこれに問題はありませんが、一般的なインタビューにおけるこれらの種類の質問の有用性に多少疑問を呈しています。

インタビュアーとしてこのような質問をすることの利点は、その人が問題にどのようにアプローチするか、そして彼らがどのように考えているかを見ることです。彼らにそれを話すように言うと、彼らがどのように困難な問題に近づくかについてかなり知ることができます。

そうは言っても、インタビューの中で、ほとんどの人は最高の状態ではありません。したがって、このようにやや「トリッキー」なものを投げることは、しばしばやり過ぎです。

インタビュー対象者が答えを知らないことを知っている質問をするのは有効だと思います。

誰もが答えを知らない問題に遭遇します。このタイプの質問は、インタビュー対象者の内部プロセスが何であるかについての洞察を提供します。物事を論理的に結論付け、正解の策定を開始した場合、それが最良の動的プログラミングアルゴリズムではない場合でも、それは彼らがうまく推論し、答えを発見できることを示しています。

また、彼らはおそらく問題についてすべてを知っていない可能性が高いので、この種の質問は、インタビュー対象者が助けや明確化を求めることにどれほど快適であるかを見ることができます。

このタイプの質問に答える最良の方法は、何かが欠けているかよく知られていないかどうかを説明し、答えを仮定して、なぜそれが正しいと思うのか、なぜそれが最高ではないのかを指摘することだと思います。解決。

答えが難しい質問をするのは良いことです。プログラマーが問題を通じてどのように推論しているかを確認するのは良いことです。

しかし、それはすべて、インタビュアーが質問をどのように尋ねるかに依存し、数学的な天才ではない場合、プログラマーに解決策に向けて促します(つまり、彼らがどのように推論し、「それは良いスタートだが、何が良いか」のような質問にどのように反応するかを見るためにif ... ")自閉症であり、4.3秒で最適なソリューションを提供できるかどうかを検出するのではなく)。

インタビューは非常にストレスの多い問題であることを覚えておく価値があります。多くの人がそのような質問をうまく答えるのが非常に難しいと感じることがあります。通常、面接担当者を過度のストレス/プレッシャーにかけないでは、はるかに単純な質問で十分です。

彼らがストレスにどのように対処するかを意図的に見ようとするなら、それはただ愚かである - それはプログラマーが彼らの仕事で対処しなければならないようなストレスではないので、あなたは価値のあるものをテストしていません。

インタビュー対象者に通知することなく、Nighに不可能な質問をするのはある種の意味ですが、観察された問題解決では、批判的思考スキル、問題解決のアプローチ、およびプレッシャーまたは失敗の処理方法を示すことができるように、質問がしばしば尋ねられます。 。

私は解決できなかったインタビューの質問をされました、そして、私はそれのためにインタビューに「失敗した」とは思わない。

というのは正当で聞のインタビューかfactorise番号?

ことが知られていないNP-Cが多項式時間でのソリューション[*]が知られており、その確かないとなることが分かっているP.

と思い、回答をもとになるのか、の問題は"あり"と同じます。一部の問題を解決するスケールがうまく管理できなければならない解決とにかく特定用の入力端子が付いています。が必要な場合はプログラマ対応できるような問題があり方してもらうことを目的にして、証明で面接、それをピッチに対応していません。るのかクがあります。

る場合は、請求CompSci背景に、そのあるべきものを提供できるグッドソリューションにあるNP-Cの問題など、解決のナップザック問題における動的なプログラミング私は考えるでしょう者のためのプログラミングの仕事に問題になっ見たことのない、実際に証明ではNP完全(例えば削減によるリュックサック、指定された問題)。必要なも多くのプログラマー当たりできる会社はい(通常は0)を、しょうが見つかの候補続きを変えるという価値をインタビュー時間---

[*]多項式のサイズは、入力ビット単位のことです。よく見る人を議論アルゴリズムの複雑さの整数のような問題が発生しfactorisationのサイズの番号で表される入力などの"sqrt(N)の試作部門では".でも、それだけではありませんかNP NP-Cが定義されています。

いいえ、それは失礼であり、インタビュアーが権力の立場にいることを好むという兆候です。ハハ、ピーン!私は答えを知っています、そしてあなたはしません!そして少年、私はあなたにそれを思いついようとしてあなたを身もだえさせるのが大好きですか!

有用なインタビューの質問は、それがよく知られている質問であったのか、それとも何らかの形で明らかにNP不完全であるかどうか、そして実現可能性の議論を奨励する方法で尋ねたのかということです。

インタビュー中にプログラミングの課題としてNP完全な問題を与えることには何の問題もありません。インタビュー中に問題に対する多項式時間の解決策を見つけることを期待することで、何か問題があると思うだけです。

インタビュアーは、候補者がさまざまな状況をどのように扱うかを見たいと思うはずです。候補者が簡単な解決策を見つけることができない状況を含めます。 「不可能な」質問は、単純な解決策がないときに候補者がどのように反応するかを示しています。候補者はあきらめますか?候補者はいくつの異なる試みを検索しますか?ソリューションはどの程度広がりましたか?候補者はいつ助けを求めますか?候補者は、問題が「公平ではない」と不平を言っていますか?

要するに、このようなインタビューの質問は、p = npの解決に関するものではありません...それは心理的な答えです。

インタビューの前にそのような質問が与えられた場合(インタビューで回答するために)私はそれが大丈夫だと言うでしょう..しかし、その場でのそのような困難な問題を解決するために、その場では間違いなくプログラマーがうまくやらないでしょう、そしてプログラマーがそれをうまくやっている場合、彼らはその場で行動することができることを意味します(これは、時間をかけて考えられるすべての欠陥をチェックする必要があるため、プログラミングに最適なものではありません)、または以前に同様の問題を見たことがあります。

編集:または、問題についての議論は、それを完全に解決するかどうかにかかわらず、行動計画を立てていると言うように、そしてそれを行うことができ、それを行うための速い(しかし困難な)方法があるかどうかを議論するなど。インタビューを行うために、インタビューで50行以上のCコードを書き留める必要があるとは言いませんが、それを解決する必要はありません

それは悪です!

インタビュアーがインタビュアーにNP完全な質問をしている場合、彼らが合理的に期待できる回答は、インタビュイーが問題がNP完全であるという証拠で応答することです。大学の宿題のような低ストレス環境では、これには通常、明るい学生が2〜3時間以上かかります。証明自体は、完全に、おそらく数時間の作業自体を完全に書き出すために数ページかかることがあります。インタビューのようなストレス環境では、インタビュー対象者がこれがNP完全であることを認識していないことを期待できます。

唯一の合理的な選択肢は、インタビュー対象者が近似アルゴリズムを作成することです。ただし、この場合、インタビュアーはそれを作る必要があります 明示的に 彼らがそうであることを明確にします 大丈夫 近似付き。

それでも、ほとんどの近似には、正解の2つの順序のみが付属しています。

もう1つの代替案があると思います。インタビュー対象者は、検索タイプのアルゴリズムが最も適切なものである可能性があることを示唆しています(たとえば、NPコンプリートである整数ドメイン最適化問題を考えてみましょう。まともな結果を生成するアルゴリズム。)

私は彼らにp!= npまたはp == npを証明するように頼むことを好みます。いつか候補者がそれに答えます、私は彼らの答えを盗んで有名になります!

しかし、もっと深刻なことに、私はそれが完全に公平だと思います。ほとんどのNP完全な問題は解決が簡単で、非常にゆっくりと実行されます。しかし、仕事が複雑さ理論について多くを知ることを要求しない限り、彼らが実証する必要があるのは、彼らが解決策が遅くなることを理解することです。ボーナスポイントは、それが非肥沃な時間であることを知っている場合は、NPが完了していることを知っている場合はゴールドスターです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top