# Prodotto di Kronecker

In matematica, nel campo dell'algebra lineare, il prodotto di Kronecker, indicato con $\otimes$, è un'operazione tra due matrici di dimensioni arbitrarie, sempre applicabile, al contrario dell'altra più usuale moltiplicazione di matrici.

## Definizione

Se $A$ è una matrice $m\times n$ e $B$ è una matrice $p\times q$, allora il loro prodotto di Kronecker $A\otimes B$ è una matrice $mp\times nq$ definita a blocchi nel modo seguente:
$\ A\otimes B={\begin{bmatrix}a_{11}B&\cdots &a_{1n}B\\\vdots &\ddots &\vdots \\a_{m1}B&\cdots &a_{mn}B\end{bmatrix}}$
Cioè, esplicitando ogni termine:
$\ A\otimes B={\begin{bmatrix}a_{11}b_{11}&a_{11}b_{12}&\cdots &a_{11}b_{1q}&\cdots &\cdots &a_{1n}b_{11}&a_{1n}b_{12}&\cdots &a_{1n}b_{1q}\\a_{11}b_{21}&a_{11}b_{22}&\cdots &a_{11}b_{2q}&\cdots &\cdots &a_{1n}b_{21}&a_{1n}b_{22}&\cdots &a_{1n}b_{2q}\\\vdots &\vdots &\ddots &\vdots &&&\vdots &\vdots &\ddots &\vdots \\a_{11}b_{p1}&a_{11}b_{p2}&\cdots &a_{11}b_{pq}&\cdots &\cdots &a_{1n}b_{p1}&a_{1n}b_{p2}&\cdots &a_{1n}b_{pq}\\\vdots &\vdots &&\vdots &\ddots &&\vdots &\vdots &&\vdots \\\vdots &\vdots &&\vdots &&\ddots &\vdots &\vdots &&\vdots \\a_{m1}b_{11}&a_{m1}b_{12}&\cdots &a_{m1}b_{1q}&\cdots &\cdots &a_{mn}b_{11}&a_{mn}b_{12}&\cdots &a_{mn}b_{1q}\\a_{m1}b_{21}&a_{m1}b_{22}&\cdots &a_{m1}b_{2q}&\cdots &\cdots &a_{mn}b_{21}&a_{mn}b_{22}&\cdots &a_{mn}b_{2q}\\\vdots &\vdots &\ddots &\vdots &&&\vdots &\vdots &\ddots &\vdots \\a_{m1}b_{p1}&a_{m1}b_{p2}&\cdots &a_{m1}b_{pq}&\cdots &\cdots &a_{mn}b_{p1}&a_{mn}b_{p2}&\cdots &a_{mn}b_{pq}\end{bmatrix}}.$
Notare che questo prodotto non è un'estensione della sopra citata moltiplicazione "righe per colonne", in quanto la moltiplicazione tra una matrice $3\times 2$ e una $2\times 3$ produce una matrice $6\times 6$, e non una $3\times 3$.

### Esempio

${\begin{bmatrix}1&2\\3&1\\\end{bmatrix}}\otimes {\begin{bmatrix}0&3\\2&1\\\end{bmatrix}}={\begin{bmatrix}1\cdot 0&1\cdot 3&2\cdot 0&2\cdot 3\\1\cdot 2&1\cdot 1&2\cdot 2&2\cdot 1\\3\cdot 0&3\cdot 3&1\cdot 0&1\cdot 3\\3\cdot 2&3\cdot 1&1\cdot 2&1\cdot 1\\\end{bmatrix}}={\begin{bmatrix}0&3&0&6\\2&1&4&2\\0&9&0&3\\6&3&2&1\end{bmatrix}}$

## Proprietà
### Bilinearità e associatività

Il prodotto di Kronecker è un caso speciale di prodotto tensoriale, dunque è bilineare e associativo:
    $A\otimes (B+C)=A\otimes B+A\otimes C\qquad$ (se B e C hanno la stessa dimensione)
    $(A+B)\otimes C=A\otimes C+B\otimes C\qquad$ (se A e B hanno la stessa dimensione)
    $(kA)\otimes B=A\otimes (kB)=k(A\otimes B),$ (k scalare)
    $(A\otimes B)\otimes C=A\otimes (B\otimes C),$
Questo prodotto non è commutativo, tuttavia $A\otimes B$ e $B\otimes A$ sono equivalenti per permutazione, cioè esistono matrici di permutazione P e Q tali che $A\otimes B=P\,(B\otimes A)\,Q$. Se A e B sono quadrate, allora sono simili per permutazione, cioè vale che P = Q$^T$

### Prodotto misto

Se A, B, C e D sono matrici tali che esiste il prodotto righe per colonne tra A e C e tra B e D, allora esiste anche $(A\otimes B)\cdot (C\otimes D)$ e vale che
    $(A\otimes B)\cdot (C\otimes D)=(A\cdot C)\otimes (B\cdot D)$.
Ne segue che $A\otimes B$ è invertibile se e solo se lo sono A e B e l'inversa è data da $(A\otimes B)^{-1}=A^{-1}\otimes B^{-1}.$

### Spettro

Siano A e B quadrate di ordine n e q rispettivamente e siano λ$_1$, ..., λ$_n$ gli autovalori di A, μ$_1$, ..., μ$_q$ quelli di B. Allora gli autovalori di $A\otimes B$ sono
    $\lambda _{i}\mu _{j},\qquad i=1,\ldots ,n,\,j=1,\ldots ,q.$
Ne segue che la traccia è $\operatorname {tr} (A\otimes B)=\operatorname {tr} A\cdot \operatorname {tr} B$ e che il determinante è $\det(A\otimes B)=(\det A)^{q}\cdot (\det B)^{n}$.

## Valori singolari

Siano A e B matrici rettangolari con valori singolari non nulli, rispettivamente $\sigma _{A,i}$, i=1,..,r$_A$ e $\sigma _{B,j}$, j=1,..,r$_B$.
Allora il prodotto $A\otimes B$ ha r$_A$r$_B$ valori singolari che sono esattamente $\sigma _{A,i}\cdot \sigma _{B,j}$, i=1,..,r$_A$, j=1,..,r$_B$.
Dal momento che il rango di una matrice è uguale al numero di valori singolari non nulli, allora è $\operatorname {rank} (A\otimes B)=\operatorname {rank} A\cdot \operatorname {rank} B$.

## Relazioni col prodotto tensoriale astratto

Il prodotto di Kronecker tra matrici corrisponde al prodotto tensoriale astratto di mappe lineari. Specificatamente, se le matrici $A$ e $B$ rappresentano le trasformazioni lineari $V_{1}\to W_{1}$ e $V_{2}\to W_{2}$, allora la matrice $A\otimes B$ rappresenta il prodotto tensoriale tra la due mappe $V_{1}\otimes V_{2}\to W_{1}\otimes W_{2}$.

## Applicazioni al graph matching

Se $A_{1}$ e $A_{2}$ sono le matrici di adiacenza di due grafi non pesati, allora $A=A_{1}\otimes A_{2}+{\overline {A_{1}}}\otimes {\overline {A_{2}}}$ è la matrice di adiacenza di un grafo, detto di associazione, i cui vertici corrispondono ad assegnamenti fra i vertici dei due grafi originali e le cui clique massime/massimali corrispondono a match massimi/massimali fra i due grafi originali.

## Equazioni matriciali

Il prodotto di Kronecker può essere usato per la rappresentazione di alcune equazioni matriciali. Si consideri ad esempio l'equazione AXB=C, dove A,B e C sono matrici date e X è incognita. Possiamo riscrivere tale equazione come
    $(B^{\top }\otimes A)\,\operatorname {vec} X=\operatorname {vec} C$
dove se X è di ordine m×n, vec(X) denota il vettore di dimensione m×n formato dalle entrate di X scritte ordinatamente per colonna, cioè
    $\operatorname {vec} X=[x_{11},x_{21},\ldots ,x_{m1},x_{12},x_{22},\ldots ,x_{m2},\ldots ,x_{1n},x_{2n},\ldots ,x_{mn}]^{\top }.$.
Dalle proprietà enunciate finora, ne viene che l'equazione AXB=C ha un'unica soluzione se e solo se A e B sono non singolari.

## Storia

Il prodotto di Kronecker prende il nome da Leopold Kronecker, ma ci sono poche prove che Kronecker sia stato il primo a definirlo e usarlo. In effetti, in passato è anche stato usato col nome di matrice di Zehfuss, da Johann Georg Zehfuss.