Polynomials, Randomness and Proof systems
본 글에서는 다항식과 확률론적 알고리즘을 이용함으로써 가능한 효율적인 증명 시스템들에 대하여 알아보겠습니다.
가정
앨리스와 밥이 아주 먼 거리에서, 개의 문자열로 이루어진 pdf 파일을 각각 가지고 있다고 가정해보겠습니다. 앨리스가 가진 문자열을 , 밥의 문자열을 이라고 하겠습니다. 두 명이 서로의 pdf 파일이 동일한지 확인하려면 어떻게 해야할까요?
가장 쉬운 방법은 문자열 전체를 전송하여 비교하는 것이겠죠, 즉 모든 에 대하여 를 확인하는 것입니다. 이 경우 크기가 매우 큰 문자열을 모두 전송하기 때문에 비효율적입니다.
그러나 다항식과 조금의 오류 확률을 받아들이면, 훨씬 작은 크기의 문자열만으로 비교가 가능해집니다.
Reed-Solomon Fingerprinting
길이 벡터 에 대하여, 다항식 를 다음과 같이 정의하겠습니다. 이렇게 만들어진 를 벡터 의 Reed-Solomon 인코딩이라고 부릅니다. 이 때, 는 를 법으로 하는 유한체입니다.
이 후 를 랜덤하게 추출한 뒤, 해당 에서의 의 함숫값 을 Reed-Solomon 핑거프린팅이라 부릅니다. 해당 값은 의 원소이므로 정수 하나일 뿐입니다.
앨리스는 밥에게 자신이 고른 과 에 대한 Reed-Solomon 코드 값 를 전송합니다. 밥은 앨리스가 보낸 을 기반으로 자신의 코드 을 계산해 인지 확인합니다. 밥은 두 값이 같으면 , 아니면 을 출력합니다.
분석
지난 포스트에서 저희는 증명 시스템이 완전성(Completeness)와 건전성(Soundness)를 만족시켜야 한다고 했습니다. 이를 확인해보겠습니다.
완전성: 참인 주장에 대해서 올바른 증명이 있어야 합니다. 이면 두 다항식 가 같기 때문에 둘의 R-S 코드 또한 일치합니다. 따라서 이 어떤 값이든 상관없이 밥은 을 출력합니다.
건전성: 거짓인 주장은 올바른 증명을 가져서는 안됩니다. 일 때, 둘의 R-S 코드가 달라 밥이 을 출력할 확률은 최소 이 됩니다 (설명은 후술). 따라서 으로 잡는다면 최소 확률로 건전성이 성립합니다.
그렇다면 밥이 을 출력할 확률이 왜 인지 알아보겠습니다. 이를 위해 다항식에 관한 한가지 정리를 사용해야 합니다.
정리 2.1. 임의의 체 에 대해, 위에서 차수가 최대 이고 영이 아닌 다항식은 최대 개의 근을 가진다.
(정리 2.1은 다항식의 인수 정리를 이용해 쉽게 증명할 수 있습니다. 자세한 증명은 이곳을 참고하세요. 또한 해당 정리를 다변수 함수에 대해 확장시킨 것이 나중에 배울 Schwartz-Zippel Lemma입니다.)
이면 인 가 적어도 하나 존재하므로, 다항식 는 영이 아니며 차수가 최대 인 다항식입니다. 정리 2.1에 의해, 을 만족하는 는 최대 개 존재합니다. 따라서 임의의 에 대해 일 확률은 최소 입니다. 은 곧 을 의미하므로 밥이 을 출력할 확률은 최소 이 됩니다.
효율성
기존에 문자열 전체를 전송하면 길이 문자열을 사용했던 반면, R-S 핑커프린팅을 사용하면 의 한 쌍만 보내면 되기 때문에 비트 (로 설정) 문자열 하나만 전송해서 비교가 가능해집니다. 건전성에서 의 오류 확률이 존재한다는 단점이 있으나 이는 이 커짐에 따라 줄어드며, 증명 자체가 에서 수준으로 굉장히 단축된 것을 확인할 수 있습니다.
Freivalds' Algorithm
Reed-Solomon 코드의 방법론을 이용하는 확률론적 증명 시스템을 한가지 더 살펴보겠습니다. 우리에게 입력으로 두 개의 행렬 와 가 주어졌다고 가정해보겠습니다 (). 이 때 두 행렬의 곱 를 계산하는 것은 얼마의 시간복잡도가 필요할까요? 알고리즘을 공부하신 분들이라면 잘 아실 겁니다. 나이브하게 작성하면 , 분할정복을 사용한 슈트라센 알고리즘은 이며 최근 연구결과는 까지도 증명을 했다고 합니다. (참고 자료)
하지만, 두 행렬의 곱 가 올바르게 계산되었는지 더 빠르게 검증하는 것이 가능할까요? 가장 쉬운 방법은 검증자가 직접 행렬의 곱을 수행해 결과값을 비교하는 것이지만, 이 경우 계산과정과 동일한 시간이 걸리기 때문에 유의미하게 쓰이기 어렵습니다. 그러나 확률론적 알고리즘을 이용해 조금의 오류 확률을 허용하면, 이를 시간만으로 검증할 수 있습니다!
알고리즘
임의의 를 고른 뒤 열벡터를 생성합니다. 이후 와 를 계산하여 이면 , 아닐 경우 를 출력합니다.
위 알고리즘의 시간 복잡도를 계산해보면, 벡터 를 생성하는데 , 행렬과 길이 벡터를 곱하여 벡터 와 를 계산하는데 이 걸리므로 전체 시간 복잡도는 입니다.
분석
마찬가지로 증명 시스템의 완전성과 건전성을 증명해보겠습니다. 이 때 증명자가 주장하는 행렬곱을 , 실제 행렬곱을 로 설정하겠습니다.
완전성: 이면 의 값과 상관없이 이므로 알고리즘은 항상 를 출력합니다.
건전성: 일 때 알고리즘은 최소 의 확률로 를 출력합니다.
먼저 완전성은 자명하게 보여집니다. 이제 건전성을 증명하기 위해, 일 때 일 최소 확률을 구해보겠습니다.
이므로 (번째 행) 인 인덱스 가 존재합니다. 이 에 대하여 를 보면,
마찬가지로 으로 벡터의 R-S 핑거프린팅 값이 됩니다. 따라서 일 확률은 두 R-S 코드 값이 다를 확률과 같고, 이는 앞에서 보았듯 최소 가 됩니다. 그러므로 전체 벡터 일 확률 또한 최소 가 되어 증명이 끝납니다.
Univariate Lagrange Interpolation
앞서 Reed-Solomon 인코딩에서 우리는 벡터 를 차 다항식의 계수로 해석했습니다 (). 이번에는 라그랑주 보간법(Lagrange Interpolation)이라는 새로운 방법을 이용해 벡터의 각 원소 를 에 대한 다항식의 값으로 해석해 보겠습니다. 구체적으로, 벡터 를 다항식 로 인코딩할 때, 각각의 인덱스 에 대하여 가 점 를 지나도록 설정합니다.
이 과정을 단일변수 라그랑주 보간법(Univariate Lagrange Interpolation)이라고 부릅니다. 우리는 다음 보조정리에서 이러한 다항식 가 유일하게 존재함을 보이겠습니다.
보조정리 2.2 (단일변수 라그랑주 보간법). 는 보다 큰 소수이고 벡터 라고 하자. 다음 식을 만족하며 차수가 최대 인 단일변수 다항식 는 유일하게 존재한다:
존재성을 증명하기 위해, 위 조건을 만족하는 다항식을 직접 구해보겠습니다.
기저 다항식
먼저, 각 인덱스 에 대해 라그랑주 기저 다항식(Lagrange basis polynomials)을 다음과 같이 정의합니다. 이 때, 은 을 나타냅니다.
위와 같이 설정하는 이유는, 는 에서 함숫값 을 가지며 다른 모든 에 대해서 이 되기 때문입니다. 또한 의 조건이 들어가는 이유는 0으로 나누는 것을 막기 위함입니다. 구체적인 예시를 함께 살펴보겠습니다.
위 예시에서 를 보면 일 때는 함숫값이 이고, 나머지 일 때는 함숫값이 임을 확인할 수 있습니다.
라그랑주 다항식
이제 기저 다항식을 이용해 라그랑주 다항식을 만들어 보겠습니다. 다항식 를 다음과 같이 정의합니다:
에서 함숫값을 살펴보면, 는 모든 에 대해서 0이 되어 사라지므로 일 때 값 를 제외하고 모두 사라짐을 알 수 있습니다. 따라서 모든 에 대하여 이고, 이는 보조정리 2.2 의 조건을 만족합니다.
유일성 또한 간단히 보일 수 있습니다. 차수가 최대 인 두 다항식은 정리 2.1에 의해 최대 개의 교점을 가질 수 있습니다. 만약 차수가 최대 이고 보조정리 2.2의 조건을 만족하는 다른 다항식이 존재한다면, 이는 우리가 구한 와 개의 교점을 가지므로 모순입니다.
함숫값 구하기
마지막으로 라그랑주 다항식 의 함숫값을 구하는 트릭에 대해 알아보겠습니다. 임의의 에 대하여,
를 계산하는 것이 목표입니다. 의 함숫값은 알고 있으므로 이들을 제외한 값을 가정하겠습니다. 만약 라그랑주 기저 다항식 을 직접 계산한다면, 각각의 에 대해 의 시간이 걸리므로 총 의 시간 복잡도가 필요할 것입니다. 그러나 우리는 에서 두 기저 다항식에 대해 다음과 같은 점화식을 세울 수 있습니다: (기저 다항식의 정의에 주목하세요)
이를 활용하면 값을 시간 복잡도 만에 계산할 수 있습니다!
Last updated