・3アルゴリズムの実験レポート
件名:貪欲
時間:2019年11月16日
分析プログラムのストレージの問題。コンテンツが含まれています:
1、練習タイトル
問題の説明
集合E = {L1、L2、L3 、L4、L5、L6}、 すなわち、初期化(によるブロック長非降順に)プログラム、集合A = {}、すなわち、選択された番組の長さの長さから選択することができます。
i番目の選択、E = {のLi + 1はLi + 2 ....}、A = {....のLi-1、リチウム}、すなわち、各選択手順最小プログラムサイズから選択することが現在、選択された長さの和は、Lより大きくなるまで
3、アルゴリズム記述
(1)貪欲戦略:あなたは新しいテープ長(サブ問題)を使用して製造される最短のプログラムの長さを選択するたびに。
(2)コード
書式#include <iostreamの>
の#include <アルゴリズム>
使用して 名前空間はstdを、
INT長[ 1000年]。
INTの回答(INT N、int型L){
ソート(長さ、長さ + N)。
INT R = L。
int型のカウント= 0 ;
以下のために(INT iが= 0、I <N; I ++ ){
場合(長さ[I] <= R){
カウント ++ 。
R = R- 長[I]。
}
他に
休憩;
}
リターン回数、
}
int型のmain(){
int型N、L。
CIN >> N >> L。
以下のために(INT iが= 0、I <N; I ++ ){
CIN >> 長さ[I]。
}
COUT << 回答(N、L)。
}
(3)証明
サブ質問-1、N- サブ質問1が最適です。
ところで/、の検討最適解は最適解は、それが貪欲選択から始まり、その後、最適なソリューションを証明する数学的帰納法によって各ステップが貪欲選択することによって得ることができるように改変することができる証明
好ましい選択要素が貪欲でないと仮定すると、1要素は、目的の要素を選択欲を交換する最初の要素を証明し、まだ最適解を得るために、
2、最適なソリューションのすべてのステップを証明する数学的帰納は貪欲選択することによって得ることができます
(4)具体的な証拠
貪欲な性質を選択します。
証明:問題の最適解の選択は、LK(K> 1)が存在している場合と仮定= {L1は....}最適解であり、Bは最適解集合、集合B = A Aであります- {K}∪{L1}
、プログラムは互換性があるように、{K}、B A、B溶液がBで最適であるように、貪欲選択プロセスは、L1を開始する - A、B、プログラムの同じ数、L1 <A以来。
このように、常に問題貪欲[スタート存在に最適なソリューションを提供します。
最適下部プロパティ:セット選択A` = A - {L1}(選択手順1の後に選択されるように設定が)、すなわちA「E` = E- {L1}最適解が証明されています。
証明:
A`は、最適なソリューションはE`は、プログラムAの数よりも{L1} A`を追加していないと仮定され、Aは相反する仮定が、証明された最適なソリューションです。
4、アルゴリズムの複雑さの解析時間と空間
(1)時間計算:高速放電nlognの使用により、他の文概算は、Nであるので、時間計算量はO(nlogn)です。
(2)空間的複雑:アレイを開くので、空間の複雑さはO(1)です。
5、および経験(集計この収穫と疑問の実践)
様々なアルゴリズムの考え以外の第二当該誤差によるタイトルの設計より少ない時間の練習、スタックリードされている(境界決意/入力によって受信できない場合は、長いINT /回転列アレイビット)
そして貪欲な戦略は、プログラミングを示し、静止状態の少しの知識である証明で、数学の基礎が固体ではない、数学を学び保つために、警告するプログラミングの量を増やすにつながります。
同時に、貪欲とダイナミックな違いは、より深い理解のパーティションは、貪欲は、唯一の現在/過去を検討する必要がある「の後に」トップダウン、検討する必要がありません。
参考ブログ:
https://blog.csdn.net/sn_zzy/article/details/16892031
https://blog.csdn.net/fan2273/article/details/73549016