SW-PRODUCT/개발

2016. 2. 17. 14:01


Monte Carlo Method : https://en.wikipedia.org/wiki/Monte_Carlo_method

몬테카를로 방법 : https://ko.wikipedia.org/wiki/%EB%AA%AC%ED%85%8C%EC%B9%B4%EB%A5%BC%EB%A1%9C_%EB%B0%A9%EB%B2%95


결과값이 숫자형태인 문제를 풀기 위해서 많은 수를 랜덤하게 생성해서 풀어내는 방법...


쉽게 얘기하면 랜덤하게 생성한 숫자로 계산해보고 그 결과를 취합해서 결론에 이르는 방법.


귀납법...이라고도볼수있으려나?


참고로 http://infovis.tistory.com/47 글을 보면 좀 더 이해가 쉬울지도.


예를 들어 반원의 넓이를 계산하기 위해 임의의 한 점의 원점부터의 거리가 반지름이 넘는지를 테스트하는 식으로... 인풋을 랜덤하게 생성해 수식에 때려 넣는 방법 한정으로 Monte Carlo 방식이라 한다.


도박으로 유명한 Monte Carlo 지명에서 따온 방식으로... 그냥

"랜덤하게 테스트데이터 만들어서 검증해봤는데 잘 되더라"

라고 하면 없어보이니까...

"몬테 카를로 방식으로 검증해봤는데 잘 되더라"

라고 하면 있어보이니까...


좀 찾아보니 같은 랜덤 기반이라곤 하더라도...달리말하면 알고보니...유전자알고리즘도 랜덤방식에 속한다.


생각해보니 랜덤이긴 하니까... 다만 다음 랜덤수를 만들기 위한 조건이 점진적으로 조아지게 설계되어 있을 뿐.


NP-complete 문제를 해결하기 위한 방법 중

Randomization 방법 중

몬테 카를로 방법과 유전자알고리즘 방법이 있다 한다...그 외에도 더 있겠지?