From: Martin Mares Date: Mon, 6 Jul 2009 13:24:20 +0000 (+0200) Subject: Drobne opravy hashovani. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=593fd6af4d27c76676435739e13191e15433b548;p=ads1.git Drobne opravy hashovani. --- diff --git a/12-hash/12-hash.tex b/12-hash/12-hash.tex index 776e160..f12db20 100644 --- a/12-hash/12-hash.tex +++ b/12-hash/12-hash.tex @@ -19,7 +19,7 @@ Pokud bude velikost universa dostate Zvolíme vhodný základ soustavy $b$, klíè zapí¹eme v soustavì o základu $b$ a zápis ulo¾íme do stromu. Tímto nám vznikne \uv{$b$-ární strom}, tedy strom, jeho¾ ka¾dý vrchol má a¾ $b$ synù. -Vrcholy na první hladinì pak znaèí první èíslici, na druhé druhou, atd. Na poslední hladinì bude tedy $n$ listù. Hloubka tohoto stromu je $\lceil\log_b U\rceil$. +Na první hladinì se vìtvíme podle první èíslice, na druhé podle druhé, atd. Na poslední hladinì bude tedy $n$ listù. Hloubka tohoto stromu je $\lceil\log_b U\rceil$. Operace \ bude trvat $O(\log_b U)$ (najití jednoho klíèe odpovídá projití jedné cesty ve stromì od koøene do listu). Stejný èas budou trvat i operace \ a \. (Pøi vkládání zakládáme vrcholy, které odpovídají na¹emu klíèi a které je¹tì nejsou zalo¾ené. Pøi mazání sma¾eme list a následnì vrcholy, ze kterých nic nevede. Pro tuto operaci je výhodné si ve vrcholech udr¾ovat jejich stupnì.) Strom zabere prostor velikosti $O(nb\log_b U)$. @@ -27,7 +27,7 @@ Operace \ bude trvat $O(\log_b U)$ (najit Èím bude základ $b$ men¹í, tím bude lep¹í pamì»ová a hor¹í èasová slo¾itost a obrácenì. Èíslicový strom tedy vy¾aduje peèlivé nastavení parametrù. -\s{Pøíklad:} Pøedstavme si, ¾e klíèe budou IP-adresy, tedy 32-bitová èísla. Jak zvolit $b$, aby byla èasová i pamì»ová slo¾itost pøijatelná? Zkusme rozdìlit IP-adresu na 4 kusy, $b$ bude tedy 256. Strom bude mít hloubku 4. Èas bude v poøádku, ale po¾adavky na prostor jsou dost vysoké. Výhodnìj¹í bude rozdìlit IP-adresu na 8 èástí, $b$ bude tedy 16, hloubka stromu 8 a nároky na èas i pamì» jsou pøijatelné. +\s{Pøíklad:} Pøedstavme si, ¾e klíèe budou IP-adresy, tedy 32-bitová èísla. Jak zvolit $b$, aby byla èasová i pamì»ová slo¾itost pøijatelná? Zkusme rozdìlit IP-adresu na 4 kusy, $b$ bude tedy 256. Strom bude mít hloubku 4. Èas bude v poøádku ($\log_b U = 4$), ale po¾adavky na prostor jsou dost vysoké($nb\log_b U = n \cdot 256\cdot 4 = 1024$). Výhodnìj¹í bude rozdìlit IP-adresu na 8 èástí, $b$ bude tedy 16, hloubka stromu 8 a nároky na èas i pamì» jsou pøijatelné, nebo» $\log_b U = 8$ a $nb\log_b U = n\cdot 16 \cdot 8 = 128$. \h{4. Hashování }