Jan Konečný - Výuka - KMI/ALS1 Algoritmy pro rozsáhlá data


Předmět pojednává o vybraných pokročilých algoritmech, zejm. algoritmech vyhledávání.

Rozvrh předmětu

Přednáška: úterý: 9:45 - 11:15
Cvičení: úterý: 11:30 - 13:00

Doporučená literatura

Studijní materiály

  • 25.9.2019 -- Složitost vyhledávání v BST L1.pdf (slajdy 8, 20-27)
  • Studijní materiály (z předchozího roku)

    Následující studijní materály jsou z předchozí iterace tohoto kurzu. K té letošní je budu v průběhu semestru.

    Úkoly (požadovaný počet: 60 bodů)

    úkol 1: experimentálně porovnejte prům. čas vyhledávání v násl. stromech:
    1) RBBST o 100 prvcích;
    2) BST, který byl na začátku prázdný a do kterého
       bylo vloženo 200 prvků a následně 100 smazáno;
    3) BST který byl na začátku prázdný a se kterým
       byly 100x vloženy dva nové prvky a jeden prvek
       smazán.
    
    
    
    body: 5+2
    včasné odevzdání: do 10.10. (včetně)
    forma odevzdání: předvést na cvičení
    
    ------------------------------------------------------------
    
    úkol 2: Vysvětlete konstrukci Catalanova trojúhelníku.
    
    body: 5+2
    včasné odevzdání: do 10.10. (včetně)
    forma odevzdání: na papíře či v el. dokumentu
    
    ------------------------------------------------------------
    
    úkol 3: Experimentálně porovnejte vyvážený a optimální strom o 1000
    uzlech s vahamí:
    
    P = (5 1 2 0 4 3 2 2 2 3 4 0 3 3 3 3 2 4 2 1 5 3 3 4 2 5 3 0 4 4 0 3 1 1 2 0 3 1
         5 1 2 3 0 1 3 4 0 3 5 2 5 0 0 0 2 2 3 2 4 0 3 1 3 5 1 0 4 0 1 3 5 3 4 0 5 3 
         3 0 4 2 5 4 4 1 1 0 0 2 2 4 3 2 2 0 5 1 0 0 0 1 0 1 1 1 3 4 1 1 2 2 5 4 2 3
         5 3 3 4 2 0 4 0 2 3 0 4 5 3 3 4 4 2 0 1 3 0 1 0 4 3 4 4 2 2 3 4 5 0 3 0 3 3
         4 5 2 1 2 4 3 5 1 5 5 0 3 0 4 0 3 2 3 1 2 3 1 4 1 5 1 0 3 0 2 5 3 1 0 4 3 4
         1 3 0 0 5 0 5 3 1 5 4 1 3 3 3 5 3 2 3 1 0 1 1 0 4 5 5 5 3 5 1 1 2 0 4 4 5 0
         0 1 3 2 2 0 4 1 2 3 2 0 5 1 2 5 2 5 0 4 3 5 5 3 2 2 0 3 3 1 4 1 0 4 3 0 1 3
         0 2 3 5 3 2 2 4 4 3 4 0 1 1 0 4 1 1 1 5 2 1 1 1 4 0 1 3 1 3 0 3 5 3 0 5 4 5
         3 4 3 3 5 5 4 2 5 5 0 5 0 1 400 3 3 1 0 5 2 0 1 1 2 0 1 5 0 5 2 3 0 1 0 5 3 5
         4 4 5 0 0 5 1 4 1 5 5 4 5 5 3 1 0 4 4 3 4 2 3 0 3 4 0 5 5 2 2 4 2 0 4 4 1 3
         2 1 0 4 4 3 2 2 2 0 4 1 5 4 5 1 2 0 5 4 4 0 4 0 2 5 3 2 2 1 5 3 0 2 5 2 2 1
         4 2 3 3 4 3 5 0 2 0 1 3 0 0 2 2 5 1 2 3 0 5 3 0 4 3 1 5 2 3 5 3 2 1 2 4 4 2
         0 5 3 1 0 2 1 4 5 1 3 3 4 4 5 0 1 4 4 5 2 1 1 0 1 3 2 3 2 1 0 1 0 4 5 1 4 4
         3 1 2 1 0 1 3 4 5 4 5 3 5 0 5 2 1 5 1 0 1 0 5 1 0 3 4 3 5 1 3 5 5 3 1 4 2 0
         3 1 0 4 2 4 2 0 1 1 3 2 2 0 5 1 2 0 5 2 4 3 3 1 0 4 3 5 3 2 5 3 2 2 3 2 1 5
         0 3 0 2 0 1 2 4 4 5 3 0 0 1 4 5 0 3 2 1 4 5 1 0 4 1 5 2 3 2 3 5 1 3 5 2 5 1
         2 1 3 0 4 3 2 3 5 1 3 1 5 5 3 2 5 4 3 1 2 0 3 0 5 2 3 4 3 3 1 4 1 0 3 0 3 2
         3 5 2 4 0 4 3 5 3 4 3 0 3 5 2 2 0 2 3 3 4 0 4 0 4 3 1 1 3 2 2 5 3 1 3 4 1 2
         5 0 1 5 0 2 3 1 1 2 4 1 4 3 5 4 2 2 3 1 4 5 5 4 3 5 2 0 5 2 3 3 2 0 4 1 1 5
         2 2 0 0 2 5 2 1 0 2 2 3 3 3 3 5 2 2 1 3 1 3 2 3 3 2 4 3 3 5 0 4 4 4 0 4 1 2
         4 0 5 0 5 1 2 4 0 0 4 4 1 4 0 5 0 0 4 0 0 0 4 5 0 1 2 2 4 5 1 5 2 0 5 4 5 3
         1 3 3 0 4 3 3 3 5 4 5 0 2 2 0 3 3 2 5 5 3 0 5 5 3 3 4 2 4 1 3 4 4 5 4 2 2 0
         1 2 2 0 1 5 4 4 0 2 5 4 1 2 0 0 5 1 2 4 0 5 3 4 1 0 5 1 1 0 4 3 5 1 3 0 5 0
         5 4 4 5 2 2 3 4 1 5 4 4 5 300 2 4 4 1 3 3 1 4 4 3 4 0 4 0 3 5 4 1 4 5 0 3 3 1
         1 2 2 3 2 2 5 4 1 1 5 5 3 3 4 4 0 2 3 5 5 5 4 5 3 1 1 0 1 2 0 5 5 0 2 0 4 2
         2 3 0 3 3 5 2 3 3 4 5 0 0 4 5 1 0 1 2 5 2 0 1 0 4 1 2 2 2 5 1 1 4 1 3 5 3 4
         5 5 4 3 0 2 1 3 0 3 0 2000)
    
    Q = (5 10000 2 0 4 3 2 2 2 3 4 0 3 3 3 3 2 4 2 1 5 3 3 4 2 5 3 0 4 4 0 3 1 1 2 0 3 1
         5 1 2 3 0 1 3 4 0 3 5 2 5 0 0 0 2 2 3 2 4 0 3 1 3 5 1 0 4 0 1 3 5 3 4 0 5 3
         3 0 4 2 5 4 4 1 1 0 0 2 2 4 3 2 2 0 5 1 0 0 0 1 0 1 1 1 3 4 1 1 2 2 5 4 2 3
         5 3 3 4 2 0 4 0 2 3 0 4 5 3 3 4 4 2 0 1 3 0 1 0 4 3 4 4 2 2 3 4 5 0 3 0 3 3
         4 5 2 1 2 4 3 5 1 5 5 0 3 0 4 0 3 2 3 1 2 3 1 4 1 5 1 0 3 0 2 5 3 1 0 4 3 4
         1 3 0 0 5 0 5 3 1 5 4 1 3 3 3 5 3 2 3 1 0 1 1 0 4 5 5 5 3 5 1 1 2 0 4 4 5 0
         0 1 3 2 2 0 4 1 2 3 2 0 5 1 2 5 2 5 0 4 3 5 5 3 2 2 0 3 3 1 4 1 0 4 3 0 1 3
         0 2 3 5 3 2 2 4 4 3 4 0 1 1 0 4 1 1 1 5 2 1 1 1 4 0 1 3 1 3 0 3 5 3 0 5 4 5
         3 4 3 3 5 5 4 2 5 5 0 5 0 1 4 3 3 1 0 5 2 0 1 1 2 0 1 5 0 5 2 3 0 1 0 5 3 5
         4 4 5 0 0 5 1 4 1 5 5 4 5 5 3 1 0 4 4 3 4 2 3 0 3 4 0 5 5 2 2 4 2 0 4 4 1 3
         2 1 0 4 4 3 2 2 2 0 4 1 5 4 5 1 2 0 5 4 4 0 4 0 2 5 3 2 2 1 5 3 0 2 5 2 2 1
         4 2 3 3 4 3 5 0 2 0 1 3 0 0 2 2 5 1 2 3 0 5 3 0 4 3 1 5 2 3 5 3 2 1 2 4 4 2
         0 5 3 1 0 2 1 4 5 1 3 3 4 4 5 0 1 4 4 5 2 1 1 0 1 3 2 3 2 1 0 1 0 4 5 1 4 4
         3 1 2 1 0 1 3 4 5 4 5 3 5 0 5 2 1 5 1 0 1 0 5 1 0 3 4 3 5 1 3 5 5 3 1 4 2 0
         3 1 0 4 2 4 2 0 1 1 3 2 2 0 5 1 2 0 5 2 4 3 3 1 0 4 3 5 3 2 5 3 2 2 3 2 1 5
         0 3 0 2 0 1 2 4 4 5 3 0 0 1 4 5 0 3 2 1 4 5 1 0 4 1 5 2 3 2 3 5 1 3 5 2 5 1
         2 1 3 0 4 3 2 3 5 1 3 1 5 5 3 2 5 4 3 1 2 0 3 0 5 2 3 4 3 3 1 4 1 0 3 0 3 2
         3 5 2 4 0 4 3 5 3 4 3 0 3 5 2 2 0 2 3 3 4 0 4 0 4 3 1 1 3 2 2 5 3 1 3 4 1 2
         5 0 1 5 0 2 3 1 1 2 4 1 4 3 5 4 2 2 3 1 4 5 5 4 3 5 2 0 5 2 3 3 2 0 4 1 1 5
         2 2 0 0 2 5 2 1 0 2 2 3 3 3 3 5 2 2 1 3 1 3 2 3 3 2 4 3 3 5 0 4 4 4 0 4 1 2
         4 0 5 0 5 1 2 4 0 0 4 4 1 4 0 5 0 0 4 0 0 0 4 5 0 1 2 2 4 5 1 5 2 0 5 4 5 3
         1 3 3 0 4 3 3 3 5 4 5 0 2 2 0 3 3 2 5 5 3 0 5 5 3 3 4 2 4 1 3 4 4 5 4 2 2 0
         1 2 2 0 1 5 4 4 0 2 5 4 1 2 0 0 5 1 2 4 0 5 3 4 1 0 5 1 1 0 4 3 5 1 3 0 5 0
         5 4 4 5 2 2 3 4 1 5 4 4 5 3 2 4 4 1 3 3 1 4 4 3 4 0 4 0 3 5 4 1 4 5 0 3 3 1
         1 2 2 3 2 2 5 4 1 1 5 5 3 3 4 4 0 2 3 5 5 5 4 5 3 1 1 0 1 2 0 5 5 0 2 0 4 2
         2 3 0 3 3 5 2 3 3 4 5 0 0 4 5 1 0 1 2 5 2 0 1 0 4 1 2 2 2 5 1 1 4 1 3 5 3 4
         5 5 4 3 0 2 1 3 0 3 0 2 1)
    
    (Prvky vyhledávejte s četností odpovídající jejich vahám).
    
    body: 5+2
    včasné odevzdání: do 17.10.
    forma odevzdání: předvést na cvičení nebo po dohodě
    
    
    
    ukol 4:
    
    Navrhněte dokonalé hašování pro 4888 náhodně zvolených
    číselných klíčů. Experimentálně porovnejte s vyhledáváním
    v setřízením poli.
    
    body: 10+4
    včasné odevzdání: do 6.11.
    forma odevzdání: předvést na cvičení
    
    
    ukol 5:
    Naprogramujte výpočet Pageranku pomocí mocninné metody z prvotní
    matice Q. (pro více detailů, viz 
    http://phoenix.inf.upol.cz/~konecnja/vyuka/2017W/ALS1/L5.pdf
    poslední slajd).
    
    Bonusové body jsou za reprezentaci vstupní matice jako řídké matice
    (vlastní nastudovaní a implementace)
    
    Pro ukázku použijte první matici Q na slajdech.
    
    body: 5+2 (+10)
    včasné odevzdání: do 6.11.
    forma odevzdání: předvést na cvičení
    
    
    ukol 6:
    Naprogramujte grafickou demonstraci R-stromu 2d s libovolným splitem.
    
    body: 10+4
    včasné odevzdání: do 20.11.
    forma odevzdání: předvést na cvičení
    
    
    ukol 7:
    Navrhněte algoritmus (napište pseudokód) na hledaní
    optimálního splitu se složitosti $O(n^d)$ (d = počet dimenzi, n =
    počet zaznamů ke splitu).
    
    body: 10+4
    včasné odevzdání: do 4.12.
    forma odevzdání: předvést na cvičení nebo poslat e-mailem
    
    
    ukol 8:
    Experimentalne porovnejte dva (tri) algoritmy hledani nejblizssich
    sousedu v R-stromu.
    
    body: 5(10)+3
    včasné odevzdání: do 17.12.
    forma odevzdání: předvést na cvičení
    
    
    
        

    Zkouška

    ústní formou.

    Požadavky na zápočet

    domácí úkoly.
    BADAL        1V,2,3V,4V,5V,6V          (5+2)+5+(5+2)+(10+4)+(5+10)+(10+4)          = 62
    BENES        1V,2V,3V,4V,5+,6V         (5+2)+(5+2)+(5+2)+(10+4)+(5+10)+(10+4)      = 64
    CHALUPA      4V                        (10+4)                                      = 14
    KAUFMAN      1V,2V,3V,4V,5+V,6V        (5+2)+(5+2)+(5+2)+(10+4)+(5+2+10)+(10+4)    = 66
    MOLCIK       1V,4V                     (5+2)+(10+4)                                = 21
    PANCHARTEK   1V                        (5+2)                                       =  7
    PAVLU        1,2V,3,4                  5+(5+2)+5+10                                = 37
    TUMA         1V,3V,4V,5V               (5+2)+(5+2)+(10+4)+(5+10)                   = 43
    VACLAVEK     1V,3V,4V,5+V              (5+2)+(5+2)+(10+4)+(5+2+10)                 = 45
    VRABKA       1V,2V,3V,4V,6V,7V         (5+2)+(5+2)+(5+2)+(10+4)+(10+4)+(10+4)      = 63
    VYHNALEK     1V,2,3V,4V,5+V,6V         (5+2)+5+(5+2)+(10+4)+(5+2+10)+(10+4)        = 64
    VYKOUPIL     1V,2V,3V,4V,5+            (5+2)+(5+2)+(5+2)+(10+4)+(5+10)             = 50
    VYMAZAL      1V,3V,4V,5+V              (5+2)+(5+2)+(10+4)+(5+2+10)                 = 45
    WEHMHONER    1V,3V                     (5+2)+(5+2)                                 = 14
    ZALESAK      1V,3V,4V,5+,6V            (5+2)+(5+2)+(10+4)+(5+10)+(10+4)            = 57