VYHLEDÁVACÍ STROMY AVL strom Operace Find, Insert, Delete A4B33ALG 2010/04 VYHLEDÁVACÍ STROMY AVL strom Operace Find, Insert, Delete Rotace L, R, LR, RL B-strom
AVL strom -- G.M. Adelson-Velskij & E.M. Landis, 1962 A4B33ALG 2011 / 06 AVL strom -- G.M. Adelson-Velskij & E.M. Landis, 1962 AVL strom je BVS s přidanými vlastnostmi, které jej udržují (téměř) vyvážený. AVL má také operace Find, Insert, Delete. 51 2 1 34 76 1 1 13 40 68 92 -1 -1 -1 -1 -1 8 22 45 -1 -1 -1 -1 -1 -1 Každý uzel registruje hloubku svého levého a pravého podstromu, hloubka prázdného stromu je -1. V každém uzlu je rozdíl výšek obou podstromů roven -1, 0, 1. V tomto případě: Výška stromu = hloubka stromu 1
Vložení uzlu může způsobit rozvážení AVL stromu. A4B33ALG 2011 / 06 Vložení uzlu může způsobit rozvážení AVL stromu. V každém uzlu má být rozdíl výšek obou podstromů roven -1, 0, 1 !! Insert 30 51 3 1 34 76 2 1 13 40 68 92 1 -1 -1 -1 -1 -1 8 22 45 -1 -1 -1 -1 -1 30 -1 -1 Levý podstrom uzlu 51 je příliš hluboký, strom přestal být AVL. Změněné hloubky 2
Náprava rozvážení pomocí rotace A4B33ALG 2011 / 06 Náprava rozvážení pomocí rotace 51 3 1 34 76 Insert 30 2 1 13 40 68 92 1 -1 -1 -1 -1 -1 8 22 45 -1 -1 -1 -1 -1 30 -1 -1 34 Vyvážený strom po pravé jednoduché rotaci, tzv. R rotaci 2 2 13 51 1 1 1 8 22 40 76 -1 -1 -1 -1 45 68 92 30 -1 -1 -1 -1 -1 -1 -1 -1 3
Náprava rozvážení pomocí rotace A4B33ALG 2011 / 06 Náprava rozvážení pomocí rotace 51 3 1 34 76 Insert 30 2 1 13 40 68 92 1 -1 -1 -1 -1 -1 8 22 45 -1 -1 -1 -1 -1 Směr rotace 30 -1 -1 34 2 2 R rotace v uzlu 51 13 51 1 1 1 8 22 40 Podstromy beze změn 76 -1 -1 -1 -1 45 68 92 30 -1 -1 -1 -1 -1 -1 -1 -1 4
Rotace R obecně Před Po A x+2 x B C x+1 x D E Z -1 -1 B x+1 x+1 A D x A4B33ALG 2011 / 06 Rotace R obecně A x+2 x B C Před x+1 x D E Z -1 -1 B x+1 x+1 A Po D x x C E Z -1 -1 5
Rotace L je symetrickým obrazem rotace R, jinak se od ní neliší. A4B33ALG 2011 / 06 Rotace L obecně A x x+2 C B Před x x+1 D E Rotace L je symetrickým obrazem rotace R, jinak se od ní neliší. Z -1 -1 B x+1 x+1 Po A D x x C E Z -1 -1 6
Strom pro demonstraci LR rotace A4B33ALG 2011 / 06 AVL strom 51 2 1 34 76 1 1 13 40 68 92 -1 -1 -1 -1 -1 8 36 45 -1 -1 -1 -1 -1 -1 Strom pro demonstraci LR rotace 7
Vložení uzlu může způsobit rozvážení stromu. A4B33ALG 2011 / 06 Vložení uzlu může způsobit rozvážení stromu. V každém uzlu má být rozdíl výšek obou podstromů roven -1, 0, 1 !! Insert 38 51 3 1 34 76 1 2 13 40 68 92 -1 1 -1 -1 -1 -1 8 36 45 -1 -1 -1 -1 -1 -1 Změněné hloubky 38 -1 -1 Levý podstrom uzlu 51 je příliš hluboký, strom přestal být AVL. Použití rotace R by nepomohlo, příliš hlubokým by se stal původní pravý podstrom uzlu 34 díky tomu, že by se jeho hloubka vůbec nezměnila a hloubka levého podstromu 51 by klesla. 8
Náprava rozvážení pomocí LRrotace A4B33ALG 2011 / 06 Náprava rozvážení pomocí LRrotace 51 3 1 Insert 38 34 76 1 2 13 40 68 92 -1 1 -1 -1 -1 -1 8 36 45 -1 -1 -1 -1 -1 -1 38 -1 -1 40 Vyvážený strom po dvojité LR rotaci 2 2 34 51 1 1 1 13 36 45 76 -1 -1 -1 -1 -1 8 38 68 92 -1 -1 -1 -1 -1 -1 -1 -1 9
Náprava rozvážení rotací A4B33ALG 2011 / 06 Náprava rozvážení rotací 51 3 1 Insert 38 34 76 R 1 2 L 13 40 68 92 -1 1 -1 -1 -1 -1 8 36 45 -1 -1 -1 -1 -1 -1 Směry rotace 38 Podstromy beze změn -1 -1 40 2 2 LR rotace v uzlu 34 a 51 34 51 1 1 1 13 36 45 76 -1 -1 -1 -1 -1 8 38 68 92 -1 -1 -1 -1 -1 -1 -1 -1 10
Rotace LR obecně Před Po A X+2 x B C x x+1 D E x F G Z -1 -1 E x+1 x+1 A4B33ALG 2011 / 06 Rotace LR obecně A X+2 x B C x x+1 D E x Před F G Z -1 -1 E x+1 x+1 B A x x x x Po F G C D Z -1 -1 11
Rotace RL je symetrickým obrazem rotace LR, jinak se od ní neliší. A4B33ALG 2011 / 06 Rotace RL obecně A x X+2 C B x+1 x E D x Před G F Rotace RL je symetrickým obrazem rotace LR, jinak se od ní neliší. Z -1 -1 E x+1 x+1 A B x x x x Po C G F D Z -1 -1 12
Pravidla pro aplikaci L, R, LR nebo RL rotací A4B33ALG 2011 / 06 Pravidla pro aplikaci L, R, LR nebo RL rotací Od přidaného uzlu postupujeme směrem ke kořeni a aktualizujeme hloubky podstromů v každém navštíveném uzlu. Když narazíme na rozvážený uzel, do kterého jsme bezprostředně došli * dvěma hranami doprava nahoru provedeme v tomto uzlu R rotaci. * dvěma hranami doleva nahoru, provedeme v tomto uzlu L rotaci. * hranami doleva a pak doprava nahoru, provedeme v tomto uzlu LR rotaci. * hranami doprava a pak doleva nahoru, provedeme v tomto uzlu RL rotaci. Po provedení jedné rotace po operaci Insert je AVL strom opět vyvážen. Po provedení jedné rotace po operaci Delete (viz dále) strom vyvážen být nemusí, je nutno kontrolovat a případně aktualizovat vyvážení až ke kořeni včetně. 13
Strom pro demonstraci rotace po smazání uzlu A4B33ALG 2011 / 06 Delete v AVL stromu Strom pro demonstraci rotace po smazání uzlu 51 1 2 16 84 -1 1 Delete 16 28 70 93 -1 -1 -1 -1 -1 55 -1 -1 Delete proběhne standardně jako v obyčejném BVS. Poté postupujeme od místa smazání nahoru ke kořeni a aktualizujeme výšky podstromů v každém uzlu. Při rozvážení aplikujeme rotaci podobně jako při vkládání. 14
Delete v AVL stromu Delete 16 Změněné hloubky 51 1 2 16 84 -1 1 28 70 A4B33ALG 2011 / 06 Delete v AVL stromu 51 1 2 16 84 -1 1 Delete 16 28 70 93 -1 -1 -1 -1 -1 55 -1 -1 51 2 28 84 -1 -1 1 70 93 -1 -1 -1 Změněné hloubky 55 -1 -1 15
Z rozváženého uzlu 51 prozkoumáme kořen sousedního podstromu, A4B33ALG 2011 / 06 Delete v AVL stromu 51 L 2 28 84 -1 -1 1 R 70 93 -1 -1 -1 Změněné hloubky 55 -1 -1 Z rozváženého uzlu 51 prozkoumáme kořen sousedního podstromu, než ze kterého jsme přišli, v tomto případě uzel 84. Má-li tento oba své podstromy stejně hluboké použijeme jednoduchou L nebo R rotaci. Má-li je různě hluboké (nejvýše se liší o 1), rozhodneme, zda použijeme L, R, LR, RL rotaci, jako kdyby rozvážení (uzel 51) vzniklo naopak přidáním uzlu do tohoto sousedního podstromu (s kořenem 84). V tomto případě použijeme RL. 16
Delete v AVL stromu L Delete 16 R Změněné hloubky Po rotaci RL A4B33ALG 2011 / 06 Delete v AVL stromu 51 L 2 28 84 -1 -1 1 Delete 16 R 70 93 -1 -1 -1 Změněné hloubky 55 -1 -1 70 Po rotaci RL v uzlu 84 a 51 51 84 -1 28 55 93 -1 -1 -1 -1 -1 -1 17
Nutnost vícenásobných rotací po operaci Delete. A4B33ALG 2011 / 06 Nutnost vícenásobných rotací po operaci Delete. Příklad. Před operací Delete je AVL strom vyvážený. 1 2 4 3 Vyváženo. 18
Find (log(n)) (n) Insert (log(n)) Delete A4B33ALG 2011 / 06 Implementace operací v AVL stromu ... // homework... Asymptotické složitosti operací Find, Insert, Delete v BVS a AVL BVS s n uzly AVL strom s n uzly Operace Vyvážený Možná nevyvážený Find (log(n)) (n) Insert (log(n)) Delete 19
B-strom -- Rudolf Bayer, Edward M. McCreight, 1972 A4B33ALG 2011 / 06 B-strom -- Rudolf Bayer, Edward M. McCreight, 1972 Všechny cesty z kořene do listu jsou stejně dlouhé tj. B-strom je ideálně vyvážený. Klíče jsou v uzlu seřazené. Fixní k > 1 pro celý strom určuje velikost všech uzlů. Každý uzel kromě kořene má nejméně k a nejvýše 2k klíčů, každý vnitřní uzel tedy má nejméně k+1 a nejvýše 2k+1 potomků. Kořen může mít libovolný počet klíčů. Není-li zároveň listem, má alespoň 2 potomky. X Y klíče < X X < klíče < Y Y < klíče 20
B-strom -- alternativní specifikace A4B33ALG 2011 / 06 B-strom -- alternativní specifikace Cormen et al. 1990: Stupeň B-stromu: Horní a dolní hranice počtu klíčů v uzlu je dána parametrem t 2: a. Každý uzel různý od kořene obsahuje alespoň t1 klíčů. Tudíž každý vnitřní uzel různý od kořene má alespoň t potomků. b. Každý uzel obsahuje nejvýše 2t1 klíčů. Tudíž každý vnitřní uzel má nejvýše 2t potomků. t = 2 t = 5 x x x x x ... x x x x x x x x x x x x x x x x x x x x x x x x x x x x min klíčů = 4 min klíčů = 1 min potomků = 5 min potomků = 2 max klíčů = 9 max klíčů = 3 max potomků = 10 max potomků = 4 21
A4B33ALG 2011 / 06 B-strom -- Find Najdi 17 18 8 14 26 41 1 2 4 5 10 12 15 16 17 19 20 22 25 27 36 42 45 60 V uzlu se vyhledává sekvenčně (lze také využít půlení intervalu apod). Pokud uzel není listem a klíč v něm není, hledání pokračuje v odpovídajícím potomku. Pokud uzel je listem a klíč v něm není, nenalezeno. 22
B-strom -- aktualizační strategie A4B33ALG 2011 / 06 B-strom -- aktualizační strategie Vícefázová a jednofázová strategie 1. Vícefázová strategie: “Řeš problém, až když vznikne”. Nejprve vlož nebo smaž aktuální klíč a teprve potom, pokud je to nutné, uprav strukturu stromu. Může se stát, že pak bude nutno během úprav procházet strom zpět až ke koření. 2. Jednofázová strategie: “Předcházej budoucím problémům”. Postupuj od kořene na místo, kde má být klíč/uzel vložen/smazán a během postupu upravuj strukturu stromu tak, aby po vložení/smazání nebylo nutno vracet se směrem ke kořeni. 23
B-strom -- Insert Vícefázová strategie B-strom 8 17 26 2 4 10 12 14 16 A4B33ALG 2011 / 06 B-strom -- Insert Vícefázová strategie B-strom 8 17 26 2 4 10 12 14 16 19 22 25 36 41 42 45 Vlož 5 8 17 26 41 2 4 5 10 12 14 16 19 22 25 36 41 42 45 Vlož 20 8 17 26 2 4 5 10 12 14 16 19 20 22 25 36 41 42 45 24
B-strom -- Insert Vícefázová strategie Vlož 27 8 17 26 2 4 5 10 12 14 A4B33ALG 2011 / 06 B-strom -- Insert Vícefázová strategie Vlož 27 8 17 26 2 4 5 10 12 14 16 19 20 22 25 36 41 42 45 27 Seřaď mimo strom. 27 36 41 42 45 Vyber medián, vyvoř nový uzel, přesuň do něj hodnoty větší než medián. 41 27 36 42 45 8 17 26 41 27 Medián zkus vložit do rodiče. 19 20 22 25 27 36 42 45 Zdařilo se. 25
B-strom -- Insert ? Vícefázová strategie Vlož 15 8 17 26 41 2 4 5 10 A4B33ALG 2011 / 06 B-strom -- Insert Vícefázová strategie Vlož 15 8 17 26 41 2 4 5 10 12 14 16 19 20 22 25 27 36 42 45 15 Seřaď mimo strom. 10 12 14 15 16 Vyber medián, vyvoř nový uzel, přesuň do něj hodnoty větší než medián. 14 10 12 15 16 ? Medián zkus vložit do rodiče. 14 8 17 26 41 26
Rodič je zaplněn – Analogický další postup směrem ke kořeni. A4B33ALG 2011 / 06 B-strom -- Insert Vícefázová strategie Bylo vloženo 15 do listu... ... nutno vložit 14 do rodiče. 8 17 26 41 14 2 4 5 10 12 15 16 19 20 22 25 27 36 42 45 Rodič je zaplněn – Analogický další postup směrem ke kořeni. Seřaď mimo strom. 8 14 17 26 41 Vyber medián, vyvoř nový uzel, přesuň do něj hodnoty větší než medián. 17 8 14 26 41 17 Medián nelze vložit do rodiče, žádný rodič není, tedy se zřídí nový kořen. 8 14 26 41 27
B-strom -- Insert Vícefázová strategie Rekapitulace - vlož 15 8 17 26 A4B33ALG 2011 / 06 B-strom -- Insert Vícefázová strategie Rekapitulace - vlož 15 8 17 26 41 2 4 5 10 12 14 16 19 20 22 25 27 36 42 45 Vlož 15 17 Uzly beze změny 8 14 26 41 2 4 5 10 12 15 16 19 20 22 25 27 36 42 45 V každém patře přibyl jeden uzel, kromě toho přibyl nový kořen, strom ale roste směrem "vzhůru", zůstává ideálně vyvážený. 28
B-strom -- Delete Vícefázová strategie Mazání v dostatčně plném listu. A4B33ALG 2011 / 06 B-strom -- Delete Vícefázová strategie Mazání v dostatčně plném listu. 17 Smaž 4 8 14 26 41 2 4 5 10 12 15 16 19 20 22 25 27 36 42 45 60 17 8 14 26 41 2 5 10 12 15 16 19 20 22 25 27 36 42 45 60 29
B-strom -- Delete Vícefázová strategie Mazání ve vnitřním uzlu A4B33ALG 2011 / 06 B-strom -- Delete Vícefázová strategie Mazání ve vnitřním uzlu Smazaný klíč se nahradí nejbližším větším (menším) klíčem, podobně jako v BVS. 17 Smaž 17 8 14 26 41 19 2 5 10 12 15 16 20 22 25 27 36 42 45 60 Nejbližší větší (menší) klíč je vždy v B-stromu v listu, má-li tento list dostatečný počet klíčů, jsme hotovi. 19 8 14 26 41 2 5 10 12 15 16 20 22 25 27 36 42 45 60 30
B-strom -- Delete Vícefázová strategie Mazání v nedostatčně A4B33ALG 2011 / 06 B-strom -- Delete Vícefázová strategie Mazání v nedostatčně plném listu. Ale sousední list je dostatečně plný. 19 8 14 26 41 Smaž 27 2 5 10 12 15 16 20 22 25 27 36 42 45 60 Sjednoť klíče s klíči v sousedním listu a s dělícím klíčem v rodiči a seřaď. 26 41 36 42 45 60 36 41 42 45 60 Medián sjednocení vlož na místo původně dělícího klíče, menší a větší klíče než medián rozděl do levého a pravého listu. 26 42 36 41 45 60 31
B-strom -- Delete Vícefázová strategie Rekapitulace - smaž 27 19 8 14 A4B33ALG 2011 / 06 B-strom -- Delete Vícefázová strategie Rekapitulace - smaž 27 19 8 14 26 41 2 5 10 12 15 16 20 22 25 27 36 42 45 60 27 korektně smazáno Uzly beze změny 19 8 14 26 26 42 41 2 5 10 12 15 16 20 22 25 36 27 41 36 42 45 60 45 60 32
B-strom -- Delete Vícefázová strategie Mazání v nedostatčně A4B33ALG 2011 / 06 B-strom -- Delete Vícefázová strategie Mazání v nedostatčně plném listu. Ani sousední list není dostatečně plný. 19 Smaž 12 8 14 26 26 42 41 2 5 10 12 15 16 20 22 25 27 36 41 36 45 42 45 60 60 8 14 Sjednoť klíče s klíči v sousedním listu a s dělícím klíčem v rodiči a seřaď. Vše vlož do původního listu, sousední list smaž, dělící klíč v rodiči také smaž. 10 12 15 16 8 14 10 14 15 16 33
B-strom -- Delete Vícefázová strategie 19 Rodič nesplňuje A4B33ALG 2011 / 06 B-strom -- Delete Vícefázová strategie 19 Rodič nesplňuje podmínku B-stromu Smazáno 12 8 26 26 41 42 2 5 10 14 15 16 20 22 25 36 27 41 36 45 42 45 60 60 Rodič, který poskytl klíč potomku, není dostatečně plný. Aplikujeme na něj (a případně iterativně na jeho rodiče) tentýž postup spojení klíčů a sousedních uzlů a přesun dělícího prvku z rodiče. 19 8 26 41 19 26 42 8 26 26 41 42 8 19 26 42 26 41 34
B-strom -- Delete Vícefázová strategie Rekapitulace - smaž 12 19 8 14 A4B33ALG 2011 / 06 B-strom -- Delete Vícefázová strategie Rekapitulace - smaž 12 19 8 14 26 26 42 41 2 5 10 12 15 16 20 22 25 36 27 41 36 42 45 45 60 60 Smazáno 12 a strom byl adekvátně restrukturován. Uzly beze změny 26 8 41 19 26 42 2 5 10 14 15 16 20 22 25 36 27 41 36 45 42 60 45 60 35
B-strom -- Insert Jednofázová strategie A4B33ALG 2011 / 06 B-strom -- Insert Jednofázová strategie Single phase strategy Příklad: Cormen et al. 1990: t = 3, min stupeň 3, max stupeň = 6, min klíčů v uzlu (kromě kořene) = 2, max klíčů v uzlu = 5. G M P X A C D E J K N O R S T U V Y Z Insert B G M P X A B C D E J K N O R S T U V Y Z Neovlivněné uzly Insert Q G M P T X A B C D E J K N O Q R S U V Y Z 36
B-strom -- Insert Jednofázová strategie G M P T X A B C D E J K N O Q A4B33ALG 2011 / 06 B-strom -- Insert Jednofázová strategie Single phase strategy G M P T X A B C D E J K N O Q R S U V Y Z Rozděl kořen, protože je plný, a pokračuj směrem k listu vložit L. Insert L P G M T X A B C D E J K L N O Q R S U V Y Z Neovlivněné uzly Insert F P C G M T X A B D E F J K L N O Q R S U V Y Z 37
B-strom -- Delete Jednofázová strategie P Delete F C G M T X A B D E F A4B33ALG 2011 / 06 B-strom -- Delete Jednofázová strategie P Delete F C G M T X A B D E F J K L N O Q R S U V Y Z 1. Když je klíč k v listu X, smaž k v X. P Neovlivněné uzly C G M T X A B D E J K L N O Q R S U V Y Z Další případy 2. a 3. zaručují, že smazání vždy proběhne v uzlu s alespoň t klíči, takže po smazání klíče k nebude nutno nutno list spojovat se sousedy a opravovat strom ve vnitřních uzlech směrem zpět ke kořeni. 38
B-strom -- Delete Jednofázová strategie P Delete M C G M T X A B D E J A4B33ALG 2011 / 06 B-strom -- Delete Jednofázová strategie P Delete M C G M T X A B D E J K L N O Q R S U V Y Z 2. Když je klíč k ve vnitřním uzlu X, udělej: 2a. Když má potomek Y vlevo od klíče k v uzlu X alespoň t klíčů, najdi maximální klíč kp v podstromu s kořenem Y. Nahraď v X klíč k klíčem kp and rekurzivně pokračuj mazat kp v podstromu s kořenem Y. (b. Pokud má Y méně než t klíčů, pak zkoumej potomka Z vpravo od klíče k v X a pokud Z má alespoň t klíčů, postupuj analogicky (s hledáním minima) jako ve 2a. P C G L T X A B D E J K N O Q R S U V Y Z 39
B-strom -- Delete Jednofázová strategie Delete G P C G L T X A B D E J A4B33ALG 2011 / 06 B-strom -- Delete Jednofázová strategie Delete G P C G L T X A B D E J K N O Q R S U V Y Z 2c. Jinak, t.j. když Y a Z mají jen t1 klíčů, přesuň k a klíče uzlu Z do uzlu Y. Tím v X ubyde klíč k a ukazatel na Z. Uzel Y nově obsahuje 2t1 klíčů. Fyzicky smaž Z and pokračuj rekurzivně smazáním k v Y. P C L T X A B D E J K N O Q R S U V Y Z 40
B-strom -- Delete Jednofázová strategie A4B33ALG 2011 / 06 B-strom -- Delete Jednofázová strategie 3. Když vnitřní uzel X neobsahuje klíč k, urči toho potomka X.c uzlu X, který je kořenem podstromu, v němž leží k, pokud se k ve stromu vůbec vyskytuje. Pokud má X.c pouze t1 klíčů, proveď podle okolností krok 3a nebo 3b, aby bylo zaručeno, že z uzlu X bude operace mazání pokračovat v takovém jeho potomku, který má alespoň t klíčů. Poté se přesuň do tohoto potomku a pokračuj rekurzivně. Delete D P C L T X A B D E J K N O Q R S U V Y Z 41
B-strom -- Delete Jednofázová strategie P Delete D Merge C L T X A B D A4B33ALG 2011 / 06 B-strom -- Delete Jednofázová strategie P Delete D Merge C L T X A B D E J K N O Q R S U V Y Z 3a. Pokud uzel X.c a oba jeho sousední sourozenci (pokud existují) obsahují t1 klíčů, přesuň klíče z jednoho sourozence do X.c, smaž tohoto sourozence a navíc do X.c přesuň z X klíč, který bude nyní mediánem v X.c. Merged C L P T X A B D E J K N O Q R S U V Y Z C L P T X A B E J K N O Q R S U V Y Z 42
B-strom -- Delete Jednofázová strategie Delete B C L P T X A B E J K N A4B33ALG 2011 / 06 B-strom -- Delete Jednofázová strategie Delete B C L P T X A B E J K N O Q R S U V Y Z 3b. Pokud uzel X.c obsahuje t1 klíčů a jeho sousední sourozenec Y obsahuje alespoň t klíčů, přesuň z X do X.c. klíč m rozdělující X.c. a Y. Na bývalé místo m v X přesuň patřičný krajní (největší nebo nejmenší) klíč z Y. Příslušný krajní odkaz v Y na jeho potomka přesuň do X.c ke klíči m. E L P T X A C J K N O Q R S U V Y Z 43
B-strom -- asymptotické složitosti operací A4B33ALG 2011 / 06 B-strom -- asymptotické složitosti operací Find O(b ∙ logb n) Insert (b ∙ logb n) Delete (b ∙ logb n) n je počet klíčů ve stromu, b je větvící faktor, tj. řád stromu tj. maximální počet potomků uzlu. Poznámka: Někteří autoři (např. CLRS) definují řád (order) B-stromu jako [b/2], tj. minimální počet potomků vnitřního uzlu různého od kořene. Terminologie není ustálená, je třeba vždy vztahy interpretovat v patřičných souvislostech. 44