Autorské riešenie
Keďže obchodný dom predáva štyri typy tovarov, na začiatku tejto úlohy máme zoznam obsahov nákupných košíkov, napríklad [['A','B'],['B','C','D'],['A','B','C'],['A','D'],['A','C','D'],['B','D'],['A','B','D']]. Ak chceme spočítať spoľahlivosť pravidla A → B, ako prvý krok spočítame počet nákupných košíkov, ktoré obsahujú položku A. V našom prípade to bude päť košíkov. V druhom kroku spočítame počet nákupných košíkov, ktoré obsahujú položky A a B súčasne. V našom prípade to budú tri košíky. V poslednom treťom kroku vydelíme čísla, ktoré sme dostali v prvom a druhom kroku. Teda v našom prípade dostaneme 3/5 = 0,6. To znamená, že spoľahlivosť pravidla A → B je 60 %, teda ak si človek kúpi položku A, tak v 60 % si kúpi aj položku B. Poznámka na záver: Ako je vidieť, tak v prípade, ak sa položka A nenachádza ani v jednom košíku, nie je možné danú spoľahlivosť vypočítať podľa predchádzajúceho postupu. V takom prípade je dobré uviesť, že spoľahlivosť nie je možné vypočítať (None) alebo generovať výnimku. Nasleduje možný zdrojový kód v jazyku Python: def pocitaj_spolahlivost(nakupne_kosiky, A, B): kosiky_s_A = [kosik for kosik in nakupne_kosiky if A in kosik] kosiky_s_A_a_B = [kosik for kosik in kosiky_s_A if B in kosik] if len(kosiky_s_A) == 0: return None spolahlivost = len(kosiky_s_A_a_B) / len(kosiky_s_A) return spolahlivost Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešili všetky štyri tímy v kategórii expert. Väčšina tímov použila správny postup na dosiahnutie vhodného riešenia a využilo postup uvedený v autorskom riešení. Viaceré riešenia boli výborne okomentované. Vo všetkých riešeniach tímy správne určili parametre funkcie, výpočet počtu košíkov s jednou položkou. Ale niektoré tímy nesprávne vypočítali počet košíkov s dvoma položkami alebo výslednú spoľahlivosť pravidla. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |