문제

인사말, StackOverflow.

S (i, j) 를 계산하기 위해 다음과 같은 두 개의 반복 관계가 있다고 가정 해 보겠습니다.

S_ {i, j + 1}= X_ {PA} S_ {i, j} + \ frac {1} {2p} (iS_ {i-1, j} + jS_ {i, j-1}) \\ S_ {i + 1, j}= X_ {PB} S_ {i, j} + \ frac {1} {2p} (iS_ {i-1, j} + jS_ {i, j-1})

S (0,0) , S (0,1) , S (1,0) 값을 계산하고 싶습니다., S (2,0) 등 ... 점근 적으로 최적의 방식으로.몇 분 동안 연필과 종이를 사용하면 여러 가지 방법으로 가로 지르는 나무와 같은 구조로 펼쳐집니다.이제 나중에 트리가 유용 할 것 같지 않으므로 지금은 [[S(00)],[S(10),S(01)],[S(20),S(21),S(12),S(02)],...]와 같은 중첩 된 목록을 생성하려고합니다. S (i, 0) (또는 첫 번째 인수에 따라 S (0, j) )의 단순 목록을 생성하는 함수를 만들었습니다. 라코 디스

하지만 더 진행할 방법이 부족합니다.

도움이 되었습니까?

해결책

직접 재귀 스타일로 작성하고 메모를 사용하여 순회를 만드는 것이 좋습니다. 라코 디스

라이브러리는 이미 계산 한 값을 저장할 무한 테이블을 생성합니다.메모 생성자가 p 매개 변수 아래에 있으므로 p 범위에 대한 테이블이 존재합니다.즉, osrr 1 2 3은 A (2,3) 계산을위한 테이블을 생성 한 다음 정리합니다.다음을 부분적으로 적용하여 특정 유전자 태그 코드에 테이블을 재사용 할 수 있습니다. 라코 디스

이제 p는 모든 호출간에 테이블을 공유합니다 (상황에 따라 원하는 것이 될 수도 있고 아닐 수도 있음).

다른 팁

먼저 말하지 않은 경계 조건이 있어야합니다.

그것이 있으면 솔루션을 재귀 적으로 정의 된 배열로 지정해보십시오.이것은 i와 j의 상한을 아는 한 작동합니다.그렇지 않으면 메모 조합기를 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top