Add Freivalds' Algorithm for randomized matrix multiplication verification (#6340)

This commit is contained in:
Aditya
2025-07-04 15:46:57 +05:30
committed by GitHub
parent 712ada5102
commit 58ac54cbdb
2 changed files with 105 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
package com.thealgorithms.randomized;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
class RandomizedMatrixMultiplicationVerificationTest {
@Test
void testCorrectMultiplication() {
int[][] a = {{1, 2}, {3, 4}};
int[][] b = {{5, 6}, {7, 8}};
int[][] c = {{19, 22}, {43, 50}};
assertTrue(RandomizedMatrixMultiplicationVerification.verify(a, b, c, 10));
}
@Test
void testIncorrectMultiplication() {
int[][] a = {{1, 2}, {3, 4}};
int[][] b = {{5, 6}, {7, 8}};
int[][] wrongC = {{20, 22}, {43, 51}};
assertFalse(RandomizedMatrixMultiplicationVerification.verify(a, b, wrongC, 10));
}
@Test
void testLargeMatrix() {
int size = 100;
int[][] a = new int[size][size];
int[][] b = new int[size][size];
int[][] c = new int[size][size];
for (int i = 0; i < size; i++) {
a[i][i] = 1;
b[i][i] = 1;
c[i][i] = 1;
}
assertTrue(RandomizedMatrixMultiplicationVerification.verify(a, b, c, 15));
}
}