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
Ornek: 10 node a sahip bir POT 18 18 16 9 7 1 9 3 7 5 Algoritma Analizi
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
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
18 16 9 7 5 3 1 18 16 9 7 1 3 5 2 4 6 8 10 Algoritma Analizi
Ornek: Heap Algoritma Analizi
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
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
18 16 9 7 5 3 1 13 11 18 16 9 7 1 3 5 2 4 6 8 10 Algoritma Analizi
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
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
Ornek: deletemax 18 18 16 9 7 1 9 3 7 5 Algoritma Analizi
Ornek: deletemax Yeni heap 5 18 16 9 7 1 9 3 7 18 Algoritma Analizi
Ornek: deletemax 18 5 16 9 7 1 9 3 7 18 Algoritma Analizi
Ornek: deletemax 18 9 16 5 7 1 9 3 7 18 Algoritma Analizi
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
void heapsort(int A, n) { int i; heapify(A,n); i = n; while(i >1) deletemax(A, &i); } O(n) O(nlogn) Algoritma Analizi
Algorithm Analysis In-place algoritma Stable degil Heapify: O(n) Insert: O(logn) Heap sort: O(nlogn) Algoritma Analizi