mirror of
https://github.com/krahets/hello-algo.git
synced 2026-11-02 03:05:24 +08:00
* Retranslate the complete Japanese online edition from Chinese * Fit Japanese homepage labels and localize heading permalinks * Point Japanese contribution instructions to the Japanese preview * Replace locale conditionals with multilingual UI tables
2.2 KiB
2.2 KiB
まとめ
要点の振り返り
- 貪欲法は通常、最適化問題の解決に用いられます。各意思決定段階で局所的に最適な選択を行い、大域的な最適解を得ることを目指します。
- 貪欲法は貪欲な選択を繰り返し、各反復で問題をより小さな部分問題に変換して、問題が解けるまで続けます。
- 貪欲法は実装が簡単なだけでなく、解を求める効率も高いです。動的計画法と比べて、通常は時間計算量が小さいです。
- 硬貨の両替問題では、硬貨の組み合わせによっては貪欲法で最適解を必ず見つけられますが、そうでない組み合わせでは、非常に悪い解になることもあります。
- 貪欲法で解くのに適した問題には、貪欲選択性と最適部分構造という二つの性質があります。貪欲選択性は、貪欲な戦略が有効であることを表します。
- 複雑な問題では、貪欲選択性の証明は容易ではありません。一方、硬貨の両替問題のように、成り立たないことを示すほうが比較的容易です。
- 貪欲法による問題解決は、主に問題の分析、貪欲な戦略の決定、正しさの証明という三つの手順に分かれます。戦略の決定が中心となり、正しさの証明が難所になることが多いです。
- 分割可能ナップサック問題は、0-1 ナップサック問題と異なり品物の一部を選べるため、貪欲法で解けます。貪欲な戦略の正しさは背理法で証明できます。
- 最大容量問題は全探索で解くと時間計算量が
O(n^2)となります。貪欲な戦略を設計し、各反復で低い方の仕切り板を内側へ動かすことで、時間計算量をO(n)に改善できます。 - 分割後の積を最大化する問題では、
\geq 4の整数はさらに分割すべきであり、最適な分割因子は3であるという二つの貪欲な戦略を順に導きました。コードには累乗の計算が含まれるため、時間計算量はその実装方法に依存し、通常はO(1)またはO(\log n)となります。