Project DelphiTaller de Tensores

Un 1 cuesta una multiplicación

Lee el producto en el tensor celda por celda y multiplicas una vez por cada 1 y nunca por un 0:

for a, b, c in np.argwhere(T): # solo las celdas que valen 1 C[c] += flat_a[a] * flat_b[b]

Para matrices n × n el tensor tiene n³ unos, y por eso la regla escolar cuesta n³ multiplicaciones: 27 para 3 × 3 y 125 para 5 × 5. El coste no está en el tamaño del tensor: el de 3 × 3 tiene 729 celdas y 702 no cuestan nada.

Pero «una multiplicación por cada 1» fue una elección. El bucle descompuso el tensor en piezas que son celdas sueltas. Nada dice que las piezas tengan que ser celdas.