Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Partially Ordered Trees (POT)

Benzer bir sunumlar


... konulu sunumlar: "Partially Ordered Trees (POT)"— Sunum transkripti:

1 Partially Ordered Trees (POT)
Asagidaki ozellikleri saglayan binary tree ye partially ordered tree denir Her bir node un priority si var. bu priority node gosterdigi recordun bir componenti olabilir Node yerlestirilen record un priority si en az bu node un child larina yerlestirilen record larin priority leri kadardir Algoritma Analizi

2 Ornek: 10 node a sahip bir POT
18 18 16 9 7 1 9 3 7 5 Algoritma Analizi

3 Balanced POT ve Heap POT asagidaki ozellige sahipse balanced ismini alir En dipdeki level haric diger level daki tum node lar mevcut ve en dipdeki yaprak node lar mumkun olduguca en solda Eger binary tree de n node varsa yapraklarin koke olan uzunlugu log2n den buyuk olamaz Balanced POT ler heap diye bilinen array data structure i kullanilarak gerceklenebilir Priority queue gerceklenmesinde kullanilir Algoritma Analizi

4 Heap Heap indeksleri ozel olarak yorumlanan ve asagidaki ozelliklere sahip array a denir root node : A[1] A[ i ] nin left child i A[ 2*i ] A[ i ] nin right child i A[ 2*i +1] A[ i ] >= max(A[2*i], A[2*i +1] Algoritma Analizi

5 18 16 9 7 5 3 1 18 16 9 7 1 3 5 2 4 6 8 10 Algoritma Analizi

6 Ornek: Heap Algoritma Analizi

7 void swap(int A[], int i, int j) { int temp; temp = A[i]; A[i] = A[j];
A[j] = temp; } void bubleUp( int A[], int i) { if ( i>1 && A[i] > A[i/2]) { swap(A,i,i/2); bubleup(A,i/2); } Algoritma Analizi

8 Priority queue operation insert
void insert(int A[], int x, int *pn) { (*pn)++; A[*pn] = x; bubleUp(A, *pn); } Heap uzerinde gerceklestirilen insert operation Algoritma Analizi

9 18 16 9 7 5 3 1 13 11 18 16 9 7 1 3 5 2 4 6 8 10 Algoritma Analizi

10 18 16 9 13 5 3 7 1 7 11 18 16 9 13 1 3 7 5 2 4 6 8 10 Algoritma Analizi

11 void bubleDown(int A[], int i, int n) { int child; child = 2*i;
if(child < n && A[child+1] > A[child]) ++child; if(child <= n && A[i] < A[child]) { swap(A, i, child); bubleDown(A,child,n); } void deletemax(int A[], int *pn) { swap(A,1, *pn); --(*pn); bubleDown(A,1,*pn); } Algoritma Analizi

12 Ornek: deletemax 18 18 16 9 7 1 9 3 7 5 Algoritma Analizi

13 Ornek: deletemax Yeni heap 5 18 16 9 7 1 9 3 7 18 Algoritma Analizi

14 Ornek: deletemax 18 5 16 9 7 1 9 3 7 18 Algoritma Analizi

15 Ornek: deletemax 18 9 16 5 7 1 9 3 7 18 Algoritma Analizi

16 Ornek: deletemax 18 9 16 7 7 1 9 3 5 18 9 16 7 1 3 5 18 2 4 6 8 10 Algoritma Analizi

17 Heapify Algorithm Heap ozelligi olmayan Array i heap haline getirir
void heapify(int A[],int n) { int i; for( i=n/2; i>=1; i--) bubleDown(A,i,n); } Algoritma Analizi

18 Ornek: Heapifying 5 56 40 1 7 3 89 36 67 7 56 40 1 36 67 3 89 5 2 4 6 8 9 10 Algoritma Analizi

19 Ornek: Heapifying 5 56 40 1 7 3 89 36 67 7 56 40 1 36 67 3 89 5 2 4 6 8 9 10 Algoritma Analizi

20 Ornek: Heapifying 5 56 40 7 1 3 89 36 67 7 56 40 5 36 67 3 89 1 2 4 6 8 9 10 Algoritma Analizi

21 Ornek: Heapifying 5 56 40 7 1 3 89 36 67 7 56 40 5 36 67 3 89 1 2 4 6 8 9 10 Algoritma Analizi

22 Ornek: Heapifying 5 56 89 7 1 3 40 36 67 7 56 89 5 36 67 3 40 1 2 4 6 8 9 10 Algoritma Analizi

23 Ornek: Heapifying 5 56 89 7 1 3 40 36 67 7 56 89 5 36 67 3 40 1 2 4 6 8 9 10 Algoritma Analizi

24 Ornek: Heapifying 5 67 89 7 1 3 40 36 56 7 67 89 5 36 56 3 40 1 2 4 6 8 9 10 Algoritma Analizi

25 Ornek: Heapifying 5 67 89 7 1 3 40 36 56 7 67 89 5 36 56 3 40 1 2 4 6 8 9 10 Algoritma Analizi

26 Ornek: Heapifying 5 67 7 89 1 3 40 36 56 89 67 7 5 36 56 3 40 1 2 4 6 8 9 10 Algoritma Analizi

27 Ornek: Heapifying 5 67 40 89 1 3 7 36 56 89 67 40 5 36 56 3 7 1 2 4 6 8 9 10 Algoritma Analizi

28 Ornek: Heapifying 5 67 40 89 1 3 7 36 56 89 67 40 5 36 56 3 7 1 2 4 6 8 9 10 Algoritma Analizi

29 Ornek: Heapifying 89 67 40 5 1 3 7 36 56 5 67 40 36 56 3 7 1 89 2 4 6 8 9 10 Algoritma Analizi

30 Ornek: Heapifying 89 67 5 40 1 3 7 36 56 40 67 5 36 56 3 7 1 89 2 4 6 8 9 10 Algoritma Analizi

31 Ornek: Heapifying 89 67 7 5 40 1 3 36 56 40 67 7 5 36 56 3 1 89 2 4 6 8 9 10 Algoritma Analizi

32 Ornek: Heapifying 89 67 7 5 40 1 3 36 56 40 67 7 5 36 56 3 1 89 2 4 6 8 9 10 Algoritma Analizi

33 void heapsort(int A, n) { int i; heapify(A,n); i = n; while(i >1)
deletemax(A, &i); } O(n) O(nlogn) Algoritma Analizi

34 Algorithm Analysis In-place algoritma Stable degil Heapify: O(n)
Insert: O(logn) Heap sort: O(nlogn) Algoritma Analizi


"Partially Ordered Trees (POT)" indir ppt

Benzer bir sunumlar


Google Reklamları