Dobrý den,
chtěl bych vás poprosit o radu. Máme úkol do algoritmizace, kdy nám na vstupu dají několik matic, které máme mezi sebou vynásobit v časovém limitu.
Dané matice mám v arraylistu jako int[][]. Násobení a defakto celý kód mi funguje, ale problém je v tom, že v několika případech až příliš pomalu. (máme 10 testovacích vstupů, kterýma školní systém bombarduje naši úlohu a abychom přežili, potřebujeme 6 dobře...já mám 5).
Chtěl bych se tedy zeptat, jestli nevíte o něčem, jak bych mohl samotné násobení matic urychlit, alespoň o trošku, aby mi prošel alespon 1 další testovací soubor...
Podle mě by se nějak dalo určit, které matice budu násobit s kterýma nebo tak něco, ale nepodařilo se mi to vymyslet, natož implementovat.... :(
Fórum › Java
Nasobeni matic
![](img/forum_vlakno_help_vyreseno.png)
Tak možná máte "objevit" nějakou existující metodu pro rychlé (rychlejší) násobení matic (např. http://www.anilinux.org/~keddie/doc/strassen.pdf)
Jestli ti opravdu staci jenom jeden bod, tak by mozna slo zjistovat, jestli nejaka matice na vstupu neni nulova, vysledek pak bude nulova rozmeru vyska prvni x sirka posledni. Ja byt autorem testu, tak takovej priklad udelam- spousta obrovskych matic a jedna z nich nulova. Jestli toto nepomuze, nebo chces ziskat vic bodu, tak by melo stacit najit vhodne uzavorkovani. To se dela tak, ze si postupne zapisujes ceny, kolik nasobeni bude stat spocitat urcity usek od nejkratsich useku az po vsechny matice.(+ ktere nasobeni bylo posledni, at mas take poradi). A jestli ani toto nepomuze (= zadavatel je poradny sadista) tak strassena.
Tak jsem to nakonec vyřešil - provedl jsem selekci těch matic tak, že jsem našel matici nejměnší výšky a tu vynásobil následující. Takto jsem to procházel, postupně odebíral tyto 2 matice a nahrazoval novou 1, vynásobenou. ( z A B C D jsem se dostal do stavu A (B*C) D ) Ve stavu, kdy jsem měl pouze jednu, vypsal jsem a mám 10/10 bodů :)
Každopádně díky za pomoc! :)
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Násobení matic — založil Redwizara
Dynamické násobení matic — založil miska
Násobení dvou matic — založil Zke
Dynamicke nasobeni matic — založil cecilconrad
Násobení matic různých rozměrů — založil johny239
Moderátoři diskuze