안장점 찾기에 사용되는 몇가지 알고리즘을 소개한다.

Dimer method (이합체 방법)
이합체 방법이라고 하니까 화학에서 쓰는 것 같은 느낌이 드는데, 사실 화학에서 쓴다. -_-;

어쨌든, 개념적으로 이 방법은 아령을 산꼭대기에서 굴려서 걸쳐지는 부분을 찾는 방법이다. 논문을 들여다봐도 그런 것 같다는 생각 뿐이다.

참고한 논문은
A dimer method for finding saddle points on high dimentsional potential surfaces using only first derivatives.
G. Hengelman and H. Jonsson
J. of Chem. Phys. Vol 3, No 13, pp7010-7022

논문은 꽤 복잡한데, 이해하고나면 별거 없다. 일단 시작점에서 양쪽 방향으로 점을 하나씩 찍어서 아령을 만든다. (이게 Dimer이다)
그 다음, 아령을 힘이 최소화 되는 방향으로 돌려준다.
그리고 힘이 최소화 되는 방향이 되도록 회전의 평면을 결정한다. 더 안돌아갈때까지 반복한다.
아령을 힘이 최소화 되는 방향으로 움직인다. 더 안움직일때까지 움직인다.
이걸 더이상 돌아가지도 않고 움직이지도 않을 때 까지 무한반복한다.

그럼 거기가 안장점이다. 안장 위에 아령을 걸쳐놓은거 생각하면 됨.

Nudged Elastic band (점근적 고무줄 방법)
이건 더 쉽다.

참고한 논문은
H. Jónsson, G. Mills, K. W. Jacobsen, Nudged Elastic Band Method for Finding Minimum Energy Paths of Transitions, in Classical and Quantum Dynamics in Condensed Phase Simulations, Ed. B. J. Berne, G. Ciccotti and D. F. Coker, 385 (World Scientific, 1998).

여기서는 시작점과 끝점을 알아야 한다. 시작점과 끝점을 잇는 직선을 긋는다. 그리고 그 직선을 적당히 n조각으로 나눈다. 각 n조각의 사이사이에는 모두 용수철상수 k인 용수철이 붙어있다.
이제 원래의 포텐셜 함수에 용수철 때문에 생기는 포텐셜 함수를 더한다.

새로 만든 포텐셜 함수의 극소값을 찾으면, 그 좌표에 있는 n조각의 점들 중에서 극대값을 찾는다. 그럼 거기가 원래 함수의 안장점이다. 왜그런가 하면, 고무줄이 쭉 튕겨져서 최대한 팽팽해질 수 있는 위치이기 때문이다.

장점은 이해하기 쉽고 구현하기도 쉽다는 것과, 점이 움직여가는 경로를 추적할 수 있다는 것이다. 단점은 n조각내는 바람에 계산해야 할 점의 수가 엄청나게 늘어난다는 점이다.

Stability Boundary Method (안정성 경계 방법)
이건 진짜 이해하기 쉽다.

참고한 논문은
J Comput Biol. 2006 Apr;13(3):745-66.
A stability boundary based method for finding saddle points on potential energy surfaces.
Reddy CK, Chiang HD.

시작점에서 끝점을 향해서 출발한다.
움직이다가 극대점을 만나면 일단 정지한다.
여기서 다시 수직 방향으로 출발한다. 가다가 극소점을 만나면 정지한다.
여기서 다시 끝점을 향해서 출발한다. 가다가 극대점을 만나면 정지한다.

이걸 더이상 안움직일때까지 무한반복한다.

근데, 끝점으로 가는 방향에 대해 수직인 방향은 n차원에서는 n-1차원 초평면이기 때문에, "가다가 만난 극소점"을 찾기 위해서 극소값 찾는 알고리즘이 필요하다. 여기에 Conjugate Gradient 방법을 활용한다.


by snowall 2010. 7. 28. 23:13