Anda di halaman 1dari 3

Topik Paper : Cartesian Tree Sort

Kelas : DAA - B
Anggota kelompok :
1) Dimas Aditya F - 1706039686
2) M. Adipashya - 1706074852
3) Yaumi Alfadha - 1706023031

Cartesian tree sort atau yang sering disebut juga algortima Levcopoulus Petersson
merupakan adaptive sorting algorithm, yang mana algoritma ini bekerja lebih baik
pada data yang terurut secara parsial.

Pada tahun 1989, Levcopoulos & Petersson menjelaskan tentang algoritma sorting
berdasarkan Cartesian Tree. Cartesian Tree itu sendiri merupakan binary tree yang
diturunkan berdasarkan deretan angka. Diperkenalkan oleh Vuillemin pada tahun
1980 dalam konteks pencarian struktur data geometris,

Cartesian Tree untuk urutan bilangan yang berbeda - beda dan dapat ditentukan
secara unik, adalah sebagai berikut :

1. Untuk suatu urutan, Cartesian Tree memiliki satu node untuk setiap nomor
dalam urutan tersebut. Setiap node dikaitkan dengan nilai urutan tunggal.
2. Dilakukan Traversal secara simetris (berurutan) dari Tree untuk menghasilkan
urutan aslinya. Ini berarti, subtree kiri akan terdiri dari nilai-nilai yang lebih
awal daripada root dalam sequence order, sedangkan subtree kanan terdiri
dari nilai-nilai yang lebih belakangan daripada root, dan batasan urutan
serupa berlaku di setiap node bawah tree.
3. Tree memiliki properti heap: parent dari node non-root memiliki nilai yang
lebih kecil daripada node itu sendiri.

Membangun cartesian tree


Berikut ini adalah ilustrasi dari pembangunan tree untuk melkakuan sorting dari
sebuah array yang berisikan elemen [1,2,3…..,10].
Berdasarkan properti heap, akar pohon Cartesian adalah bilangan terkecil dari
urutan inoder. Idenya adalah untuk menemukan indeks elemen minimum dalam
urutan inoder dan membangun simpul root darinya. Sekarang subpohon kiri terdiri
dari nilai-nilai yang lebih awal dari akar dalam urutan inoder, sedangkan subpohon
kanan terdiri dari nilai-nilai setelah akar. Kami secara rekursif mengikuti pola ini
untuk semua node di pohon untuk membangun pohon Cartesian lengkap.

Complexity
Best case dari algoritma cartesian tree adalah memproses sebuah array yang
hampir terurut (baik dalam urutan ascending atau descending). Di sini, misalnya,
adalah proses untuk array dengan urutan terbalik : [22, 10, 9, 5, 2,1]. Algoritma
cartesian tree hanya membutuhkan n operasi dengan kompleksitas O( n )

Bagian yang paling mahal dari algoritma adalah operasi "merge", yang dilakukan
dua kali untuk setiap n elemeni - pertama saat membangun struktur pohon
(deramide) dan kemudian saat membongkar struktur untuk membangun array
terurut. Pada data acak, biaya operasi Penggabungan satu kali O (log n), tetapi
untuk elemen yang terletak di wilayah terurut dari array, biaya operasinya adalah O
(1).

Maka, time complexity cartesian tree untuk average case, worst case, dan best case
adalah:
average case : O (n log n)
worst case : O (n log n)
best case : O ( n )

Space complexity
Cartesion tree dibangun menggunakan priority queue dan struktur data pohon
Cartesian. Melalui penggunaaan queue, kita mengetahui bahwa setiap saat ukuran
antrian prioritas tidak akan melebihi ukuran array input. Proses pembangunan
catesian tree akan melakukan operasi "push" dan "pop" sebuah node dari queue.
Oleh karena itu space complexity dari algoritma cartesian tree adalah:
space complexity : O ( n )

Anda mungkin juga menyukai