2009-12-03 5 views
3

나는 루프 불변에 대해 다음과 같은 문제를 주어진했습니다올바른 루프 불변성을 선택하고 설정하는 방법은 무엇입니까?

x=4; for(i=5;i<k;i++) { a=a+x+i; x=x*2; }

가와 X 용 폐쇄 공식을 이용하는 appropiate 루프 불변의 정의를 생각해 보자.

자, 여기에 올바른 루프 불변성이 있음을 어떻게 알 수 있습니까? 나는 당신이 loop invariant를 다음과 같이 설정할 수 있음을 의미합니다 : "j 번째 반복에서 'x'는 올바른 'closed'공식을 사용하지 않고 'a'보다 작습니까?

루프가 끝났을 때 명령문 (루프 불변 값)을 사용하여 "a"의 값을 결정할 수 있습니까? 내가 본 모든 예제는 루프 불변 식과 그식이 닫힌 수식으로 사용되지 않는다는 것을 나타냅니다.

아이디어가 있으십니까?

도움 주셔서 감사합니다. 밀폐 식으로

답변

2

시작 : 분명히 [K-5 0 내지 J에 대한] X (j)에 대해, ** 사용 (x(j)4 * 2**j이고, 루프, x(j+1) = x(j) * 2의 j 번째 레그 입장에서 X 때문에 x(0)은 4이므로 "전원을 켜십시오"의 경우). a(j+1) = a(j) + x(j) + j + 5 - 우리는 무엇을 말하지 않았습니다. a(0)이지만, 그것을 배제하고 a(j)a(0) +으로 작성하십시오. 위의 닫힌 수식 rescoion이 x(j) 인 것을 감안할 때, 무엇이 그 것인지를 알아낼 수 있습니까? 나는 당신에게서 숙제를하기를 꺼 렸습니다 - 아직 Concrete Mathematics 또는 무엇이든 당신의 교과서를 공부하기 시작 했습니까?

닫힌 양식 수식 a(j)을 작성한 후에 내가 x(j)에 제공된 사소한 수식과 함께 가기 위해 루프 불변 식으로 결합하는 방법을 볼 수 있습니까?

+0

안녕하세요, 저는 실제로이 같은 재귀 관계를 설정했지만 실제로 제대로 작동하는지는 알지 못했습니다. 글쎄, (j + 1)에서 우리는 (0) = 0은 (0) = 0 + 4 + 0 + 5 = 9를 우리에게 준다는 것을 안다. 닫힌 폼 수식은 j와 관련하여 재귀 관계가없는 j로 표현됩니까? 심지어 x (j)를 사용하지 않습니까? 표현식은 다음과 같습니다. a (j) = a (j-1) + x (j-1) + (j-1) +5 – pcp

+0

수정 : a (1) = 0 + 4 + 0 + 5 = 0 – pcp

+0

@pcp이므로 재귀 관계가 있습니다. a (k)는 5-1의 k에 대한 합계 (즉, 4 배의 j)와 k의 k에 대한 합계입니다. j times j + 1)에 k의 합을 4 배 (2 ** j + 4의 4 배) 씩 합친 것입니다. 그래서, (k)를 k의 함수로 표현할 수 있습니까? 그것은 "닫힌 양식"입니다. 쉬운 by-by-1을 쉽게 만들 수 있지만 수식과 약간의 반복 계산을 쉽게 비교할 수 있습니다. 그러면 invariant는 본질적으로 i의 함수로서 a의 값에 대한 설명이 될 것입니다. –

관련 문제