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ý: 8:00 - 9:30
Cvičení: úterý: 9:45 - 11:15

Doporučená literatura

Slajdy z přednášek

Úkoly

úkol 1: experimentálně porovnejte výšku násl. stromů
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 9.10.
forma odevzdání: předvést na cvičení

úkol 2:
Najděte bijekci mezi interpretacemi Catalanových
čísel (handshakes nebo triangulae polygonu vs.
některá z dalších interpretací z přednášky).

body: 5+2
včasné odevzdání: do 9.10.
forma odevzdání: dokument na e-mail

ú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 9.10.
forma odevzdání: předvést na cvičení


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: 5+2
včasné odevzdání: do 23.10.
forma odevzdání: předvést na cvičení

ukol 5:

Experimentálně vyhodnoťte počty operací při vkládání do
AVL stromu. Sestavte AVL strom (postupným vkládáním) o
2000 uzlech (náhodné pořadí). Pro každý externí uzel
zjistěte
A) zda by nastala rotace (a která), kdyby tam byl vložen
   nový klíč. (bez rotace, jednoduchá, dvojitá)
B) délka cesty (1, 2, 3, 4, 5, >5)  od tohoto externího uzlu
   k nejbližšímu předkovi s nenulovým vyvažovacím faktorem.
Určete frekvence ve kterých nastávají současně jevy v A,B.
(Pro více detailů, viz 
http://phoenix.inf.upol.cz/~konecnja/vyuka/2017W/ALS1/L4.pdf
slajdy 30-32)

body: 5+2
včasné odevzdání: do 6.11.
forma odevzdání: předvést na cvičení


ukol 6:
Explicitně vyjádřete vztah mezi Fibonacciho stromem
a interpretací Fibonacciho řady jako velikost populace
králíků v čase (přesněji rodokmenovým stromem těch králíků).

body: 5+2
včasné odevzdání: do 21.11.
forma odevzdání: dokument na e-mail

ukol 7:
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.

Pro ukázku použijte první matici Q na slajdech.

body: 5+2 (+5)
včasné odevzdání: do 21.11.
forma odevzdání: předvést na cvičení


8] Naprogramujte demonstraci R-stromu 2d s kvadratickým splitem.

body: 10+4
včasné odevzdání: do 4.12.
forma odevzdání: předvést na cvičení

9] Experimentálně porovnejte tři algoritmy stavby statických
R-stromů, které jsme probrali na přednášce: vytvořte R-stromy
ze zhruba 2000 dat (zkuste různé hodnoty fill factoru)
a porovnejte rychlost vyhledávání.

body: (5-10)+2
včasné odevzdání: do 4.12.
forma odevzdání: osobně předvést 


10] Naprogramujte demonstraci m-stromu 2d

body: 10+4
včasné odevzdání: do 4.12.
forma odevzdání: osobně předvést 


  

Zkouška

ústní formou.

Požadavky na zápočet

domácí úkoly.
                                1.	2.	3.	4.	5.      6.      7.       8
1.  BEZNOSKA Tomáš              5+2             5+2     5+2     5+2            10+2     10+4         Z
2.  CSÁKÁNYIOVÁ Ema                     5+2                             5+2
3.  CUDELCU Valentin Emil               5+2
4.  ČERNOHOUS Matyáš            5+2     5+2     5+2     5+2     5+2     5+2
5.  DOHNAL David		5                       5+2     5+2     5+2    10+2     10+4         Z
6.  DUFKOVÁ Andrea		
7.  FOLTÝN Miroslav		5+2	5+2	5+2     5+2     5+2     5+2    10+2                  Z
8.  HAAS Antonín		
9.  HRŮZA David			5+2	5+2             5+2             5+2    10+2     10           Z
10. JURAČKA Jakub		5+2	5+2     5+2     5+2     5+2     5      10+2                  Z
11. JURÁSKOVÁ Kateřina		5+2	5+2             5+2     5+2
12. LADEMBERGER Denis			
13. LUBOJACKÁ Jana		5+2	5+2     5+2	5+2     5+2     5+2    10                    Z
14. MACHÁLEK Libor		5+2	5+2	5+2     5+2     5+2     5+2
15. MAJZLÍKOVÁ Gabriela		5+2	5+2     5       5+2     5+2     5      10+2                  Z
16. MOLČÍK Jan			5+2     5+2
17. OPÁLKA Michal		
18. ŘEZNÍČEK Adam		5+2	5+2     5+2     5+2     5+2     5      10+2                  Z
19. ŠIMKOVÁ Lucie		5+2	5+2	5	5+2     5              10       10           Z
20. VALIGURA Petr		5+2	5+2	5+2     5+2     5+2     5+2             10+4         Z
21. VRAŠTIAK Kristián		5+2	5+2	5+2     5+2     5+2     5+2    10+2                  Z