Stránka 1 z 2

4. sada domácich zadaní

PoslaťNapísal: Sob Mar 08, 2014 11:01 pm
od PekarcikPatrik
Je mozne na rieseni uloh vyuzit vynimky? alebo to radsej urobit inak?

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 12:05 am
od FeroG
PekarcikPatrik píše:Je mozne na rieseni uloh vyuzit vynimky? alebo to radsej urobit inak?

A ktora uloha si to vyzaduje?

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 12:21 am
od PekarcikPatrik
FeroG píše:A ktora uloha si to vyzaduje?

Pouzil som to v ulohe "Úplný strom" kde vdaka vynimke viem zanedbat vela if-ov, Otazka je ako narocny je beh Vynimky po jej odchytenie

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 12:38 am
od FeroG
PekarcikPatrik píše:Pouzil som to v ulohe "Úplný strom" kde vdaka vynimke viem zanedbat vela if-ov, Otazka je ako narocny je beh Vynimky po jej odchytenie

Odporucanie z PAZ1a: Vynimky nemaju byt zneuzivane na veci, ktore ide vyriesit inak, pretoze ... a je na to vela dovodov. Zdroje potrebne na odchytavanie vynimiek su jedna vec. Okrem toho je tu problem s "logikou pouzitia". Vynimka ma indikovat vynimocnu situaciu, nie sprostredkovat vysledok. Vratenie vysledku totiz nie je vynimocnou situaciou (aspon by teda nemalo byt).

http://java-performance.info/throwing-a ... very-slow/
http://stackoverflow.com/questions/2990 ... exceptions

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 1:01 am
od PekarcikPatrik
FeroG píše:Odporucanie z PAZ1a: Vynimky nemaju byt zneuzivane na veci, ktore ide vyriesit inak, pretoze ... a je na to vela dovodov. Zdroje potrebne na odchytavanie vynimiek su jedna vec. Okrem toho je tu problem s "logikou pouzitia". Vynimka ma indikovat vynimocnu situaciu, nie sprostredkovat vysledok. Vratenie vysledku totiz nie je vynimocnou situaciou (aspon by teda nemalo byt).

http://java-performance.info/throwing-a ... very-slow/
http://stackoverflow.com/questions/2990 ... exceptions

Dakujem, po prezreti druheho linku som dostal motivaciu casovo otestovat verziu cez vynimky a verziu bez nich

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 12:52 pm
od FeroG
PekarcikPatrik píše:Dakujem, po prezreti druheho linku som dostal motivaciu casovo otestovat verziu cez vynimky a verziu bez nich

Kedze som mal moznost v Moodle vidiet tvoj kod, uz teraz viem povedat, ze realne casove rozdiely neuvidis ziadne. Totiz vynimku hadzes celkovo len raz, t.j. len raz robis drahsiu cinnost. Z hladiska casu je drahe hadzanie vynimiek (toto ani nikto neoptimalizuje, kedze sa to ma diat vynimocne). Pri tvojom rieseni je skor problem s "principom" pouzitia vynimiek a naslednou porozumitelnostou kodu nez s efektivnostou.

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 8:20 pm
od PekarcikPatrik
FeroG píše:Kedze som mal moznost v Moodle vidiet tvoj kod, uz teraz viem povedat, ze realne casove rozdiely neuvidis ziadne. Totiz vynimku hadzes celkovo len raz, t.j. len raz robis drahsiu cinnost. Z hladiska casu je drahe hadzanie vynimiek (toto ani nikto neoptimalizuje, kedze sa to ma diat vynimocne). Pri tvojom rieseni je skor problem s "principom" pouzitia vynimiek a naslednou porozumitelnostou kodu nez s efektivnostou.

Urobil som upravu kodu aby siel bez vynimiek (princip presne ten isty) a vysledok?
Dal som pocitacu urobit metodu 100 000 000 krát (testoval som vzdy na 2 vstupoch, 1 uplny, 1 neuplny)
verzia bez vynimky: 4654 ms
verzia s vynimkou: 69274 ms
  Kód:
Uzol koren = new Uzol(5, new Uzol(2, null, null), new Uzol(9, new Uzol(8, null, null), new Uzol(10, null, null)));
Uzol koren2 = new Uzol(5, new Uzol(2, new Uzol(1, null, null), new Uzol(3, null, null)), new Uzol(9, new Uzol(8, null, null), new Uzol(10, null, null)));
int i;
long l;
l = System.currentTimeMillis();
for (i = 1; i < 100000000; i++) {
   koren.jeUplny();
   koren2.jeUplny();
}
l = System.currentTimeMillis() - l;
System.out.println("testovanie: " + l + " ms");

Poucenie :) Výnimky su naozaj skarede :D

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 8:30 pm
od FeroG
Ono vzdy je zaujimava otazka ako interpretovat cisla. Napr. aky pomer by si dostal, ak by si mal vacsie stromy? Trebars, co keby si mal 10000-prvkovy uplny strom a celkom vpravo by si dovesil este jeden uzol, aby sa stal neuplny?

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 8:45 pm
od PekarcikPatrik
FeroG píše:Ono vzdy je zaujimava otazka ako interpretovat cisla. Napr. aky pomer by si dostal, ak by si mal vacsie stromy? Trebars, co keby si mal 10000-prvkovy uplny strom a celkom vpravo by si dovesil este jeden uzol, aby sa stal neuplny?

Jasne treba brat do uvahy strom na ktorom sa to testuje ale pri tejto interpretacii som vyuzil hlavne podobnost uplneho a neuplneho stromu, a jediny rozdiel je v tom ako sa po zisteni odpovede, "privezie" odpoved uzivatelovi

Re: 4. sada domácich zadaní

PoslaťNapísal: Ned Mar 09, 2014 8:54 pm
od FeroG
Upresnim, kam som tymto smeroval. Urcil si, ze algoritmus s vynimkou bude zhruba 12 krat pomalsi ako algoritmus bez vynimky, alebo ze vyhodenie 100 000 000 vynimiek trva zhruba 65 sekund?

Re: 4. sada domácich zadaní

PoslaťNapísal: Pon Mar 10, 2014 4:28 pm
od rodakj
Je povolené mať pomocné metódy (resp. len jednu) , napríklad v triede Osoba?

Re: 4. sada domácich zadaní

PoslaťNapísal: Pon Mar 10, 2014 7:06 pm
od FeroG
rodakj píše:Je povolené mať pomocné metódy (resp. len jednu) , napríklad v triede Osoba?

Pomocne metody je mozne vyuzit podla vlastneho uvazenia. Ci uz pri rieseni prvej ulohy alebo dalsich. I ked musim sa priznat, ze pri tej prvej ulohe sa mi zda najmenej potrebna (a pri tych dalsich takmer nevyhnutnost).

Re: 4. sada domácich zadaní

PoslaťNapísal: Pia Mar 14, 2014 2:55 am
od matejp
Mal by som dodatočnú otázku k metóde "vytvorBVS" a tiež sa týka výnimiek. Ak je množina hodnôt prázdna je lepšie vyhodiť výnimku alebo jednoducho (ne)vykonať nič ?

Re: 4. sada domácich zadaní

PoslaťNapísal: Pia Mar 14, 2014 10:21 am
od FeroG
matejp píše: Ak je množina hodnôt prázdna je lepšie vyhodiť výnimku alebo jednoducho (ne)vykonať nič ?

Ved ked je mnozina prazdna, treba vytvorit BVS, ktory uchovava prazdnu mnozinu. Korenom takehoto stromu je null.

Re: 4. sada domácich zadaní

PoslaťNapísal: Pia Mar 14, 2014 8:38 pm
od pripomienka
Nemyslíte si, že toto zadanie je ohodnotené málo bodmi? Vzhľadom napr. na bodové ohodnotenie metódy vlozPredMaximum z minulého zadania, kde boli až 4 body. Myslím že toto zadanie by si zaslúžilo viac bodov, keď teda zaberá aj viac času, resp. "námahy" :D