我必須求解一個由32個xor方程組成的系統,每個方程包含32個變量中的15個。 一個看起來像這樣:求解XOR方程組
i[0] = p[0]^p[4]^p[5]^p[10]^p[11]^p[20]^p[21]^p[22]^p[23]^p[25]^p[26]^p[27]^p[28]^p[30]^p[31]
I [n]和P [N]爲16個整數。
所以,據我所知,我最終會得到一個32x32矩陣(只包含1s和0s)和一個32結果向量。
顯然高斯消除是我所需要的,但我無法繞開這個問題,有人能給我一些關於如何解決這個問題的見解嗎?
編輯:這裏是C++的解決方案
void SolveLinearSystem(u8 A[32][32], u8 B[32])
{
int N = 32;
for (int K = 0; K < N; ++K)
{
if(A[K][K] == 0)
{
for(int i = K + 1; i<N ; ++i)
{
if(A[i][K] != 0)
{
for(int L = 0; L < N; ++L)
{
int s = A[K][L];
A[K][L] = A[i][L];
A[i][L] = s;
}
int s = B[i];
B[i] = B[K];
B[K] = s;
break;
}
}
}
for(int I = 0; I<N; ++I)
{
if(I!=K)
{
if(A[I][K])
{
int M = 0;
for(M=K; M<N; ++M)
{
A[I][M] = A[I][M]^A[K][M];
}
B[I] = B[I]^B[K];
}
}
}
}
}
我覺得你的問題不清楚。而不是「......(15 xor)」顯示一個完整的例子。 –
你最終會得到32個16位數字,或者(邏輯上)一個32x16矩陣。你是如何得到32x32的? – Dukeling
給出了什麼,你想要解決什麼? –