Moderni reseni

Kolik metrů jsou kořeny stromu?

Strom je abstraktní datová struktura, jejíž hierarchie je podobná stromu. Skládá se z připojených uzlů, z nichž jeden je „kořen“. Každý uzel může mít jednoho předka a/nebo jednoho či více potomků. Strom je souvislý graf bez cyklů.

Kořen stromu je nejvyšší uzel.

Strom lze rekurzivně definovat jako množinu uzlů, z nichž jeden je kořen a každý uzel je datová struktura obsahující určitou hodnotu a také odkazy na další (dětské) uzly, za předpokladu, že neexistuje žádná vazba na kořenový uzel, ale ke zbytku jsou uzly právě na jednom odkazu.

List je uzel, který nemá žádné potomky (potomky).

Vnitřní uzel je uzel stromu, který má potomky.

Hloubka stromu je nejdelší cesta od kořene stromu k jeho listu.

Strom, ve kterém má každý uzel nejvýše dva potomky, se nazývá binární strom.

Procházení uzlů stromu

Procházení stromem do hloubky: procházení všemi potomky každého uzlu. Je vhodné implementovat rekurzivně:

Postup Procházení stromu do hloubky

Procházení podstromem do hloubky

Konec procedury

Postup Procházení podstromem do hloubky

Cyklus pro každého uzel potomek node.childs provést

Procházení podstromem do hloubky

Konec cyklu

Konec procedury

Procházení stromem do šířky: postupné procházení uzlů stejné úrovně, postupný pohyb z horní do nižší úrovně. Pořadí navštěvujících uzlů je vhodné uspořádat pomocí fronty

Postup Přecházení stromu na šířku

Node_queue.set je prázdný

Cyklus zatím node_queue.non-empty provést

node_queue.take prvek z fronty do

Cyklus pro každého uzel potomek node.childs provést

Prvek Node_queue.add na konec fronty

Konec cyklu

Konec cyklu

Konec procedury

Binární halda

Binární halda (pyramida, třídící strom) je binární strom, který splňuje následující podmínky:

1) Hodnota v každém uzlu stromu není menší než hodnota v žádném z potomků tohoto uzlu;

2) Každý list má hloubku d nebo d-1, kde d je hloubka stromu;

3) Nejhlubší vrstva je vyplněna bez mezer.

Je vhodné ukládat hodnoty obsažené v binárních uzlech haldy v poli vrstvu po vrstvě, počínaje horní částí stromu. Kořen stromu je uložen v Array[0], jeho levé dítě je v Array[1], jeho pravé dítě je v Array[2] atd. Děti Array[i] jsou v Array[2*i+ 1] a Pole[2 *i+2].

Při číslování stromových vrstev shora dolů a uzlů vrstev zleva doprava je i-tý uzel v j-té vrstvě uložen ve vektorovém prvku s indexem i+2 j -1 (při indexování vektorových prvků od 0) .

Příklad 1: Následující pole ukládá obsah binární haldy zobrazené na obrázku:

Jak přeměnit pole na binární haldu?

Jakékoli pole může být reprezentováno jako binární strom, který splňuje vlastnosti 2) a 3). Zbývá pouze přesunout hodnoty prvků uvnitř pole tak, aby splňovaly vlastnost 1).

Použijeme iterační metodu, půjdeme odspodu stromu nahoru, projdeme všemi vnitřními uzly (to znamená uzly, které nejsou listy) zprava doleva, přičemž každý strom zakořeněný v aktuálním uzlu změníme na binární hromadu.

Přečtěte si více
TOP medonosné rostliny pro včely

S tímto pořadím procházení budou pro každý aktuální uzel oba podstromy již procházeny, to znamená, že se změní na binární hromadu. Stačí je zkombinovat s aktuálním uzlem tak, aby výsledkem byla také binární halda.

Následující postup (heapify) implementuje popsaný algoritmus:

Postup nahromadit se

! Je dáno: pole ar, N – velikost pole

! Potřebné: pole ar obsahuje binární haldu velikosti N

! Algoritmus: přeměňte „ocas“ pole na binární hromadu,

! postupné posunutí začátku „ocasu“ na začátek pole

začátek := rodič(N-1) ! start : = index posledního interního uzlu

Cyklus zatím začátek >= 0 provést

siftDown(ar, start, N-1) ! Prosít: v případě potřeby obsah přemístit

! zakořenit, takže strom se stane binární hromadou

start = start – 1 ! Přejděte na předchozí vnitřní uzel

Konec cyklu

Konec procedury

Postup rodič

! Vrátí index nadřazeného uzlu

odpověď: = (n – 1) / 2

Konec procedury

Procedura siftDown je založena na skutečnosti, že oba dceřiné podstromy určitého uzlu jsou již binárními hromadami a nyní potřebujeme udělat z celého stromu zakořeněného v tomto uzlu binární hromadu. Pokud je hodnota V v příslušném uzlu větší než hodnoty v obou jeho podřízených uzlech, je vše v pořádku; podle definice je strom již binární hromadou.

V opačném případě budeme muset posunout V po stromu dolů. K pohybu dochází výměnou hodnot dvou uzlů – nadřazeného a podřízeného: větší hodnota stoupá, menší hodnota klesá. Proces připomíná bublinové třídění, jen zde bublina neprochází celým polem, ale pouze podél jedné větve stromu, čímž se výrazně zkracuje její dráha: z O(N) do O(log N).

Takže pokud je V náhodou menší než hodnota v jeho podřízeném uzlu, vyměníme hodnotu V s největší z hodnot v jeho dvou podřízených uzlech. Stejný postup provedeme znovu s uzlem, kde se V pohyboval a tak dále.

Postup siftDown

! Opravte haldu, jejíž kořen je u prvku s indexem r oot,

! za předpokladu, že oba podřízené podstromy jsou binární hromady

! end – index posledního uzlu stromu

! Pokud má kořenový uzel podřízený uzel s hodnotou větší, než je hodnota v kořenu

! Pokud je hodnota v levém podřízeném uzlu větší než hodnota v pravém podřízeném uzlu

Jestliže (rightChild(root) > end) nebo (ar[leftChild(root)] > ar[rightChild(root)]) že

swap(root, leftChild(root)) ! Vyměňte hodnoty kořenového a levého podřízeného uzlu

root := leftChild(root)

Jinak

swap(root, rightChild(root)) ! Vyměňte hodnoty kořenového a pravého podřízeného uzlu

root := rightChild(root)

Konec, pokud

Konec cyklu

Konec procedury

Postup vlevoDítě

! Vrátí index levého podřízeného uzlu

odpověď: = n * 2 + 1

Konec procedury

Postup vpravoDítě

! Vrátí index pravého podřízeného uzlu

odpověď: = n * 2 + 2

Konec procedury

RŮST A VÝVOJ KOŘENOVÉHO SYSTÉMU

Růst kořenového systému stromů začíná od okamžiku, kdy se objeví mladé kořeny, bez ohledu na typ původu: semeno, adventivní nebo potomstvo. Kořeny nejprve dorůstají do délky, poté se rozvětvují a tvoří různé řády. U semenných rostlin začíná růst kořenového systému vývojem hlavního kořene (nultého řádu) a má následující posloupnost: kořeny prvního řádu větvení vycházejí z hlavního kořene, z nich druhého, potom kořeny. třetí a následující řády větvení. Kořeny sazenic jabloní v podmínkách moskevské oblasti (Kolesnikov, 1967) produkují během vegetačního období až pět až sedm řádů větvení s převahou kořenů třetího a čtvrtého řádu. V našich pokusech jsou kořeny podnoží jabloní, hrušní, švestek a třešní nejvýše čtyř až pěti řády větvení s převahou v počtu a délce kořenů prvního a druhého řádu. Kořeny vegetativně množených rostlin začínají vyrůstat z nitkovitých kořenů, které na svých koncích nesou rostoucí a vyživující části, v zóně větvení tvoří kořeny postranní kořeny, které se zase větví a tvoří kořeny následujících řádů. U potomstva nevycházejí kořeny z výhonků jako u vegetativně množených rostlin, naopak výhonky se objevují na již existujícím kořenovém systému ze spící podkorové ocelli. Tyto výhonky se dostávají na povrch a vyrůstají ve stromy nebo keře. U potomských rostlin, se vzhledem nadzemní části, mají kořeny již plně vytvořený systém. U takových rostlin se kořenový systém skládá převážně z horizontálních kořenů a nemá kořenový kořen bez ohledu na původ kořenového systému mateřské rostliny.
Spolu s růstem kořenů do délky a tloušťky neustále umírají a obnovují se. Z. A. Kolesnikov (3) nazval fenomén dying off root fall. Jeho pozorování kořenů sazenic jabloní a hrušek ukázalo, že odumírání konců hlavních a všech dlouhých postranních kořenů někdy nastává od prvních dnů života rostliny. Konce hlavního kořene u 1967–50 % sazenic odumírají v délce 85–5 cm, poté se vytvoří postranní kořeny, které také během procesu růstu podléhají samovolnému ztenčování. Pád kořenů je přirozený proces v životním cyklu rostlin. Velikost opadu kořenů je významně ovlivněna zejména vnějšími podmínkami, zejména meteorologickými faktory. K tělesnému úbytku dochází také při zasychání jednotlivých větví v koruně rostliny, což je vysvětleno snahou rostliny udržet rovnováhu mezi kořenovým systémem a nadzemní částí.V našich experimentech byla celková délka kořenů (kosterních a polo -skeletální) u zdravé 20leté třešně odrůdy Napoleon pink, roubované na Antipke, činila 12 m, zatímco u jiného exempláře téhož stromu, ale s poloscvrklou korunou jen 2235,7 m. Masivní úhyn kořeny vytvořené na podzim se vyskytují během období zlomu pupenů. Během růstu výhonů a kvetení se tento proces značně omezí a v období dozrávání plodů opět zesílí. Spolu s plněním svých hlavních funkcí kořenový systém v důsledku opadu kořenů obohacuje půdu o organické látky, čímž podporuje růst a plodnost samotných rostlin.
S věkem kořenový systém zvětšuje svůj průměr, proniká hlouběji do půdy, kosterní a polokosterní kořeny se zahušťují, zvyšuje se jejich řády větvení a prudce se zvyšuje celková délka a počet kořenů. Celková délka kořenů 3leté jabloně odrůdy Renet Simirenko, naroubované na jabloni lesní, tedy podle našich údajů byla 5285 m, a 7leté – již 12440 m. Délka kořenů 7leté jabloně odrůdy Pepinka litevská, naroubované na jabloni lesní a rostoucí v zahradě na černém úhoru, byla (Rubin, 1967) – 14276 m, -14- rok starý – 26436, 21letý – 45056 m.
I přes aktivní růst kořenového systému je jeho podíl na celkové hmotě ovocného stromu (bez listů a sklizně) poměrně malý. V našich pokusech (1963) na vytěžených a zvážených 24letých jabloních byl podíl kořenů na celkové hmotě rostliny ve stepní zóně Ukrajinské SSR: u Pepinky litevské, naroubované na Dusena II – 9,6 resp. na Dusenu III – 9,2 %; pro Renet Simirenko na Dusena II – 10,1 a na Dusena III – 10,3 %. V podmínkách lesostepní zóny Ukrajinské SSR: Litevská Pepinka má 15,3 a 15,7 % a Renet Simirenko – 18,3 a 12,5 %. Jak je vidět, na výživnějších a lépe vlhčených půdách je podíl kořenů jabloní na celkové hmotě rostliny větší než na suchých a méně výživných půdách.
Struktura a mohutnost kořenového systému ovocných stromů jsou tedy dány jak biologickými vlastnostmi podnože a roubované odrůdy, tak faktory prostředí. To vyžaduje komplexní studium kořenového systému v konkrétních podmínkách pěstování rostlin.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Back to top button