Tato stránka vyžaduje podporu CSS stylů

1. domácí úloha z předmětu PAA

Řešení problému batohu hrubou silou a jednoduchou heuristikou

Oto Válek

FEL ČVUT, letní semestr 2001/2002, cvičení St 12:45

1. Specifikace úlohy

Problém batohu je řešen hrubou silou a heuristikou podle poměru cena/váha. Byly použity připravené instance problému pro n = 4, 10, 15, 22, 25, 27, 30, 32, 35, 37, 40. Hrubou silou nebyl problém řešen pro n > 27 vzhledem k extrémní časové náročnosti.
Čas byl měřen funkcí ftime() ze std. C knihovny v prostředí WinNT. Byl použit kompilátor z MS VC 5.0 s defaultním nastavením a procesor AMD Athlon 1GHz.

2. Řešení hrubou silou

Algoritmus prochází v nejhorším případě všechny, tj. 2n možných konfigurací. Přestože přidávání předmětu bylo ukončeno při přetíženém batohu, odpovídala závislost naměřeného času na n poměrně přesně 2n. Podobně se chová i závislost maximální odchylhy od správného výsledku.
Tyto charakteristiky však silně závisí na volbě testovacích instancí (cen a vah předmětů a váhového limitu)
  n   t[ms]       2^n  t/2^n 
------------------------------
  4     0.0        16        
 10     0.6      1024  1706.6
 15    13.6     32768  2405.8
 20   425.2   1048576  2466.0
 22  1608.7   4194304  2607.2
 25 13193.6  33554432  2543.2
 27 55494.6 134217728  2418.6

3. Řešení jednoduchou heuristikou

Heuristika typu nejrychlejšího vzestupu v nejhorším případě přidá všechny věci, časová složitost je tedy O(n). Při použitých instancích malé velikosti byl čas výpočtu prakticky neměřitelný.

4. Závěr

Relativní odchylka (dif[%]) průměrné ceny nalezené heuristickým algoritmem od průměrné optimální ceny nalezené hrubou silou mírně klesá s rostoucím n. Z malého počtu vzorků nelze odhadnout přesný trend. Podobně se chová i maximální odchylka od správného výsledku (max[1]).
Tyto výsledky včk silně závisí na volbě testovacích instancí (cen a vah předmětů a váhového limitu)
  n   opt.    heur.  dif[1] dif[%] max[1]
-----------------------------------------
  4   353.0   332.9   20.1   7.194  163  
 10  1125.4  1092.2   33.2   2.932  199  
 15  1814.3  1798.8   15.5   0.796  133  
 20  2335.2  2305.7   29.5   1.265  181  
 22  2501.2  2465.7   35.6   1.431  221  
 25  2954.1  2916.8   37.3   1.256  147  
 27  3143.3  3114.5   28.8   0.907  128  
 30  3581.2  3547.1   34.1   0.959  132  
 32  3694.5  3670.2   24.4   0.688  131  
 35  4081.8  4044.5   37.3   0.949  138  
 37  4222.1  4196.2   25.9   0.605  103  
 40  4628.9  4600.0   28.9   0.619  120  

5. Soubory

1batoh.zip - ZIP archiv zdrojových souborů v C++, zadaných a naměřených hodnot, tohoto dokumentu a Excel. tabulky s analýzou dat.