SDA - Curs 11 (CTI)

download SDA - Curs 11 (CTI)

of 69

Transcript of SDA - Curs 11 (CTI)

  • 8/16/2019 SDA - Curs 11 (CTI)

    1/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    Dobrovat Anca - Madalina

    09/05/201

    !tructuri de Date si Al"oritmi

    An universitar 2015 # 201!emestrul al II-lea

    $urs 11

  • 8/16/2019 SDA - Curs 11 (CTI)

    2/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs 11 - $u%rins

    $urs - !tructuri de Date si Al"oritmi

     &' Al"oritmi de sortare %entru multimi statice (vectori) 

    $lasa al"oritmilor de sortare ba*ati %e com%aratii intre c+ei',,,,

    !ortarea cu ansamble (ea%!ort)'

    .imita inferioara a %erformantei al"oritmilor de sortare ba*ati %ecom%aratii intre c+ei'

    !ursa # ' $eterc+i !tructuri de date si Al"oritmi' As%ecte matematice si a%licatii3ditura Univ' din Bucuresti 2001

  • 8/16/2019 SDA - Curs 11 (CTI)

    3/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    eminder - !ortarea %rin selectie directa

    La fiecare pas i aveam de selectat minimul din multimea A[i..n].

    Cautarea minimului se facea secvential, deci numarul de comparatii

    era tot timpul maxim.

    Sortarea prin selectie directa se poate imbunatati daca exista o

    structura de date care sa permita extragerea minimului / maximului

    mai rapi, eventual optim.

    Structura arborescenta care optimizeaza extagerea minimului /

    maximului:arborele binar %artial ordonat si com%let (ansamblul)

  • 8/16/2019 SDA - Curs 11 (CTI)

    4/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Arbori %artial ordonati si ansamble

    Def  Se numeste arbore %artial ma4-ordonat un arbore binar cu cei deun tip total ordonat si cu proprietatea ca in orice nod u al sau avem

    relatiile:

    !entru orice nod u:

     

    c+eia ma4ima se va afla in radacina

    $once%tul de arbore %artial min-ordonat se defineste analo"'

  • 8/16/2019 SDA - Curs 11 (CTI)

    5/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Arbori %artial ordonati si ansamble

    Def  Arbore binar com%let %e niveluri este un a.b. cu toate nivelurile pline,eventual cu exceptia ultimului nivel, unde toate nodurile vor aliniate cel mai

    la stanga.

     Acest tip de arbore binar se poate reprezenta ca vector "deci alocare

    statica si acces in timp #"$% la i si la tata%.

    $once%tul de min # ansamblu se defineste analo"'

    Def  Se numeste ansamblu (ma4-ansamblu) un arbore binar max&ordonatsi complet pe niveluri, reprezentat ca vector.

  • 8/16/2019 SDA - Curs 11 (CTI)

    6/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Inserarea intr-un ansamblu

    Se urmeaza pasii:

    $.Se pune nodul de inserat "nod% pe ultimul nivel al arborelui, aliniat cel mai

    la stanga. "arborele ramane complet%.

    '. Se repeta "eventual pana la radacina% comparatia intre info[nod] si

    info[tata[nod]]

    '.$ (aca info[nod] ) info[tata[nod]] atunci am gasit locul lui nodin ansamblu "noua ceie nu violeaza conditia de arbore max&ordonat%

    '.' (aca nu, interscimb nod cu tata[nod] si reluam de la "a%.

  • 8/16/2019 SDA - Curs 11 (CTI)

    7/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Inserarea intr-un ansamblu

  • 8/16/2019 SDA - Curs 11 (CTI)

    8/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    $onstruirea unui ansamblu' Asamblarea

    Se realizeaza prin inserari repetate:

    daca avem cel putin o ceie, atunci ea se va insera in radacina "un

    arbore cu un nod este ansamblu%.

    & pt fiecare valoare noua se foloseste algoritmul de inserare Insea%.

  • 8/16/2019 SDA - Curs 11 (CTI)

    9/69

  • 8/16/2019 SDA - Curs 11 (CTI)

    10/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e vector 

  • 8/16/2019 SDA - Curs 11 (CTI)

    11/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34%l

  • 8/16/2019 SDA - Curs 11 (CTI)

    12/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34%l

    F lt t d M t ti i I f ti

  • 8/16/2019 SDA - Curs 11 (CTI)

    13/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34%l

    F lt t d M t ti i I f ti

  • 8/16/2019 SDA - Curs 11 (CTI)

    14/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34%l

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    15/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34%l

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    16/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34%l

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    17/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34%l

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    18/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonat

    7 10 1 3 5 6 4 2 9 8

    %rocedure Asamblare (A,n) For 6 1n-1 do

    InsHeap(A,j,A[j+1])

      endFor end%roc

    7ectorul initial A

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    19/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonat

    Ansamblu du%a inserare

    Ansamblu la %asul initial

    10 7

    7

    8 10

    8

    Insea%(Ans 1 A2:)

    3lement de inserat A2: ; 10

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    20/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonat

    Ansamblu du%a inserare  10 7 1

    10

    8

    10

    8 1

    Ansamblu %as anterior

    Insea%(Ans 2 A

  • 8/16/2019 SDA - Curs 11 (CTI)

    21/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonat

    Ansamblu du%a inserare

    Ansamblu %as anterior

    3lement de inserat A&: ; <

    Insea%(Ans

  • 8/16/2019 SDA - Curs 11 (CTI)

    22/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonat

    Ansamblu du%a inserare

    Ansamblu %as anterior

    3lement de inserat A5: ; 5 Insea%(Ans & A5:)

    10

    8 1

    <

    10

    8

    < 5

    10 7 1 3 5

    10 7 1 3

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    23/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonatAnsamblu %as anterior   10 7 1 3 5

    3lement de inserat A: ;

    Insea%(Ans 5 A:)

    10

    8 1

    < 5

    10

    8

    < 5 1

    Ansamblu du%a inserare   10 7 6 3 5 1

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    24/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonatAnsamblu %as anterior   10 7 6 3 5 1

    3lement de inserat A8: ; &

    Insea%(Ans A8:)

    10

    8

    < 5 1

    10

    8

    < 5 1 &

    Ansamblu du%a inserare   10 7 6 3 5 1 4

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    25/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34em%lificare %e arbore %artial ordonat

    Ansamblu du%a inserare

    Ansamblu %as anterior

    3lement de inserat A=: ; 2 Insea%(Ans 8 A=:)

    10

    8

    < 5 1 &

    10

    8

    < 5 1 &

    2

    10 7 6 3 5 1 4

    10 7 6   3 5 1 4 2

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    26/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Ansamblu %as anterior

    3lement de inserat A9: ; 9 Insea%(Ans = A9:)

    10 7 6 3 5 1 4 2

    10

    8

    < 5 1 &

    2

    10

    9

    8 5 1 &

    2 <

    Ansamblu du%a inserare   10 9 6 7 5 1 4 2 3

    Facultatea de Matematica si Informatica

  • 8/16/2019 SDA - Curs 11 (CTI)

    27/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Ansamblu %as anterior   10 9 6 7 5 1 4 2 3

    3lement de inserat A10: ; = Insea%(Ans 9 A10:)

    10

    9

    8 5 1 &

    2 <

    10

    9

    8 = 1 &

    2 < 5

    10 9 6 7 8 1 4 2 3 5Ansamblu du%a inserare

    Facultatea de Matematica si InformaticaU i it t B ti

  • 8/16/2019 SDA - Curs 11 (CTI)

    28/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    10 9 6 7 8 1 4 2 3 5Ansamblul reali*at

    10

    9

    8 = 1 &

    2 < 5

    Facultatea de Matematica si InformaticaU i it t B ti

  • 8/16/2019 SDA - Curs 11 (CTI)

    29/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    34tra"erea ma4imului sau deca%itarea unui ansamblu

    $. Se extrage valoarea din radacina in vederea procesarii-

    '. Se inlocuieste radacina cu ultimul nod "arborele binar ramane complet,

    dar eventual nu mai e max&ordonat%

    . Coboram noua radacina la locul ei prin comparatii cu cel mai mare

    dintre fii.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    30/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    31/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    32/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    33/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

  • 8/16/2019 SDA - Curs 11 (CTI)

    34/69

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    35/69

    Universitatea Bucuresti

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    36/69

    U e s tatea ucu est

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    37/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    38/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    39/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    40/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    $om%le4itatea o%eratiilor intr-un ansambluSortarea cu ansamble

    $."!as % Se asambleaza vectorul A[$..n]. 0aximul va pe A[$]-

    '. "!as $% Se decapiteaza ansamblul A[$..n], cu reasamblarea lui A[$..n&$] si se pune maximul pe A[n]-

    . "!as *% Se decapiteaza ansamblul A[$..n&*+$], cu reasamblarea lui

     A[$..n&*] si se pune maximul pe A[n&*+$].

    (upa n&$ pasi iterativi vectorul A este sortat.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    41/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    $om%le4itatea o%eratiilor intr-un ansamblu

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    42/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen)ea%s (ansamble)

    # structura de date de tip eap/ansamblu "binar% este un vector 

    ce poate vazut ca un arbore binar aproape complet "$%.

    1iecare ceie din arbore corespunde unui element din vector.

     Arborele este complet pe toate nivelele cu exceptia celui mai de *os,

    unde exista cei incepand din stanga pana la un anumit punct.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    43/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen)ea%s (ansamble)

    2n vector A asociat unui ansamblu este caracterizat de ' atribute:

    & A.lengt "numarul elementelor din vector%-

    & A.eap&size "numarul de elemente din 3eap3% " ciar daca

     A[$ 4 A.lengt] contine numere, doar elementele din

     A[$ 4 A.eap&size], unde ) A.eap&size ) A.lengt%, sunt

    elemente valide in 3eap3.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    44/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) ea%s (ansamble)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

  • 8/16/2019 SDA - Curs 11 (CTI)

    45/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) ea%s (ansamble)

    root A[$]-

    !entru orice indice i al unui nod, se poate calcula usor indicii parinteluisau si al descendentilor sai stang si drept:

    void >A3?@(int i) return i/2Cvoid .3F@(int i) return 2iCvoid IE@(int i) return 2i1C

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    ! t i l ti f l i d t t i b t

  • 8/16/2019 SDA - Curs 11 (CTI)

    46/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) ea%s (ansamble)

    Sunt ' tipuri de arbori binari %artiali:

    - ma4 - +ea% (ma4-ordonat) "oricare nod i 5 root % A[!A6789"i%] A[i]%0aximul elementelor se afla in root

    & min - +ea% (min-ordonat) "oricare nod i 5 root % A[!A6789"i%] ) A[i]%0inimul elementelor se afla in root

    !entru algoritmul ea%!ort va folosita o structura de tip arborepartial max&ordonat.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    ! t i l ti f l i d t t i b t

  • 8/16/2019 SDA - Curs 11 (CTI)

    47/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) ea%s (ansamble)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    ! t i l ti f l i d t t i b t

  • 8/16/2019 SDA - Curs 11 (CTI)

    48/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) ea%s (ansamble)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    49/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) >rocedura MAG - 3A>IFH

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    50/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) >rocedura MAG - 3A>IFH

    La fiecare pas se determina maximul dintre A[i], A[L719"i%] si A[6;

  • 8/16/2019 SDA - Curs 11 (CTI)

    51/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    7arianta recursiva ($ormen) >rocedura MAG - 3A>IFH

    (aca unul din cei doi descendenti contine maximul, A[i] se interscimba cu

     A[largest], nodul i si descendentii sai satisfacand conditia de arbore partial

    max&ordonat.

    Daca subarborele avand dre%t radacina nodul inde4at de variabilalar"est nu este ma4-ordonat %rocedura MAG-3A>IFH se a%elea*arecursiv %e acest sub-arbore'

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    52/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    >rocedura MAG - 3A>IFH

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    53/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Anali*a costurilor 7arianta recursiva ($ormen)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    54/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    Anali*a costurilor 7arianta recursiva ($ormen)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    55/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    $onstruirea unui ansamblu7arianta recursiva ($ormen)

    Se foloseste procedura 0A>&=7A!;1? de *os in sus pentru a transforma

    un vector de lungime n intr&un ansamblu.

    7lementele A[[n/'] + $, n] sunt frunze, deci se incepe cu un ansamblu de

    lungime $.

    BUI.D-MAG-3A> parcurge nodurile ramase in ordine inversa, dela n/' la $, si apeleaza MAG-3A>IFH.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    56/69

    $urs - !tructuri de Date si Al"oritmi

    !ortarea %rin selectie folosind structuri arborescente(!ortarea cu ansamble/ea%!ort)

    $onstruirea unui ansamblu7arianta recursiva ($ormen)

    Costul fiecarui apel 0A>&=7A!;1? este #"lg n%.

    @2;L(&0A>&=7A! face #"n% asemenea apeluri.

    Concluzia, complexitatea este #"n lg n%.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    57/69

    $urs - !tructuri de Date si Al"oritmi

    %(!ortarea cu ansamble/ea%!ort)

    $onstruirea unui ansamblu7arianta recursiva ($ormen)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    58/69

    $urs - !tructuri de Date si Al"oritmi

    %(!ortarea cu ansamble/ea%!ort)

    ea%!ort7arianta recursiva ($ormen)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    59/69

    $urs - !tructuri de Date si Al"oritmi

    %(!ortarea cu ansamble/ea%!ort)

    ea%!ort7arianta recursiva ($ormen)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    60/69

    $urs - !tructuri de Date si Al"oritmi

    (!ortarea cu ansamble/ea%!ort)

    ea%!ort7arianta recursiva ($ormen)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    61/69

    $urs - !tructuri de Date si Al"oritmi

    (!ortarea cu ansamble/ea%!ort)

    ea%!ort7arianta recursiva ($ormen)

    1igure : "a% Ansamblul max&ordonat obtinut prin @2;L(&0A>&=7A!-"b%&"*% Ansamblul dupa ecare apel al 0A>&=7A!;1?: doar nodurile cu

    gri descis raman- "% vectorul sortat rezultat

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    !ortarea %rin selectie folosind structuri arborescente

  • 8/16/2019 SDA - Curs 11 (CTI)

    62/69

    $urs - !tructuri de Date si Al"oritmi

    (!ortarea cu ansamble/ea%!ort)

    ea%!ort7arianta recursiva ($ormen)

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    .imita inferioara a %erformantei al"oritmilor de sortare

  • 8/16/2019 SDA - Curs 11 (CTI)

    63/69

    $urs - !tructuri de Date si Al"oritmi

    ba*ati %e com%aratii intre c+ei

    $lasa al"oritmilor de sortare ba*ati %e com%aratii intre c+ei

    • sortarea directB prin inserie• sortarea directB prin selecia minimului "sau maximului%• sortarea directB prin interscimbare

    • sortarea rapidB "DuicSort%• sortarea cu ansamble "=eapSort%

    Complexitatea algoritmilor de mai sus se estimeazB En mod esenial En

    funcie de numrul de com%araJii intre elementele multimii de sortat

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    .imita inferioara a %erformantei al"oritmilor de sortare

  • 8/16/2019 SDA - Curs 11 (CTI)

    64/69

    $urs - !tructuri de Date si Al"oritmi

    ba*ati %e com%aratii intre c+ei

    &primii trei algoritmi de mai sus au o complexitate de ordinullui n2  

    &sortarea rapidB Fi sortarea cu ansamble au performane deordinul lui n log 2 n.

     Aratam in continuare ca ?U  se poate cobori sub acesta

    limita "in aceasta clasa%.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    .imita inferioara a %erformantei al"oritmilor de sortareb ti tii i t + i

  • 8/16/2019 SDA - Curs 11 (CTI)

    65/69

    $urs - !tructuri de Date si Al"oritmi

    ba*ati %e com%aratii intre c+ei

    Demonstraţie. Consideram algoritmii

    & datele de intrare sunt vectori de lungime n, (x 1, x 2 , …, x n ), cu

    componentele presupuse distincte.

    & bazai pe comparaii de tipul x i  < x  j .

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    .imita inferioara a %erformantei al"oritmilor de sortareb ti tii i t + i

  • 8/16/2019 SDA - Curs 11 (CTI)

    66/69

    $urs - !tructuri de Date si Al"oritmi

    ba*ati %e com%aratii intre c+ei

    2nui asemenea algoritm i se asociazB un arbore binar de decizie,care va fi arbore binar strict:

    "a%o intruciune de ieFire va fi o frunzB ce conine vectorul sortat-

    "b%o comparaie x i  < x  j  va fi un nod interior, al cBrui fiu stGng este

    arborele asociat instruciunilor ce se executB dacB x i  < x  j  esteadevBratB, iar fiul drept este arborele asociat instruciunilor ce se

    executB dacB x i  < x  j  este falsB.

    ?umrul total al instrucJiunilor de ieKire Ki deci al frun*elor va finumrul total de ordini %osibile %e vectorul (x 1, …, x n ) deci n! '

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    .imita inferioara a %erformantei al"oritmilor de sortareb ti tii i t + i

  • 8/16/2019 SDA - Curs 11 (CTI)

    67/69

    $urs - !tructuri de Date si Al"oritmi

    ba*ati %e com%aratii intre c+ei

    34em%lu: arbore binar de decizie asociat unui algoritm de sortare a uneimultimi cu n elemente

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    .imita inferioara a %erformantei al"oritmilor de sortareba*ati %e com%aratii intre c+ei

  • 8/16/2019 SDA - Curs 11 (CTI)

    68/69

    $urs - !tructuri de Date si Al"oritmi

    ba*ati %e com%aratii intre c+ei

    !e un set particular de date de intrare, aciunea algoritmului esteecivalentB cu parcurgerea unui drum de la rBdBcinB pGnB la frunza ce

    conine respectivul set de date ordonat.

    8umBrul de comparaii efectuate numBrul de noduri interioare pe acest

    drum lungimea acestui drum "mBsuratB En arce%.

    Facultatea de Matematica si InformaticaUniversitatea Bucuresti

    .imita inferioara a %erformantei al"oritmilor de sortareba*ati %e com%aratii intre c+ei

  • 8/16/2019 SDA - Curs 11 (CTI)

    69/69

    $urs - !tructuri de Date si Al"oritmi

    ba*ati %e com%aratii intre c+ei

    8umBrul de comparaii pe care El face algoritmul Ln ca*ul mediu, revine laa estima numBrul mediu de noduri interioare pe toate drumurile, cu alte

    cuvinte lun"imea e4tern medie a arborelui binar strict de decizieasociat: "!ropozitia H% lungimea externB medie a unui asemenea arbore

    este mai mare decGt

    8umBrul de comparaii En cazul cel mai nefavorabil, revine la a estimanumBrul de noduri interioare pe drumul cel mai lun" %n la o frun* ;d   adGncimea arborelui: "Corolar la !ropozitia %