como programar el algoritmo de strassen en java code example

Example: como programar el algoritmo de strassen en java

Strassen (MA, MB)

    ad_hoc
        // Dividimos las matrices MA y MB en cuatro componentes cada una
        // Genera los números A(MA11), B(MA12), C(MA21), D(MA22), E(MB11), F(MB12), G(MB21) y H(MB22)
        P1 = A * (F - H)
        P2 = (A + B) * H
        P3 = (C + D) * E
        P4 = D * (G - E)
        P5 = (A + D) * (E + H)
        P6 = (B - D) * (G + H)
        P7 = (A - C) * (E + F)

        // Creamos los cuatro elementos de la solución
        R11 = P5 + P4 - P2 + P6
        R12 = P1 + P2
        R21 = P3 + P4
        R22 = P1 + P5 - P3 - P7

        R = fusion(R11, R12, R21, R22);
        return R;

    else
        // Dividimos las matrices MA y MB en cuatro cuadrantes cada una
        // Se generan las submatrices A, B, C, D, E, F, G y H

        P1 = Strassen(A, (F - H));
        P2 = Strassen((A + B), H);
        P3 = Strassen((C + D), E);
        P4 = Strassen(D, (G - E));
        P5 = Strassen((A + D), (E + H));
        P6 = Strassen((B - D), (G + H));
        P7 = Strassen((A - C), (E + F));

        // Creamos los cuatro elementos de la solución
        R11 = P5 + P4 - P2 + P6
        R12 = P1 + P2
        R21 = P3 + P4
        R22 = P1 + P5 - P3 - P7

        R = fusion(R11, R12, R21, R22);
        return R;

Tags:

Java Example