2. 일의 진행
• 일에 대한 사람의 마음 자세들.
– 제대로 하는 것 ^^, 철저히 하는 것? ^^
– 천재처럼 하는 것 ? -> 아직 못 봤습니다. ^^;
– 현대에는 적은 없다. ^^ ( reference: “올리브 나무와 렉서스” ?).
• 1 % 를 위한 99 %의 노력 ? ^^
– 마지막 1%의 진척을 위해 99%의 노력이 필요할 수도 있음.
– 새 시도, 한계 상황의 경우 비율이 더 큼.
– 일을 첫 model 을 완성한 경우 (1%, 1주 ~ 1달 ? ^^) -> 대부분의 시간은
debugging 과 보완의 시간(1-3 년). -> 제대로 사용되는 순간.
Quality
Time
Quality Line.
시행착오 과정 (trial and errors).
3. 못 푸는 문제를 푸는 방법
• 두 학생의 차이점 ?
– 문제 : 한 class 50 사람이 줄을 일렬로 서는 경우를 기록. ^^;
– 걸리는 시간 : 50! ≈ 3 * 1064. 50! * 0.1초 ≈ 3* 1055 억 years.
풀 수 있는 문제.
성공.정석대로 푸는 학생
지우개를 굴려 문제를
푸는 학생 (연필 굴리기,
주사위 굴리기 ? ^^)
아주 가끔 성공. ^^;
못 푸는 문제.
몇 대를 걸쳐 풀기.
또는 인류가 멸망해도
못 풀 수 있음.
가장 좋은 해가
아니라도 운이 좋으면
답을 구할 수 있음. ^^;
현명하게 사용하면, 그 중에 확률상으로 괜찮은 답이 나옴. ^^;
i)
ii)
4. 경험을 Modeling 한 방법들 (Heuristic Algorithm)
• 이론상의 정확한 근거 (정확한 문제 해결 방법)가 있는 것은 아니지만, “경
험상으로 좋은 결과를 얻는 전문가의 방법” 또는 “자연현상을 modeling하
여 문제를 푸는 방법”.
– 인간의 경험들 example : 비가 오면 제비가 낮게 난다. 물고기가 물 위로 뛰면
비가 온다. 동물이 많이 불안해 하면 지진, 해일 등이 올 확률이 높다. ^^;
• 물리 현상
– 바람은 밀도가 높은 곳에서 밀도가 낮은 곳으로 (방구 냄새는 곧 없어지는 것),
도자기를 굽는 이유, 쇠를 온도를 높인 후 두들기면 더 단단해지는 현상.
• 에너지 확산 : 물은 높은 곳에서 낮은 곳으로, 커피가 식는 것.
• 생물의 진화
– 물 속에서 사는 물고기가 헤엄을 더 잘치는 것, 하늘을 나는 새가 비행을 더 잘
하는 것. ^^;
5. 많은 경우를 시도하는 방법(Combinatorial search algorithm)
• 직접 풀기 어려운 문제의 경우, 많은 시도를 통하여 답을 구하는 방법.
• Decision tree or decision graph.
– 많은 수 앞을 내다보는 문제 (Decision state transition graph exploration) 은 구
현 복잡도가 높은 어려운 문제임.
– BDD 를 이용한 STG modeling : O(N2), STG exploration : O(상수N) or O(N).
• Guided random search algorithm
– 근거있는 guide 방법과 random(확률)을 이용하여 문제를 푸는 방법.
– 문제를 푸는 시간에 비례하여 좋은 답을 구할 확률이 높아지는 문제 해결 방법.
– 어느 일정 시간이 지나면 best solution 을 구할 수 있다는 것을 확률로 해석한
방법들.
6. 욕심쟁이 방법 (Greedy Algorithm)
• 가능한 경우에서 가장 좋은 것만 계속 선택하는 방법 (Iterative improvement
algorithm).
• 장점 : 간단함. Linear/polynomial function, 검색 공간이 작은 경우는 사용이 가능.
• 단점 : 골목 대장, 제일 좋은 해(solution)는 구하기 어려움 (It may easily fall into
locally optimal solution.).
• 많은 실험에서 성능이 좋지 않아 거의 사용하지 않는 방법.
Local minima
Optimal solution.
7. 마음대로 맞추는 방법들 (Guided Random Search)
• 대장장이의 담금질 방법 (Simulated Annealing).
– “젊었을 때 고생은 사서 해라” 방법. ^^;
– Combinatorial optimization algorithm using annealing techniques in
physics.
– 대장장이가 쇠를 높은 온도로 올렸다가 두들기며 식히는 담금질을
반복하는 경우 -> 분자 간격이 일정하도록 바뀌어 보다 단단한 구조
로 바뀜 (전체 entropy 감소).
– 실제 많이 사용되는 방법.
• 생물 진화 방법 (Genetic Algorithm).
– 단세포로부터 지금의 고등생물이 진화한 것처럼, 좋지 않은 해들을
교배 또는 돌연변이를 사용해 보다 좋은 해들로 진화를 시키는 방법.
8. Simulated Annealing (1)
Random search at
high temperature.
Move
(accept)
Sequence of moves
Greedy search at
low temperature.
Initial
solution
Neighboring
solution
Trial
solution
Move
Optimal
solution
A
solution
Move
(reject)
Temperature cooling
9. Simulated Annealing Example (1)
Temperature.
100°.
70°.
40°.
10°.
0°.
Current best solution
Degree of freedom.
10. Simulated Annealing Example (2)
Temperature.
100°.
70°.
40°.
10°.
0°.
Current best solution
Degree of freedom.
13. Simulated Annealing Example (5)
Temperature.
100°.
70°.
40°.
10°.
0°.
Current best solution
Optimal solution.
14. Simulated Annealing Algorithm Example (6)
void simulatedAnneling( solution_t solution, int temperature )
{
t = temperature ;
current_solution = get_random_solution();
current_score= cost_function( current_solution );
while ( (last_solution != current_solution)&& (t>1e-3) ) {
while ( freeze < FREEZE_TRIAL) {`
trial_solution = get_candidate_solution( )
trial_score = cost_function( new_solution);
if ((a=accept(trial_score, current_score, t))==TRUE) {
current_score = trial_score;
freeze=0;
current_solution = trial_solution ;
}
else {
freeze++;
}
}
t = ALPHA*t; /* Temperature cooling. */
freeze=0;
}
}
15. 결론
• 풀 수 있는 문제는 열심히 묵묵히 하는 것이 좋은 것 같고,
• 풀 수 없는 문제들은 greedy algorithm을 사용하지 말고, 자연 또는 경
험상의 방법이 더 좋은 것 같습니다 (무작정 좋은 것만 취하는 방법은
좋지 않은 방법 같습니다. ^^).
• 살아가는 과정도 비슷한 것이 아닐까요? ^^