Lemma 3.6에 기반해 MLE를 구한다.
우선 다음을 전개하고
이어
따라서
첨부된 코드 구현 vsbw.ts 참고.
Lemma 3.6에 기반해 MLE를 구한다.
우선 다음을 전개하고
이어
따라서
첨부된 코드 구현 vsbw.ts 참고.
| const chi = (p: number, r: Array<number>) => { | |
| const mems = [[1 - r[0], r[0]]] | |
| for (let i = 1; i < r.length; ++i) | |
| for (let j = ((mems[i] = []), 0); j < 2 ** i; ++j) { | |
| mems[i][j * 2] = (mems[i - 1][j] * (1 - r[i])) % p | |
| mems[i][j * 2 + 1] = (mems[i - 1][j] * r[i]) % p | |
| } | |
| return mems.at(-1)! | |
| } | |
| const vsbw = (p: number, fw: Array<number>, r: Array<number>) => | |
| chi(p, r) | |
| .map((chiW, i) => chiW * fw[i]) | |
| .reduce((a, b) => (a + b) % p, 0) | |
| const p = 11 | |
| const fw = [1, 5, 2, 6, 3, 7, 4, 8] | |
| const r = [2, 4, 6] | |
| // verify that ~f actually extends f | |
| for (let i = 0; i < fw.length; ++i) | |
| console.assert(vsbw(p, fw, [(i >> 2) & 1, (i >> 1) & 1, i & 1]) === fw[i]) | |
| console.log(vsbw(p, fw, r)) |