ヒューリスティクス
ヒューリスティックとは、問題を解決するための実用的な方法のことです。偶然よりはましだが、必ずしもうまくいくとは限らない。人は知性、経験、常識を駆使してヒューリスティックを開発する。試行錯誤は最も単純なヒューリスティックであるが、最も弱いヒューリスティックの一つである。経験則や「教育された推測」は、単純なヒューリスティックの別称です。ヒューリスティックは、確実に結果が得られるわけではないので、常に例外が存在します。
飛躍する前に見よ」は行動の指針であるが、「結果を考えよ」はもう少し明確である。また、ヒューリスティックが一連のステージであることもあります。医者が患者を診察するとき、一連のテストと観察を行います。何が悪いのかはわからないかもしれませんが、成功する可能性を最大限に高めます。これを診断といいます。
コンピュータサイエンスでは、「ヒューリスティック」はアルゴリズムの一種です。アルゴリズムは、問題に対する良い解決策を得るために書かれます。ヒューリスティック・アルゴリズムは、通常、かなり良い解決策を見つけるかもしれませんが、その解決策が正しいという保証や証明はありません。アルゴリズムを実行するのにかかる時間も考慮しなければなりません。
背景
ヒューリスティックスとは、限られた知識と時間の中で、問題に対する適切な解決策を見つける技術です。より正式には、ヒューリスティックスは経験に基づいており、簡単なルールを使って解決策の検索を高速化することができます。完全な探索には時間がかかりすぎたり、難しすぎたりすることがあります。
より正確に言えば、ヒューリスティックスとは、人間や機械の問題解決をコントロールするために、簡単にアクセスできる、しかし適用範囲の狭い情報を用いた戦略である。
ヒューリスティックは、科学の分野では使えるが、そうでない分野もある。経済学の分野では、1%の誤差があっても問題ないことが多い。1度の誤差がある望遠鏡は、遠くの物体に向ければおそらく使えませんが、同じ望遠鏡を通りの向こう側の窓に向ければ、おそらくこの誤差を許容できるでしょう。1度の誤差は、短い距離では大きな影響を与えません。
例えば、橋の重量をヒューリスティックに推測することで、橋の材質を木、石、鉄のいずれにすべきかを判断し、必要な材料を適切な量だけ購入して、橋の正確な設計を完成させることができます。
しかし、コンピュータサイエンスのように、非常に技術的な分野でヒューリスティックスを使用することは、有害な場合があります。コンピュータサイエンスがその一例です。コンピュータが多かれ少なかれ望む動作をするようにプログラムすると、深刻な不具合が生じる可能性があります。そのため、コンピュータの作業は一般的にかなり厳密でなければなりません。しかし、コンピュータがヒューリスティックな解決策を安全に計算できる分野もあります。例えば、Googleの検索技術はヒューリスティックな手法に大きく依存しており、検索クエリに完全に一致するものが見つからない場合には「ニアミス」マッチを生成します。これにより、ユーザーは検索結果の間違いを修正することができます。例ピーター・スミス」という名前を検索し、その名前が見つからなかった場合、検索エンジンは代わりに「ピート・スミス」とヒューリスティックに一致させ、検索エンジンを使用する人は、ピートとピーターが同一人物であるかどうかを判断しなければならない。
例
ポリア
ここでは、ポリアの1945年の著書『How to Solve It』から、その他のよく使われるヒューリスティクスを紹介します。
- 問題を理解するのが難しい場合は、絵を描いてみましょう。
- 解決策が見つからない場合は、解決策があると仮定して、そこから何を導き出すかを考えてみる(「逆算」)。
- 問題が抽象的であれば、具体的な例を検討してみる。
- より一般的な問題を先に解決してみる。「発明家のパラドックス」:より野心的な計画の方が成功の可能性が高いかもしれない。
梱包の問題
ヒューリスティックスが有効な例として、梱包問題があります。この問題は、いくつかのアイテムを梱包することで構成されています。この問題には、守らなければならないルールがあります。例えば、各アイテムには価値と重さがあります。問題は、最も価値のあるアイテムを、可能な限り少ない重さで手に入れることです。他の例としては、車のトランクのような限られたスペースに、サイズの異なるいくつかのアイテムを収めることが挙げられます。
問題の完璧な解決策を得るためには、すべての可能性を試す必要があります。しかし、すべての可能性を試すには長い時間がかかり、平均して半分の可能性は解決策が見つかるまで試さなければならないため、これは良い選択肢ではありません。そこで多くの人は、一番大きなアイテムから始めて、それをはめ込み、その周りに他のアイテムを並べるようにします。これでほとんどの場合、良い解決策が得られます。しかし、そのような解決策が非常に悪く、別のテクニックを使用しなければならない場合もあります。
したがって、これはヒューリスティックな解決策です。
梱包問題の例。これは一次元(制約)のナップザック問題で,金額を最大にして全体の重量を15kg以下にするためには,どの箱を選べばよいか?多次元の問題では,箱の密度や寸法を考慮することができ,後者は典型的な梱包問題である. (この場合の解答は、緑の箱以外のすべての箱を選ぶことになります)
質問と回答
Q: ヒューリスティックとは何ですか?
A: ヒューリスティックとは、問題を解決するための実用的な方法で、偶然よりはましですが、常にうまくいくわけではありません。
Q: ヒューリスティックはどのように開発されるのですか?
A: 人は、知性、経験、常識を駆使して、ヒューリスティックを開発します。
Q: 最も単純なヒューリスティックとは何ですか?
A: 最も単純なヒューリスティックは、試行錯誤です。
Q: 単純なヒューリスティックの他の呼び名は何ですか?
A: 単純なヒューリスティックの他の名前は、経験則や「教育された推測」です。
Q: ヒューリスティックには常に例外があるのでしょうか?
A: はい、ヒューリスティックは必ず結果が出るというものではないので、必ず例外があります。
Q:医学の分野での診断とは何ですか?
A: 診断とは、医師が患者を診察する際に、成功する確率を高めるために行う一連の段階のことです。
Q:コンピュータサイエンスにおける「ヒューリスティック」とは何ですか?
A:コンピュータサイエンスにおいて、ヒューリスティックとは、通常、かなり良い解を見つけることができるかもしれませんが、その解が正しいという保証や証明はないアルゴリズムの一種です。