· 3 알고리즘 실험 보고서
제목 : 욕심
시간 : 2019년 11월 16일
분석 프로그램 저장 문제. 내용은 다음과 같습니다
1, 연습 제목
문제의 설명
집합 E = {L1, L2, L3 , L4, L5, L6}, 즉, 초기화 (기준 블록 길이 비 내림차순 순서 ) 프로그램, 집합 A = {}, 즉, 선택된 프로그램의 길이의 길이로 선택한다.
i 번째의 선택, E = {리 + 1 리 + 2 ...} A = {... 리튬 1 리는}, 즉, 전류가 각각의 선택 순서 작은 프로그램 사이즈로부터 선택 될 선택된 길이의 합보다 크다 L.까지
3, 알고리즘 설명
(1) 욕심 전략 : 당신이 이제까지 새 테이프 길이 (하위 문제를) 사용하여 생산되는 짧은 프로그램의 길이를 선택할 때마다.
(2) 코드
사용법 #include <iostream>
#INCLUDE <알고리즘>
사용 스페이스 성병;
INT 길이 [ 1000 ];
INT의 답변 ( INT N, INT의 l) {
정렬 (세로 길이 + N);
INT R = L;
INT의 카운트 = 0 ;
위한 ( INT 난 = 0 , N 난 <; I ++ ) {
경우 (길이 [I] <= R) {
카운트 ++ ;
R = R- 길이 [I];
}
다른
휴식 ;
}
반환 카운트;
}
int로 {) (주
INT N, L;
CIN >> N >> L;
위한 ( INT 난 = 0 ; I <N I ++ ) {
CIN >> 길이 [I]을;
}
COUT << 답변 (N, l);
}
(3) 증거
하위 질문-1 N- 하위 질문 1에 최적입니다.
BTW이 그리 디 선택에서 시작되도록 변형 될 수있는 / 증명 최적 솔루션을 최적 솔루션을 조사하고 수학적 귀납법에 의해 각각의 단계는 최적의 솔루션은 탐욕 선택함으로써 얻을 수있다 증명
1, 바람직한 선택 요소를 가정하는 것은 그리 아니다 요소가 탐욕 원하는 요소를 선택하는 제 대체 요소 증명 여전히 얻을 최적 솔루션,
(2) 최적의 솔루션의 모든 단계를 증명하기 위해 수학적 귀납법은 탐욕 선택함으로써 얻을 수있다
(4) 특정 증명
욕심 자연 선택 :
증명 : 문제의 최적의 솔루션을 선택 LK는 (K> 1)이되는 경우에 가정하자 A = {(L1)가 ....} 최적 솔루션으로서, B가 최적의 솔루션 세트 세트 B = A는 - {K} ∪ {(L1)}
A, B, 프로그램의 동일한 번호, L1은 <A 이후 - B가된다 {K}, B는 이렇게 프로그램, 소위, B 액은 최적이고, 호환된다는 그리 디 선택 프로세스 L1 시작 .
따라서, 항상 문제가 욕심 시작 존재에 최적의 솔루션입니다.
최적 하부 속성 : 세트 선택 A` = A - {(L1)}, 즉 A '(집합 선택 절차 한 후 선택 될)는 E- E` = {L1} 최적 솔루션을 입증한다.
증명 :
A` 최적 솔루션 E`가 그 프로그램 (A)의 수보다 많은 {L1} A` 추가되지 않는 것으로 가정하고, 모순 가정, 입증 최적의 솔루션이다.
4, 알고리즘 복잡도 분석 시공간
(1) 시간 복잡도 : 시간 복잡도 정도로 빠르게 방전 nlogn의 사용으로 인해이 다른 문장 거친 계산, n은 O (nlogn).
(2) 상기 공간 복잡도 : 배열을 개방하므로 공간 복잡도는 O (1)이다.
(5), 경험 (대한 요약이 수확 의심의 연습)
다양한 알고리즘의 아이디어 이외의 제 문제의 오류에 기인하여 표제 디자인 적은 시간의 실시 붙어 리드왔다 (경계 결정 / 입력에 의해 수신 될 수없는 경우는 긴 INT / 회전 스트링 어레이 비트)
그리고 욕심 전략을 증명 여전히 국가의 작은 지식을 나타내는 프로그램입니다, 수학의 기초가 단단한 아니라, 수학을 학습 유지, 경고 프로그래밍의 양을 증가로 이어집니다.
동시에, 욕심과 동적의 차이는 더 깊은 이해의 파티션, 탐욕 만 현재 / 과거를 고려할 필요가있다 "후"하향식 (top-down), 고려 할 필요가 없습니다.
참고 블로그 :
https://blog.csdn.net/sn_zzy/article/details/16892031
https://blog.csdn.net/fan2273/article/details/73549016