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

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

carte2008.dvi

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

ALGORITHMICS

Calcul Numeric

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

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

Diapositive 1

E_d_Informatica_sp_SN_2014_bar_10_LRO

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

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

SUBPROGRAME

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

tehnologii web

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

Lucrarea nr. 4 - Algoritmi de sortare şi ordonare Breviar teoretic Un algoritm de sortare este o metoda prin care se aranjează elementele unui tablou

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

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

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

Programarea şi utilizarea calculatoarelor

CONCURSUL DE MATEMATICĂ APLICATĂ "ADOLF HAIMOVICI" ETAPA JUDEȚEANĂ 18 martie 2017 Filiera Tehnologică : profilul Tehnic Clasa a IX -a Problema 1. 2 Se

E_d_Informatica_sp_MI_2015_bar_02_LRO

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

Analiză de flux de date 29 octombrie 2012

Școala: Clasa a V-a Nr. ore pe săptămână: 4 Profesor: MATEMATICĂ Clasa a V-a Aviz director PLANIFICARE CALENDARISTICĂ ORIENTATIVĂ Nr. crt. Unitatea de

Entrepreneurship and Technological Management

CURBE BÉZIER În CAGD se utilizează adesea curbele polinomiale, adică acele curbe definite de o parametrizare polinomială: C : [a, b] R 3 C(t) = (x(t),

Analiză statică Analiza fluxului de date 23 octombrie 2014

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

Examen de licenţă Informatică Exemple de întrebări - Structuri discrete şi algoritmi In atenţia studenţilor: Proba scrisă a examenului de licen

Slide 1

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

Examen de licenţă Informatică Exemple de întrebări - Structuri discrete şi algoritmi In atenţia studenţilor: Proba scrisă a examenului de licen

Subiectul 1

Şiruri de numere reale Facultatea de Hidrotehnică Universitatea Tehnică Gheorghe Asachi Iaşi, 2015 Analiză Matematică Lucian Maticiuc 1 / 29

BAC 2007 Pro Didactica Programa M1 2 Rezolvarea variantei 36 versiune finală Redactia Pro Didactica Suportul pe net:

Modelarea si Simularea Sistemelor de Calcul

Microsoft PowerPoint - Prezentarea_programelor_de_studii_de_licenta_2019

ALGORITHMICS

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Elemente de aritmetica

Microsoft Word - Algoritmi genetici.docx

1

Analiz¼a Matematic¼a - Curs 6 M¼ad¼alina Roxana Buneci

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

Microsoft Word - D_ MT1_II_001.doc

ETTI-AM2, , M. Joița & A. Niță Notițe de Adrian Manea Seminar 11 Transformarea Laplace Aplicații Transformarea Z Ecuații și sisteme diferenți

09. Informatica 2 - MM 1

I. Partea introductivă Proiectul unității de învățare CONCEPTUL DE MATRICE ŞCOALA: Colegiul Național Petru Rareș Suceava CLASA: a XI a- matematică / a

SSC-Impartire

Slide 1

Microsoft Word - CarteC.doc

DAN LASCU ADRIANA-LIGIA SPORIŞ ANDA OLTEANU PAUL VASILIU MATEMATICĂ. CULEGERE DE PROBLEME TIP GRILĂ PENTRU ADMITEREA ÎN ACADEMIA NAVALĂ MIRCEA CEL BĂT

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

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

Microsoft Word - Curs1.docx

Microsoft Word - Matematika_kozep_irasbeli_javitasi_0911_roman.doc

Prelegerea 3 În această prelegere vom învăţa despre: Clase speciale de latici: complementate. modulare, metrice, distributive şi 3.1 Semi-distributivi

FIŞA DISCIPLINEI

Proiectarea Algoritmilor

Cursul 1 1. Introducere Corpul numerelor complexe Dezvoltarea istorică a gândirii matematice a urmărit îndeaproape evoluţia ideii de număr. Această ev

Declararea variabilelor

I

Microsoft Word - cap1p4.doc

Divide et Impera

OPERATII DE PRELUCRAREA IMAGINILOR 1

PowerPoint Presentation

Calcul Numeric

Tiberiu Trif Analiză matematică 2 Calcul diferențial și integral în R n

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

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

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Logică și structuri discrete Mulțimi Casandra Holotescu

BAC 2007 Pro Didactica Programa M1 2 Rezolvarea variantei 61 versiune finală Redactia Pro Didactica Suportul pe net:

PCLPII-C16(9)

L7

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Microsoft Word - Curs_08.doc

Metode de programare Proiectarea algoritmilor

PROGRAMA CONCURSULUI NAŢIONAL

Preprocesorul C Funcţii cu numǎr variabil de argumente 6 decembrie 2005 Programarea calculatoarelor 2. Curs 10 Marius Minea

Microsoft Word - Raspunsul la niste provocari. Partea III..doc

Microsoft Word - Curs_09.doc

Tablouri (continuare)

Slide 1

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.

Slide 1

20 SUBIECTE DE EXAMEN - De fapt, în pofida acestor probleme, până la urmă tot vom logaritma, căci aceasta este tehnica naturală în context. Trebuie do

Backtracking_2018

Paradigme de programare

Slide 1

Slide 1

METODE NUMERICE ÎN INGINERIE

Coman Marinela Furnizor program formare acreditat: CCD BRĂILA Denumire program: INFORMATICĂ ŞI TIC PENTRU GIMNAZIU Clasa a V-a Categorie: 1; Tip de co

GHEORGHE PROCOPIUC PROBLEME DE ANALIZĂ MATEMATICĂ ŞI ECUAŢII DIFERENŢIALE IAŞI, 2007

PAS cap. 2: Reprezentări rare p. 1/35 Prelucrarea avansată a semnalelor Capitolul 2: Reprezentări rare Bogdan Dumitrescu Facultatea de Automatică şi C

Transcriere:

Curs : Tehnica divizării (I) 1

In cursul anterior am văzut cum se analizează eficiența algoritmilor recursivi Se scrie relația de recurență corespunzătoare timpului de execuție Se rezolvă relația de recurență folosind tehnica substituției directe sau a celei inverse cum se pot rezolva probleme folosind tehnica reducerii Descreștere prin reducerea dimensiunii problemei cu o constantă / variabilă Descreștere prin împărțirea dimensiunii problemei cu un factor constant/variabil uneori tehnica reducerii conduce la algoritmi mai eficienți decât cei obținuți aplicând tehnica forței brute 2

Structura Ideea de bază a tehnicii divizării Exemple Teorema Master pentru estimarea ordinului de complexitate al algoritmilor bazați pe tehnici reducere/divizare Sortare prin interclasare 3

Ideea de bază a tehnicii divizării Problema curentă este divizată în mai multe subprobleme de același tip dar de dimensiune mai mică Subproblemele componente trebuie să fie independente (fiecare dintre aceste subprobleme va fi rezolvată cel mult o dată) Subproblemele trebuie să aibă dimensiuni apropiate Subproblemele sunt rezolvate aplicând aceeași strategie (algoritmii proiectați folosind tehnica divizării pot fi descriși ușor în manieră recursivă) Dacă dimensiunea problemei este mai mică decât o anumită valoare (dimensiune critică) atunci problema este rezolvată direct, altfel este rezolvată aplicând din nou tehnica divizării (de exemplu, recursiv) Dacă este necesar, soluțiile obținute prin rezolvarea subproblemelor sunt combinate 4

Ideea de bază a tehnicii divizării Divide&conquer (n) IF n<=n c THEN r <rezolvă P(n) direct pt a obține rezultatul r> ELSE <descompune P(n) in P(n 1 ),, P(n k )> FOR i 1,k DO r i Divide&conquer(n i ) // rezolvă subproblema P(n i ) ENDFOR r combinare(r 1, r k ) ENDIF RETURN r 5

Exemplu 1 Calculul maximului unui tablou x[1..n] 3 2 7 5 1 6 4 5 n=, k=2 3 2 7 5 Divizare 1 6 4 5 3 2 7 5 Rezolvare 1 6 4 5 3 7 Combinare 6 5 7 6 7 6

Exemplu 1 Algoritm: maxim(x[s..d]) IF s==d then RETURN x[s] ELSE m (s+d) DIV 2 //divizare max1 maxim(x[s..m]) // rezolvare max2 maxim(x[m+1..d]) if max1>max2 // combinare THEN RETURN max1 ELSE RETURN max2 ENDIF ENDIF Analiza eficienței Dimensiunea pb: n Operație dominantă: comparația Relație recurență: 0, n=1 T(n)= T([n/2])+T(n-[n/2])+1, n>1 7

Exemplu 1 Substituție inversă: 0, n=1 T(n)= T([n/2])+T(n-[n/2])+1, n>1 Caz particular: n=2 m 0, n=1 T(n)= 2T(n/2)+1, n>1 T(2 m ) = 2T(2 m-1 )+1 T(2 m-1 )=2T(2 m-2 )+1 * 2 T(2)=2T(1)+1 * 2 m-1 T(1)=0 ---------------------------- T(n)=1+ +2 m-1 =2 m -1=n-1

Exemplu 1 T(n)= 0, n=1 T([n/2])+T(n-[n/2])+1, n>1 Caz general. (a) Demonstrație prin inducție matematică completă Verificare. n=1 =>T(n)=0=n-1 Caz particular: n=2 m => T(n)=n-1 Pasul de inducție. Presupunem că T(k)=k-1 pentru orice k<n. Atunci T(n)=[n/2]-1+n-[n/2]-1+1=n-1 Deci T(n) =n-1 => T(n) aparține lui Θ(n). 9

Caz general. (b) Dacă Regula funcțiilor netede Exemplu 1 T(n) aparține lui (f(n)) pentru n=b m T(n) este crescătoare pentru valori mari ale lui n f(n) este netedă (f(cn) aparține lui (f(n)) pentru orice constantă pozitivă c) atunci T(n) aparține lui (f(n)) pentru orice n Observații. Toate funcțiile care nu cresc foarte rapid (ex: funcția logaritmică și cea polinomială) sunt funcții netede. In schimb funcția exponențială nu are această proprietate: a cn nu este din (a n ) Pentru algoritmul maxim : T(n) este crescătoare, f(n)=n este netedă, deci T(n) este din (n) pentru orice valoare a lui n 10

Exemplu 2 căutare binară Să se verifice dacă o valoare dată, v, aparține sau nu unui tablou ordonat crescător, x[1..n] (x[i]<=x[i+1], i=1..(n-1)) Idee: se compară v cu elementul din mijloc și se continuă căutarea fie în subtabloul stâng fie în cel drept x 1 x m-1 x m x m+1 x n v<x m x m =v v>x m x 1 x m -1 x m x m +1 x m-1 x m =v True x m+1 x m -1 x m x m +1 x n True x s..x d s>d (tablou vid) False 11

Exemplu 2 căutare binară Varianta recursivă: cautbin(x[s..d],v) IF s>d THEN RETURN False // caz particular ELSE m (s+d) DIV 2 // etapa de divizare IF v==x[m] THEN RETURN True ELSE IF v<x[m] THEN RETURN cautbin(x[s..m-1],v) ELSE RETURN cautbin(x[m+1..d],v) ENDIF ENDIF ENDIF Apel functie: cautbin(x[1..n],v) (la început s=1, d=n) Observație: n c =0 k=2 Doar una dintre subprobleme este rezolvată Căutarea binară se bazează de fapt pe tehnica reducerii (doar una dintre subprobleme este rezolvată) 12

Exemplu 2 căutare binară Varianta iterativă 1: cautbin1(x[1..n],v) s 1 d n WHILE s<=d DO m (s+d) DIV 2 IF v==x[m] THEN RETURN True ELSE IF v<x[m] THEN d m-1 ELSE s m+1 ENDIF / ENDIF/ ENDWHILE RETURN False Varianta iterativă 2: cautbin2(x[1..n],v) s 1 d n WHILE s<d DO m (s+d) DIV 2 IF v<=x[m] THEN d m ELSE s m+1 ENDIF / ENDWHILE IF x[s]==v THEN RETURN True ELSE RETURN False ENDIF 13

Exemplu 2 căutare binară Varianta iterativă 2: cautbin2(x[1..n],v) s 1 d n WHILE s<d DO m (s+d) DIV 2 IF v<=x[m] THEN d m ELSE s m+1 ENDIF ENDWHILE IF x[s]==v THEN RETURN True ELSE RETURN False ENDIF Corectitudine Precondiție: n>=1 Postconditie: returnează True dacă v este în x[1..n] și False în caz contrar Invariant: v este în x[1..n] dacă și numai dacă v este în x[s..d] (i) (ii) (iii) s=1, d=n => invariantul e adevărat Rămâne adevărat prin execuția corpului ciclului când s=d se obține postcondiția 14

Exemplu 2 căutare binară Varianta iterativă 2: cautbin2(x[1..n],v) s 1 d n WHILE s<d DO m (s+d) DIV 2 IF v<=x[m] THEN d m ELSE s m+1 ENDIF ENDWHILE IF x[s]==v THEN RETURN True ELSE RETURN False ENDIF Eficiența: Caz defavorabil: x nu conține pe v Caz particular: n=2 m 1 n=1 T(n)= T(n/2)+1 n>1 T(n)=T(n/2)+1 T(n/2)=T(n/4)+1 T(2)=T(1)+1 T(1)=1 T(n)=lg n+1 O(lg n) 15

Observație: Exemplu 2 căutare binară Aplicând regula funcțiilor netede rezultă că algoritmul cautbin2 (similar se poate arăta pentru celelalte variante) are ordinul de complexitate O(log n) pentru orice valoare a lui n Analiza eficienței algoritmilor proiectați utilizând tehnicile de reducere și divizare poate fi ușurată prin folosirea teoremei master 16

Teorema master Considerăm următoarea relație de recurență: T(n)= T 0 kt(n/m)+t DC (n) n<=n c n>n c Dacă T DC (n) (timpul necesar etapelor de divizare și combinare) aparține lui (n d ) (d>=0) atunci (n d ) dacă k<m d T(n) aparține lui (n d log(n)) dacă k=m d Obs: (n log(k)/log(m) ) dacă k>m d 1. m reprezintă nr de subprobleme în care se descompune problema inițială iar k e nr de subprobleme care se rezolvă efectiv 2. un rezultat similar există pentru clasele O și Ω 17

Teorema master Utilitate: Poate fi aplicată în analiza algoritmilor bazați pe tehnica reducerii sau a divizării Evită rezolvarea explicită a relației de recurență corespunzătoare timpului de execuție In multe aplicații practice etapele de divizare (reducere) și de combinare sunt de complexitate polinomială (deci teorame Master poate fi aplicată) Spre deosebire de variantele de rezolvare explicită a relației de recurență furnizează doar ordinul de complexitate nu și constantele ce intervin în estimarea timpului de execuție 1

Exemplu1 : calcul maxim: Teorema master k=2 (pb inițială se divide în două subprobleme, iar ambele subprobleme trebuie rezolvate) m=2 (dimensiunea fiecărei subprobleme este aproximativ n/2) d=0 (etapele de divizare și de combinare a rezultatelor au cost constant) Intrucât k>m d prin aplicarea celui de al treilea caz al teoremei master rezulta ca T(n) aparține lui (n log(k)/log(m) )= (n) 19

Exemplu 2: căutare binară Teorema master k=1 ( doar una dintre subprobleme trebuie rezolvată) m=2 (dimensiunea subproblemei este n/2) d=0 (etapele de divizare și combinare au cost constant) Intrucât k=m d prin aplicarea celui de al doilea caz al teoremei master se obține ca T(n) aparține lui O(n d lg(n))= (lg n) 20

Sortare eficientă Metodele elementare de sortare aparțin lui O(n 2 ) Idee de eficientizare a procesului de sortare: Se împarte secvența inițială în două subsecvențe Se sortează fiecare subsecvență Se combină subsecvențele sortate Sortare prin interclasare (Merge sort) Divizare In fctie de poziție In fcție de valoare Sortare rapidă (Quicksort) Combinare Interclasare Concatenare 21

Sortare prin interclasare Idee de bază: Imparte x[1..n] în două subtablouri x[1..[n/2]] and x[[n/2]+1..n] Sortează fiecare subtablou Interclasează elementele subtablourilor x[1..[n/2]] si x[[n/2]+1..n] și construiește tabloul sortat t[1..n]. Transferă conținutul tabloului temporar t în x[1..n] Observații: Valoarea critică: 1 (un tablou conținând un singur element este implicit sortat) Valoarea critică poate fi mai mare decât 1 (de exemplu, 10) iar sortarea subtablourilor cu un număr de elemente mai mic decât valoarea critică se poate realiza cu unul dintre alg. elementari (ex: sortare prin inserție) 22

Sortare prin interclasare 23

Sortare prin interclasare Algoritm: sortare(x[s..d]) IF s<d THEN m (s+d) DIV 2 x[s..m] sortare(x[s..m]) x[m+1..d] sortare(x[m+1..d]) x[s..d] interclasare(x[s..m],x[m+1..d]) ENDIF RETURN x[s..d] //divizare //rezolvare //combinare Obs: algoritmul se apelează prin sortare(x[1..n]) 24

Sortare prin interclasare interclasare (x[s..m],x[m+1..d) i s; j m+1; k 0; // indice în t // se parcurg subtablourile în paralel și la fiecare pas se transferă cel mai mic element WHILE i<=m AND j<=d DO k k+1 IF x[i]<=x[j] THEN t[k] x[i] i i+1 ELSE t[k] x[j] j j+1 ENDIF ENDWHILE // se transferă eventualele elemente rămase în primul subtablou WHILE i<=m DO k k+1 t[k] x[i] i i+1 ENDWHILE // se transferă eventualele elemente rămase în al doilea subtablou WHILE j<=d DO k k+1 t[k] x[j] j j+1 ENDWHILE RETURN t[1..k] 25

Sortare prin interclasare Interclasarea este o prelucrare ce poate fi utilizată pentru construirea unui tablou sortat pornind de la oricare alte două tablouri sortate (a[1..p], b[1..q]) Varianta de interclasare bazată pe valori santinelă: Se adaugă două valori mai mari decât elementele tablourilor a[p+1]=, b[q+1]= interclasare(a[1..p],b[1..q]) a[p+1] ; b[q+1] i 1; j 1; FOR k 1,p+q DO IF a[i]<=b[j] THEN c[k] a[i] i i+1 ELSE c[k] b[j] j j+1 ENDIF ENDFOR RETURN c[1..p+q] Analiza eficienței interclasării Operație dominantă: comparația T(p,q)=p+q In algoritmul de sortare (p=[n/2], q=n-[n/2]): T(n)<=[n/2]+n-[n/2]=n Deci T(n) aparține lui O(n) (etapa de interclasare este de complexitate liniară) 26

Sortare prin interclasare Analiza sortării prin interclasare: T(n)= 0 n=1 T([n/2])+T(n-[n/2])+T M (n) n>1 Intrucât k=2, m=2, d=1 (T M (n) aparține lui O(n)) rezultă (folosind al doilea caz din teorema master ) că T(n) aparține lui O(nlgn). De fapt T(n) aparține lui (nlgn) Observații. 1. Principalul dezavantaj al sortării prin interclasare este faptul că utilizează un tablou adițional de dimensiunea tabloului de sortat 2. Dacă în pasul de interclasare se folosește inegalitate de tip <= atunci sortarea prin interclasare este stabilă 27

Cursul următor va fi despre sortare rapidă și alte aplicații ale tehnicii divizării 2

Intrebare de final Se consideră algoritmul: alg(x[s..d]) if s>d then return 0 else if s==d then return x[s] else m (s+d)/2 rez1=alg(x[s..m]) rez2=alg(x[m+1..d]) return rez1+rez2 endif endif Care dintre răspunsuri este adevărat la în cazul în care algoritmul se apelează pentru un tablou x[1..n] (n>1) iar la analiza complexității se consideră că operația dominantă este adunarea: a) Algoritmul returnează x[1]+x[n] și are ordinul de complexitate O(1) b) Algoritmul returnează suma tuturor elementelor din x și are ordinul de complexitate O(log n) c) Algoritmul returnează suma tuturor elementelor din x și are ordinul de complexitate O(n) d) Algoritmul returnează 0 și are ordinul de complexitate O(1) 29