Co vim, tak ty O(N^2.3) algoritmy poskytuji rychlostni vyhodu jen pro extremne velke matice (slysel jsem neco ve stylu N~pocet atomu ve vesmiru).
Tak i pro ty matice 5x5 to má smysl, 95 násobení místo 125. Ale čím větší n, tím víc se ušetří, protože je to exponenciální.
Násobení matic patří do lineární algebry. Téměř všechny operace s maticemi jsou citlivé na chyby, míněno přesnost. Stačí když si představíte dva sousední prvky, kdy jeden je 10^100 a druhý 10^(-100). Pokud provedete součet, tak budete dále operovat s 200místným číslem. Operace s takovými čísly je mnohem náročnější než s čísly, které umístíte do registrů. Z uvedeného plyne, že potřebujete-li provádět operace s maticemi, nelze odhadnout náročnost takové operace.
Před některými operacemi se často provádí úpravy matic, kterých se náročnost stanovit dopředu nedá vůbec.
Z hlediska optimalizace obecně, byl důležitý první krok, který vedl ke snížení počtu obecných operací a to z důvodu hledání cesty. Další již významná nejsou, neboť přesnost výpočtu má na náročnost mnohem větší dopad.
Nejsem žádný odborník na AI a tak mám dotaz, k čemu potřebuje AI operace s maticemi?
Pak by se ale mělo mluvit o tenzoru, který má, na rozdíl od obecné matice, daná pravidla. Důsledkem bude jiný optimalizovaný postup operací s tenzory, bude potřeba méně operací.
Navíc jistě se nejedná pouze o jedinou výpočetní operaci. Po analytickém zápisu všech potřebných operací by mělo dojít o optimalizaci, která bude mnohem pokročilejší než optimalizace per-partes.
Stále nechápu proč se vyhodnocují elementární operace a nerealizuje se analytické řešení kam až je to efektivní.