문제

이봐, 나는 트리플을 한 번에 새로운 것입니다. 그리고 나는 가설의 루프 불변량을 찾는 것에 대해 이해할 수 없다.예를 들어 루프

[x>1 & y>1] WHILE x>0 DO x:=x-1; y:=y+2 END [x+y>5].
.

불변자는 [2x + y> 5]이지만 찾는 방법에 대해 이해하지 못합니다.그것을 찾는 방법에 대한 단계별 설명은 크게 감사 할 것입니다.

도움이 되었습니까?

해결책

먼저 루프 불변의 의미를 이해하십시오. 이는 시작에서 프로그램 / 알고리즘의 모든 반복에 대해서도 루프의 종료시의 모든 반복에 참여하는 조건을 의미합니다. 귀하의 프로그램은 이와 같은 것입니다.

$$ x> 1 \ text {} y> 1 $$

$$ \ text {while} x> 0 $$

$$ \ hspace {4cm} \ text {do} x := x - 1, y := y + 2 $$

$$ \ text {End} $$

$$ x + y> 5 $$

$ 2x + y> 5 $ 은 설명한만큼 불변입니다. $ x $ $ y $ 모두 $ 1 $ 루프의 첫 번째 iterata 동안. 그래서 루프 $ 2x + y> 5 $ (당신이 그것을 증명할 수 있음). 통지 WHILL 루프의 각 반복에 $ x $ 은 값 $ 1 $ 에 의해 감소합니다. y의 가치는 두 번의 두 가지가 증가하고 있습니다 $ 2x + y> 5 $ 이 만족됩니다. 당신은 그것을 증명할 수 있습니다. 이제이 시점에서 $ x $ $ y $ 은 적어도 $ 5 $ 이 될 것입니다. 따라서 불변의 $ 2x + y> 5 $ si true while 루프의 반복을 통해

예 :

$ x= 2 $ $ y= 2 $ , $ 2 \ times 2 + 2= 6> 5 $ 이 만족됩니다. 이제 두 번째 반복 $ x= 1, y= 4 $ 그래서 $ 1 \ times 2 + 4> 5 $ 만족. 이제 $ x= 0, y= 6 $ , 루프 종료, $ 2 \ times 0 + 6> 5 $ .

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