{"text_format":"2","workbook":"xls","n_sheets":3,"sheets":["Cormack","List2","List3"],"not_rendered":{"charts":0,"images":0,"macros":0,"external_links":0,"defined_names":0,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"run_cost":"one","rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900","formulas":"cached_only"}

{"sheet":"Cormack","index":0,"n_rows":187,"n_cols":16,"rows_kept":187,"cut":false,"hidden":false,"merged":[],"flags":["formulas_cached_only"]}
[]
[null,"Perfektní hashovaní Cormacka"]
[]
[null,"Hashovací funkce:",null,"h(k) = k mod 11"]
[null,null,null,"h_i(k, r) = (k >> i) mod r",null,null,"(funkce h s indexem i)"]
[]
[null,"Cormackovo hashovani pouziva funkce:"]
[]
[null,"funkce FREE(p)",null,"tj. funkce, která vratí pozici v primárním souboru, kde je souvisly blok o délce argumentu funkce (hledá se většinou od začátku primárního souboru)"]
[]
[]
[null,null,"Adresář:",{"$nulls":5},"Primární soubor:"]
[]
[]
[null,null,null,"p","i","r",null,0]
[null,null,0]
[null,null,1]
[null,null,2]
[null,null,3]
[null,null,4]
[null,null,5]
[null,null,6]
[null,null,7]
[null,null,8]
[null,null,9]
[null,null,10]
[]
[]
[null,"Insert(2)",{"$nulls":8},"Postup:","1) \"Kam se mám podívat v adresáři?\""]
[]
[null,null,null,"p","i","r",null,0,2,null,null,"h(2) = 2 mod 11 = 2"]
[null,null,0]
[null,null,1,{"$nulls":8},"2) hodnota r je nula na radku 2, vkládá se jednoduše:"]
[null,null,2,0,0,1]
[null,null,3,{"$nulls":8},"Nastavíme:",null,"r = 1"]
[null,null,4,{"$nulls":10},"p = FREE(1) = 0"]
[null,null,5,{"$nulls":10},"i = 0"]
[null,null,6,{"$nulls":7},"Pozn:","Toto je obecný postup, když přidáváme do řádku se samými nulami  -- dle INSERTu pro Cormacka"]
[null,null,7,{"$nulls":8},"(nevyplněné řádky odpovídají řádkům s hodnotami 0 pro p, i, r)"]
[null,null,8]
[null,null,9]
[null,null,10]
[]
[]
[null,"Insert(70)",{"$nulls":8},"Postup:","1) \"Kam se mám podívat v adresáři?\""]
[]
[null,null,null,"p","i","r",null,0,2,null,null,"h(70) = 70 mod 11 = 4"]
[null,null,0,{"$nulls":4},1,70]
[null,null,1,{"$nulls":8},"2) hodnota r je nula na radku 4, vkládá se jednoduše:"]
[null,null,2,0,0,1]
[null,null,3,{"$nulls":8},"Nastavíme:",null,"r = 1"]
[null,null,4,1,0,1,{"$nulls":7},"p = FREE(1) = 1"]
[null,null,5,{"$nulls":10},"i = 0"]
[null,null,6]
[null,null,7]
[null,null,8]
[null,null,9]
[null,null,10]
[]
[]
[null,"Insert(71)",{"$nulls":8},"Postup:","1) \"Kam se mám podívat v adresáři?\""]
[]
[null,null,null,"p","i","r",null,0,2,null,null,"h(71) = 71 mod 11 = 5"]
[null,null,0,{"$nulls":4},1,70]
[null,null,1,{"$nulls":4},2,71,null,null,"2) hodnota r je nula na radku 5, vkládá se jednoduše:"]
[null,null,2,0,0,1]
[null,null,3,{"$nulls":8},"Nastavíme:",null,"r = 1"]
[null,null,4,1,0,1,{"$nulls":7},"p = FREE(1) = 2"]
[null,null,5,2,0,1,{"$nulls":7},"i = 0"]
[null,null,6]
[null,null,7]
[null,null,8]
[null,null,9]
[null,null,10]
[]
[]
[null,"Insert(37)",{"$nulls":8},"Postup:","1) \"Kam se mám podívat v adresáři?\""]
[]
[null,null,null,"p","i","r",null,0,2,null,null,"h(37) = 37 mod 11 = 4"]
[null,null,0,{"$nulls":4},1]
[null,null,1,{"$nulls":4},2,71,null,null,"2) "]
[null,null,2,0,0,1,null,3,70]
[null,null,3,{"$nulls":4},4,37,null,null,"Nastavíme:",null,"r = 2, protože máme 2 záznamy do primárního souboru pro záznam 4 adresáře"]
[null,null,4,3,0,2,null,5,{"$nulls":5},"p = FREE(2) = 3"]
[null,null,5,2,0,1,null,6]
[null,null,6,{"$nulls":7},"Pozn:","Ještě je třeba z pozice 1 odstranit hodnotu 70 - protože tuto hodnotu prehashovavame do "]
[null,null,7,{"$nulls":8},"noveho SOUVISLEHO bloku (zacinajiciho na pozici 3), tak aby obsahoval hodnoty 37 a 70."]
[null,null,8]
[null,null,9,{"$nulls":8},"3) Určíme hodnotu \"i\":"]
[null,null,10]
[{"$nulls":12},"Zkoušíme i = 0:"]
[]
[{"$nulls":12},"h_0(37, 2) = 37 mod 2 = 1"]
[{"$nulls":12},"h_0(70, 2) = 70 mod 2 = 0"]
[]
[{"$nulls":12},"Dostali jsme různé hodnoty pro všechny prvky daného bloku, což znamená, že "]
[{"$nulls":12},"i = 0 můžeme použít. Data naskládáme do bloku podle hodnot funkce h_i  vzestupně."]
[]
[]
[]
[null,"Insert(1)",{"$nulls":8},"Postup:","1) \"Kam se mám podívat v adresáři?\""]
[]
[null,null,null,"p","i","r",null,0,2,null,null,"h(1) = 1 mod 11 = 1"]
[null,null,0,{"$nulls":4},1,1]
[null,null,1,1,0,1,null,2,71,null,null,"2) hodnota r je nula na radku 1, vkládá se jednoduše:"]
[null,null,2,0,0,1,null,3,70]
[null,null,3,{"$nulls":4},4,37,null,null,"Nastavíme:",null,"r = 1"]
[null,null,4,3,0,2,null,5,{"$nulls":5},"p = FREE(1) = 1"]
[null,null,5,2,0,1,null,6,{"$nulls":5},"i = 0"]
[null,null,6]
[null,null,7]
[null,null,8]
[null,null,9]
[null,null,10]
[]
[]
[null,"Insert(57)",{"$nulls":8},"Postup:","1) \"Kam se mám podívat v adresáři?\""]
[]
[null,null,null,"p","i","r",null,0,null,null,null,"h(57) = 57 mod 11 = 2"]
[null,null,0,{"$nulls":4},1,1]
[null,null,1,1,0,1,null,2,71,null,null,"2)"]
[null,null,2,5,0,2,null,3,70]
[null,null,3,{"$nulls":4},4,37,null,null,"Nastavíme:",null,"r = 2"]
[null,null,4,3,0,2,null,5,2,{"$nulls":4},"p = FREE(2) = 5"]
[null,null,5,2,0,1,null,6,57]
[null,null,6,{"$nulls":8},"3) Určíme hodnotu \"i\":",null,null,"(data, která potřebujeme umístit do bloku jsou: 2, 57)"]
[null,null,7]
[null,null,8,{"$nulls":9},"Zkoušíme i = 0:"]
[null,null,9]
[null,null,10,{"$nulls":9},"h_0(57, 2) = 52 mod 2 = 1"]
[{"$nulls":12},"h_0(2, 2) = 2 mod 2 = 0"]
[]
[{"$nulls":12},"Dostali jsme různé hodnoty pro všechny prvky daného bloku, což znamená, že "]
[{"$nulls":12},"i = 0 můžeme použít. Data naskládáme do bloku podle hodnot funkce h_i  vzestupně."]
[]
[]
[]
[null,"Insert(59)",{"$nulls":8},"Postup:","1) \"Kam se mám podívat v adresáři?\""]
[]
[null,null,null,"p","i","r",null,0,null,null,null,"h(59) = 59 mod 11 = 4"]
[null,null,0,{"$nulls":4},1,1]
[null,null,1,1,0,1,null,2,71,null,null,"2)"]
[null,null,2,5,0,2,null,3]
[null,null,3,{"$nulls":4},4,null,null,null,"Nastavíme:",null,"r = 3"]
[null,null,4,7,4,3,null,5,2,{"$nulls":4},"p = FREE(3) = 7",null,"(uvolníme blok pozice 3, 4 z primárního souboru - viz předchozí stav adresáře)"]
[null,null,5,2,0,1,null,6,57]
[null,null,6,{"$nulls":4},7,59,null,null,"3) Určíme hodnotu \"i\":",null,null,"(data, která potřebujeme umístit do bloku jsou: 37, 70, 59)"]
[null,null,7,{"$nulls":4},8,70]
[null,null,8,{"$nulls":4},9,37,null,null,null,"Zkoušíme i = 0:"]
[null,null,9]
[null,null,10,{"$nulls":9},"h_0(37, 3) = 37 mod 3 = 1"]
[{"$nulls":12},"h_0(59, 3) = 59 mod 3 = 2"]
[{"$nulls":12},"h_0(70, 3) = 70 mod 3 = 1"]
[]
[{"$nulls":12},"Nedostali jsme různé hodnoty, zvyšujeme i na i = 1 a počítáme znovu:"]
[]
[{"$nulls":12},"Zkoušíme i = 1:"]
[]
[{"$nulls":12},"h_1(37, 3) = (37 >> 1) mod 3 = 18 mod 3 = 0"]
[{"$nulls":12},"h_1(59, 3) = (59 >> 1) mod 3 = 29 mod 3 = 2"]
[{"$nulls":12},"h_1(70, 3) = (70 >> 1) mod 3 = 35 mod 3 = 2"]
[]
[{"$nulls":12},"Nedostali jsme různé hodnoty, zvyšujeme i na i = 2 a počítáme znovu:"]
[]
[{"$nulls":12},"Zkoušíme i = 2:"]
[]
[{"$nulls":12},"h_2(37, 3) = (37 >> 2) mod 3 = 9 mod 3 = 0"]
[{"$nulls":12},"h_2(59, 3) = (59 >> 2) mod 3 = 14 mod 3 = 2"]
[{"$nulls":12},"h_2(70, 3) = (70 >> 2) mod 3 = 17 mod 3 = 2"]
[]
[{"$nulls":12},"Nedostali jsme různé hodnoty, zvyšujeme i na i = 3 a počítáme znovu:"]
[]
[{"$nulls":12},"Zkoušíme i = 3:"]
[]
[{"$nulls":12},"h_3(37, 3) = (37 >> 3) mod 3 = 4 mod 3 = 1"]
[{"$nulls":12},"h_3(59, 3) = (59 >> 3) mod 3 = 7 mod 3 = 1"]
[{"$nulls":12},"h_3(70, 3) = (70 >> 3) mod 3 = 8 mod 3 = 2"]
[]
[{"$nulls":12},"Nedostali jsme různé hodnoty, zvyšujeme i na i = 4 a počítáme znovu:"]
[]
[{"$nulls":12},"Zkoušíme i = 4:"]
[]
[{"$nulls":12},"h_4(37, 3) = (37 >> 4) mod 3 = 2 mod 3 = 2"]
[{"$nulls":12},"h_4(59, 3) = (59 >> 4) mod 3 = 3 mod 3 = 0"]
[{"$nulls":12},"h_4(70, 3) = (70 >> 4) mod 3 = 4 mod 3 = 1"]
[]
[{"$nulls":12},"HOTOVO, vyšly různé hodnoty, doplníme je do bloku v pořadí: 59, 70, 37"]

{"sheet":"List2","index":1,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[],"flags":["formulas_cached_only"]}

{"sheet":"List3","index":2,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[],"flags":["formulas_cached_only"]}