Slide 1

Documente similare
Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Grafuri neorinetate Aplicatii 1 Care este numărul maxim de componente conexe pe care le poate avea un graf neorientat cu 20 noduri şi 12 muchii? a. 6

Slide 1

Microsoft Word - _arbori.docx

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Subiectul 1

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Cuantizare Vectoriala.doc

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Microsoft Word - Volum-RRIOC-2-2

Diapositive 1

Proiectarea Algoritmilor

Probleme rezolvate informatica: Probleme rezolvate grafuri si a

Analiză de flux de date 29 octombrie 2012

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

Microsoft Word - Curs_10.doc

Analiză statică Analiza fluxului de date 23 octombrie 2014

PowerPoint Presentation

proiectarea bazelor de date

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

1

ExamView Pro - Untitled.tst

Microsoft Word - BD4_Curs11.doc

E_d_Informatica_sp_SN_2014_bar_10_LRO

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Unitatea: Școala Gimnazială Disciplina: Informatică și TIC Programa școlară aprobată cu OMEN nr.3393 din Profesor: prof. Clasa: a V-a A, B

E_d_Informatica_sp_MI_2015_bar_02_LRO

Retele Petri si Aplicatii

Slide 1

Microsoft Word - Curs_08.doc

Slide 1

PowerPoint Presentation

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

Slide 1

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Microsoft Word - Algoritmi genetici.docx

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Baze de date Anul 2 Teorie Examen 1. Diagrama entitate/relatie si diagrama conceptuala (curs 2-5) 2. Arbore algebric si expresie algebrica (curs 6-10)

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Caraivan George-Alexandru Grupa 431A Interfața driver-kernel la Linux Introducere Deși pentru unii dintre noi acest lucru poate fi o supriză, cei mai

Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indec

Concurs online de informatică Categoria PROGRAMARE Secţiunea 5-6 avansaţi PROBLEMA puncte DANS De 1 Iunie - Ziua Copilului se organizează un spe

Logică computațională O introducere practică pentru studenți la informatică Note de curs Adrian Crăciun 24 ianuarie

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

Electricitate II

Grafuri - Concepte de baza. Tipuri de grafuri. Modalitati de reprezentare

O NOUA PROBLEMA DE CONCURS OLIMPIADA MUNICIPALA DE INFORMATICA, IASI 2019 V-am promis într-un articol mai vechi ca vom prezenta pe acest blog câteva p

Poo Laboratoare 1 Contents Laborator7 2 1 Colecţii de obiecte în Java Interfaţa Iterator Interfaţa C

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Facultatea de Matematica si Informatica Universitatea din Bucuresti Structuri liniare Liste. Stive. Cozi - Inserare, cautare, stergere - Lectii de pre

Microsoft Word - Curs1.docx

2 BAZE TEORETICE ALE REȚELELOR DE CALCULATOARE CAPITOLUL 2 BAZE TEORETICE ALE REŢELELOR DE CALCULATOARE 2.1. Necesitatea standardizării (referenţierii

Introducere

CAPITOLUL I

Facultatea de Automatică și Calculatoare

INFORMATICĂ ŞI MARKETING

CRIPTOSISTEME SIMETRICE I

SECURITATE ȘI CRIPTOGRAFIE

PowerPoint Presentation

Microsoft Word - PLANIFICARE CLASA 2.doc

Teoria Grafurilor şi Combinatorică recapitulare Principii de numărare Reţineţi că: P (n, r) este numărul de şiruri (sau r-permutări) de forma A 1,...,

carteInvataturaEd_2.0_lectia5.pdf

Microsoft Word - Curs_09.doc

WorkCentre M123/M128, WorkCentre Pro 123/128, CopyCentre C123/128 Ghid de Configurare Rapidă pentru Reţea

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

Microsoft PowerPoint - ARI_R_c9-10_IP_part2 [Compatibility Mode]

PowerPoint Presentation

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Web Social FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 2. Dezvoltarea blogurilor prin intermediul WordPress.com PREZE

Noțiuni matematice de bază

8.1. Elemente de Aritmetică. 8. Aplicatii (15 aprilie 2019) Lema 8.1. Fie (A, +) un grup abelian şi H, K A. Atunci H K şi H + K = {h + k h H şi k K} s

C++ Probleme

PowerPoint Presentation

Elemente de aritmetica

Laborator Implementarea algoritmului DES - Data Encryption Standard. Exemplu DES Algoritmul DES foloseşte numere b

Microsoft Word - Apostol & Balaceanu 6p.doc

G.I.S. Curs 3

Cuprins

Paradigme de programare

Metode de programare Proiectarea algoritmilor

Noțiuni de bază ale criptografiei

CASA CORPULUI DIDACTIC BRAILA PROGRAM DE FORMARE INFORMATICA SI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: TIMOFTI V. AFRODITA COLEGIUL

Microsoft Word - 2 Filtre neliniare.doc

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 Secţiunea 7-8 avansaţi 100 puncte DEMOCRATIE Arpsod are în curtea sa N copaci foarte băt

INDICATORI AI REPARTIŢIEI DE FRECVENŢĂ

PowerPoint Presentation

ÎS CENTRUL DE TELECOMUNICAȚII SPECIALE CENTRUL DE CERTIFICARE A CHEILOR PUBLICE POLITICA de utilizare a certificatelor SSL Iunie 2013 Chişinău 2013

CL2009R0976RO bi_cp 1..1

PowerPoint Presentation

LUMINIŢA SCRIPCARIU

Slide 1

1.Semnalizarea CFR Tipuri semnale CFR: - Semnal prevestitor. - Este folosit pe linii neînzestrate cu BLA.Pentru recunoaşterea semnalului prevestitor,a

Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

Limbaje Formale, Automate si Compilatoare

Transcriere:

STRUCTURI DE DATE Arbori B

Sisteme de Gestiune a Bazelor de Date Relaţionale (SGBDR): operatie importanta regasirea rapida a datelor indecsi. Indexul: colecţie de perechi <valoare cheie, adresa articol> pentru a facilita accesul la o colecţie de articole. Structura de date foarte des folosită pentru implementarea indecşilor este arborele de căutare. 2

Articolele memorate: oricât de complexe; conţin un câmp numit cheie pentru identificare. Arborele de căutare bazat pe ordinea cheilor: relaţie de ordine totală pe C (mulţimea cheilor posibile ce vor trebui regăsite) 3

Arbori de căutare bazaţi pe ordinea cheilor: arbori binari de căutare: o singură cheie asociată fiecărui nod; arbori multicăi de căutare: mai multe chei asociate fiecărui nod. Performanţele unui index: factorul de ramificare a arborelui de căutare folosit. 4

Arborii multicăi de căutare: generalizare a arborilor binari de căutare; nod oarecare: număr de m chei, ordonate strict crescător, ramificare în m+1 subarbori; m diferă de la nod la nod; m între anumite limite pentru folosirea eficientă a mediului de stocare; m chei ataşate unui nod: o pagină 5

50 100 20 40 70 120 140 15 30 42 43 60 65 110 130 136 150 0 7 18 26 36 58 62 69 145 Arbore multicăi de căutare de ordin 3 6

Arbore multicăi de căutare proprietăţi: Structura nod : n P 0 K 0 P 1 K 1 P 2 P n - 1 K n - 1 P n - P 0, P 1,, P n pointeri către subarbori - K 0, K 1,, K n 1 valorile cheilor. Număr de ramificaţii restricţia n m 1. 7

Arbore multicăi de căutare proprietăţi (continuare): Valorile cheilor într-un nod: ordine crescătoare; Valorile de chei din nodurile subarborelui P i sunt mai mici decât valoarea cheii K i i= 1, 2,, n-1; 8

Arbore multicăi de căutare proprietăţi (continuare): Valorile de chei din nodurile subarborelui P n sunt mai mari decât valoarea de cheie K n 1 Subarborii P i, sunt de asemenea arbori multicăi de căutare. 9

Arbore B de ordin m proprietati: Arbore multicăi de căutare; Toate nodurile frunză sunt pe acelaşi nivel (arborele este echilibrat); Rădăcina: cel puţin doi descendenţi, dacă nu este frunză (ramificare timpurie); m Pagina conţine cel puţin chei; excepţie 2 rădăcina: mai puţine chei, dacă este frunză (un nod este cel putin 50% plin); 10

Arbore B de ordin m proprietati (continuare): Un nod este frunză sau are n + 1 descendenţi, unde n este numărul de chei, m 2 n m-1; Pagina conţine cel mult m-1 chei; un nod poate avea maxim m descendenţi. 11

Operatii de baza: 1.Cautarea: Comparatie cheie cautata cu cheile nodului curent; Nodul de start: radacina Situatii de continuare a cautarii: c i < x < c i +1 căutare în nodul P i ; c n < x căutare în P n ; x < c 0 căutare în P 0. 12

Operatii de baza (continuare): Lungimea maximă a drumului de căutare: înălţimea arborelui 13

Operatii de baza (continuare): 2. Inserarea a unei chei în arbore B: precedată de operaţia de căutare; cheie găsită în arbore: abandon operatie inserare; cheia nu a fost găsită: căutare terminata într-un nod frunză, unde se insereaza noua cheie; 14

Operatii de baza (continuare): Situatii de inserare: - nodul are mai puţin de m 1 chei: inserare fără modificarea structurii arborelui B; - nodul are numărul maxim de m 1 chei: fisionare nod; rezulta două noduri care se vor găsi pe acelaşi nivel şi o cheie mediană care nu se va mai găsi în nici unul din cele două noduri. 15

Arbore B de ordin 5: Numărul maxim de chei dintr-un nod este 4; Inserarea valorilor de cheie 22, 57, 41, 59. 22 41 57 59 16

În urma inserării cheii 54, nodul rădăcină va conţine prea multe chei, aşa că el va fisiona a b 54 22 41 57 59 c Formarea noii rădăcini a arborelui 17

Inserarea cheilor 33, 75, 124. a b 54 c 22 33 41 57 59 75 124 Structura arborelui după inserarea cheilor 33, 75, 124 18

Inserarea cheii 62: divizarea nodului c c c Cheia mediana 62 va promova d 57 59 62 75 124 57 59 75 124 Cheia 62 promoveaza în nodul rădăcină a? 54? 62? b c d 22 33 41 57 59 75 124 19

Inserarea cheilor 122, 123, 55, 60, 45, 66, 35 a 35 54 62 122 b f c d e 22 33 41 45 55 57 59 60 66 75 123 124 20

Inserarea cheii 56: nodul c. c c Cheia mediana 57 va promova g 55 56 57 59 60 55 56 59 60 Fisionarea nodului c 21

Nodul părinte a este plin şi nu poate primi noua cheie 57. Algoritmul de fisionare este aplicat din nou, pentru nodul a. a a Cheia mediana 57 va promova h 35 54 57 62 122 35 54 62 122 Fisionarea nodului a 22

i 57 a h 35 54 62 122 b f c g d e 22 33 41 45 55 56 59 60 66 75 123 124 Noua structura a arborelui B 23

Algoritmul de inserare a unei chei într-un arbore B: inserează noua valoare de cheie în nodul frunză corespunzător; nodul_curent = nodul_frunza; while(nodul_curent este OVERFLOW): - divide nodul_curent în două noduri aflate pe acelaşi nivel şi promovează cheia mediană în nodul părinte pentru nodul_curent; - nodul_curent = nodul_părinte pentru nodul_curent. 24

Cel mai rău caz: aplicarea algoritmului de fisionare pe întreaga înălţime a arborelui, fisionându-se h 1 noduri (h este înălţimea arborelui înainte de inserare). 25

Operatii de baza (continuare): 3. Stergerea unei chei dintr-un arbore B: Simpla dacă valoarea de cheie ştearsă se află într-un nod frunză; Complexa daca valoarea de cheie ştearsă nu se află într-un nod frunză: ştergere logica, fiind înlocuită cu o alta, vecină în inordine, care va fi ştearsă fizic. 26

Stergerea unei chei dintr-un arbore B (continuare): Situatii de stergere: m - nodul conţine mai mult de chei: ştergerea 2 nu ridică probleme; m - nodul are numărul minim de chei : după 2 ştergere numărul de chei din nod va fi insuficient; se împrumută o cheie din nodul m vecin cu cel puţin chei (partajare) 2 27

(continuare) Dacă nu se poate face o partajare (nodurile vecine au numărul minim de chei): două noduri vecine vor fuziona, împrumutându-se o cheie şi din nodul părinte. Partajarea sau fuzionarea trebuie eventual repetate şi pentru nivelurile superioare. 28

Observatie: Cazul cel mai nefavorabil: partajarea sau fuzionarea parcurg întreaga înălţime a arborelui, se va forma o nouă rădăcină, înălţimea arborelui scăzând cu un nivel. 29

Se consideră următoarea configuraţie de arbore B de ordin 5: a 57 b c 35 54 62 122 d 22 33 22 e 40 41 f g h i 55 56 59 60 66 75 123 124 45 50 30

Ştergerea valorilor de cheie 40 şi 45 din nodul e nu ridică probleme a 57 b c 35 54 62 122 d e f g h i 22 33 34 41 50 55 56 59 60 66 75 123 124 31

Ştergerea valorii de cheie 50: partajare între nodurile d şi e. a d valoarea de cheie 35 coboara; valoarea de cheie 34 urca 57 b c 35 54 62 122 e f g h i 22 33 34 41 50 55 56 59 60 66 75 123 124 32

a 57 b c 34 54 62 122 d e f g h i 22 33 35 41 55 56 59 60 66 75 123 124 Structura arborelui după partajare 33

Ştergerea valorii de cheie 22: fuzionarea nodurilor d şi e. a 57 fuzionare b c 34 54 62 122 d e f g h i 22 33 35 41 55 56 59 60 66 75 123 124 34

În urma fuzionării nodurilor d şi e, nodul b va conţine prea puţine valori de cheie: fuzionare nodurile b şi c a 57 fuzionare b c 54 62 122 d f g h i 33 34 35 41 55 56 59 60 66 75 123 124 35

Structura finală a arborelui B: 54 57 62 122 33 34 35 41 55 56 59 60 66 75 123 124 36

Algoritmul de ştergere dintr-un arbore B: daca(valoarea de cheie care se şterge nu este într-un nod frunză) atunci: înlocuieşte valoarea de cheie cu succesor/predecesor; nodul_curent = nodul_frunza; 37

while (nodul_curent este UNDERFLOW ): - încearcă partajarea cu unul din nodurile vecine aflate pe acelaşi nivel, via nodul părinte; - daca(nu este posibila partajarea) atunci: 1. fuzionează nodul_curent cu un nod vecin, folosind o valoare de cheie din nodul părinte; 2. nodul_curent = nod_părinte pentru nodul_curent. 38