zpět

Cvičení 4 - Analýza složitosti algoritmů

Pseudokódy k implementaci a analýze:

    MatrixMultiplication(A[0..n − 1, 0..n − 1], B[0..n − 1, 0..n − 1])
        //Multiplies two square matrices of order n by the definition-based algorithm
        //Input: Two n × n matrices A and B
        //Output: Matrix C = AB
        for i ← 0 to n − 1 do
            for j ← 0 to n − 1 do
                C[i, j] ← 0.0
                for k ← 0 to n − 1 do
                    C[i,j] ← C[i,j] + A[i,k] * B[k,j]
        return C

    Enigma(A[0..n − 1, 0..n − 1])
        //Input: A matrix A[0..n − 1, 0..n − 1] of real numbers
        for i ← 0 to n − 2 do
            for j ← i + 1 to n − 1 do
                if A[i,j] ≠ A[j,i]
                    return false
        return true

    
Pro oba algoritmy odpovězdte následující otázky, resp. vypracujte úlohy: Tabulky by měly vypadat přibližně takto:

Násobení matic
n10020040080016003200
čas (ms)

Enigma
n10020040080016003200
čas (μs)

Základní funkce pro práci s poli a ukázka měření času v C++: pole_mereni.cpp
Implementace zadaných úloh: cviceni4-reseni.cpp