계산 모델(Computation Model)
- 이제까지 일어났던 무언가를 이해하거나 매일 보는 현상들을 설명하는 모델
- 아직 일어나지 않은 미래를 예측할 수 있게 해주는 모델
- 예) 날씨 변화 모델 : 천 년동안 날씨가 어떻게 변했는지에 대한 모델과 미래에 어떻게 될 지 예측하는 모델을 만들 수 있음
- 최적화모델, 통계적 모델, 시뮬레이션 모델이 있는데 그중 최적화 모델에 대해 학습
최적화 모델(Optimization Model)
- 제한 조건을 가지며 목적 함수를 최대화 또는 최소화하는 모델
- 제한조건이란(없을 수도 있음) 반드시 지켜야 하는 조건(ex)1000달러 이상 쓸수 없음)
- 냅색(배낭) 문제
- 제한 조건 : 냅색 안에 들어갈 수 있는 양
- 도둑이 가장 값비싼 물건을 훔쳐야 하는 최적화 문제
- 연속 냅색 문제
- 일부분만 가져갈 수 있는 문제-금괴가 아닌 금모래로 가져갈 수 있는 경우
- 금괴가 있는 경우 금가루로 변형 할 수 있다는 가정 하에 문제를 풀음
- 탐욕 알고리즘으로도 풀 수 있고, 풀기 쉬운편
- 0/1 냅색 문제
- 금괴를 가져가거나 아예 못가겨가는 경우
- 한번 결정하면 그 결정이 다음 결정에 영향을 미침
최적화 문제를 푸는 방법
- 무차별 대입 알고리즘(Brute force algorithm)
- 모든 경우의 수를 고려해 승자를 택한 것
- 그러나 실용적이지 않음
- 탐욕 알고리즘(Greedy algorithm)
- While kanpsack not full put "best" available item in kanpsack
- 여러 경우 중 하나를 결정할 때 그 순간 best라고 생각되는 것을 선택해 나가는 방식
- 가장 좋은 것(best)의 의미는 정의에 따라 달라짐
- 탐욕 알고리즘은 좋은 해를 구할수는 있어도 최적 해를 구할수는 없음
- 단 메트로이드 조건을 만족하면 항상 최적의 해를 구할 수 있음
파이썬 람다(lambda) 표현식
- 익명(=이름이 없는)의 함수를 만들 때 사용
- (lambda 식별자 배열 : 원하는 식)
- 이 파라미터들로 표현된 식을 계산하고 결과를 반환하는 함수를 만듬
- def를 쓰는 대신에 인라인 함수로 정의
출처 : https://www.edwith.org/ds201/lecture/33888