Skip to main content

食事哲学者の問題は何ですか?

dining食事哲学者の問題は、コンピューターサイエンスの分野で使用される思考実験または例です。この問題は、類似性を使用して、コンピューターがリソースを共有するときに発生する可能性のある同期の問題を説明します。コンピューターの科学者は、食事哲学者の問題を使用して、これらの問題を解決するために使用されるアルゴリズムについて生徒に教えることです。テーブルの中央には、麺または他の食べ物のボウルがあります。各哲学者には、両側に1つのフォークまたは箸があります。つまり、合計5つのフォークまたは箸があります。食べるために、哲学者は2つの道具を必要とします。また、各哲学者は考えるのに時間を費やさなければならず、同時に考えたり食べたりすることはできません。食事哲学者の問題の中心は、行き詰まりを防ぐことの難しさです。この問題のデッドロックは、哲学者が自分が考えも食べられない立場に身を置いたときに起こります。たとえば、各哲学者が自分の左に道具を拾った場合、すべての調理器具が使用されているが、哲学者は2つを持たないため、誰も食べることができません。すべての哲学者が食事をすることを許可するために、学生は他の哲学者が考えている間に食べていることを保証するアルゴリズムを作成する必要があります。これにより、食事と思考の両方が失速せずに継続することができます。解決策の1つは、哲学者がフォークを拾う許可を与えたり否定したりする6番目のキャラクターであるウェイターを作成することです。その他は、哲学者が拾い上げてフォークを下ろして可用性を最大化する順序を規制することを伴います。他の人は、哲学者に、隣人が食べようとする前に食べているかどうかを確認するように伝えることを伴います。本質的に、各ソリューションには、哲学者が調理器具を考えたり、食べたり、拾い上げて置いたりするときに支配するアルゴリズムと呼ばれる一連のルールの開発が含まれます。diningダイニング哲学者の問題は、1965年に学生の試験質問として、オランダのコンピューター科学者のエドスガー・ディクストラによって最初に表明されました。それ以来、問題は多くの変更を受けています。それは多くのわずかに異なる形式で表示されますが、その一部はストーリーの詳細を変更するだけですが、困難な概念を実証するために問題に追加の制限を提案するものもあります。最も一般的なモダンバージョンは、Tony Hoareによって作成されました。