선형 검색 루프에 대한 의사 : for j = 1 to A.length
if(A[j] = v)
return j;
return NIL
루프 내가 작성한 불변 : 루프의 각 반복의 시작에서, J 후 다음 인덱스 여기서, A [j-1]은 v과 동일하지 않습니다. 초기화 : J이 에 해당하고 작은 것보다 A.length 여부를 확인하기 전
사이의 관계 란 : wp(while E inv I do S, R) =
I \wedge
\forall y. ((E \wedge I) \implies wp(S,I \wedge x < y))[x <- y] \wedge
\forall y. ((\neg E \wedge I) \implies R)[x <- y]
where y is a tu
나는 Theory of Computation 과정에서 반복 프로그램/함수의 정확성을 증명하는 개념을 파악하는 데 어려움을 겪고 있습니다. 좀 더 구체적으로, 나는 루프 불변성을 생각해 낼 수있는 방법을 모른다. 함수가 다중 루프 불변량을 가질 수 있다는 것을 이해하지만, 포스트 조건을 증명하는 데 도움이되는 것을 찾는 방법에 대한 완전한 신비가 있습니다.
EOF에 도달 할 때까지 파일에서 계속 읽는 while 루프 (아래 참조)가 있습니다. 모든 사소한 루프에 대해 불변의 루프를 작성해야합니다. 이것은 사소한 루프입니까? 그렇지 않다면, 루프 동안 이것에 대한 루프 불변량은 무엇입니까? 나는 전에 불변량을 쓴 적이 없다. while (line != null) {
System.out.println(l
과제에 대해 이진 검색을 사용하여 정수의 제곱근을 찾는 방법을 만들어야하며, 제곱 수가 아닌 경우 정수 s를 반환해야합니다. * s < = 번호 (15를 입력하면 3을 반환합니다). 나는 그것을 위해이 코드는 지금까지 public class BinarySearch {
/**
* Integer square root Calculates th
나는 정수의 숫자를 반전하려면 다음 코드를 : public class integerReversal {
public static int reverseNum(int number){
int reversed = 0;
int remainder;
//{I: ; B: number > 0}
while (number >
이 코드에 대한 불변식이 무엇인지 알아 내야합니다. 나는 복수의 불변성이있을 수 있다고 생각하지만 주제와 온라인 자원을 이해하지 못한다. public class BinarySearchSqrt {
/** Integer square root
* Calculates the integer part of the square root
*
루프 변형은 루프의 모든 반복 전후에 true 인 문으로 정의됩니다. 그러나 그 정의가 너무 느슨한가? 구체적인 예를 살펴 보겠습니다 : 선형 검색. 입력 : 인덱스 : N 번호 A = (a 1하는 2하는 3 ...하는 N) 및 V 값 출력의 순서 그래서 일반적인 linear_search(A, v)
1 for i ∈ {1, 2, ..., n}
2 if
현재 TCRC Introduction to Algorithms 제 3 판 교과서 2 장을 읽고 있는데이 알고리즘의 루프 불변성에 대한 저자의 해석을 읽었습니다. 초기화와 유지 보수에 대한 저자의 논리를 이해합니다. 그러나, 종결은 내가 꽁꽁 얼어 붙은 것입니다. 저자는 종료시에 j = n + 1이라고 주장합니다. 그러나 알고리즘의 의사 코드에서 j는 2에서