Preorder Tree Traversal

dokumen-dokumen yang mirip
ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM = pea ram)

ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM)

ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM = pea ram) Ver

ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM = pea ram)

NOTASI UNTUK ALGORITMA PARALEL

NOTASI UNTUK ALGORITMA PARALEL

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Pohon dan Pohon Biner

Algoritma dan Struktur Data. Binary Tree & Binary Search Tree (BST)

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

ANALISIS ALGORITMA BINARY SEARCH

B C D E F G H I J K L M N O P Q R S T. Tinaliah, S.Kom POHON BINER

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

OPERASI MATRIKS. a 11 a 12 a 13 a 14 A = a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

ALGORITMA PENGURUTAN & PENCARIAN

Struktur Data & Algoritma

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Tree. Perhatikan pula contoh tree di bawah ini : Level. Level 2. Level 3. Level 4. Level 5

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

BAB 2 LANDASAN TEORI

Tenia Wahyuningrum, S.Kom. MT Sisilia Thya Safitri, S.T.,M.T.

BAB VII POHON BINAR POHON

TREE ALGORITMA & STRUKTUR DATA. Materi ASD Fakultas Teknik Elektro & Komputer UKSW ( Download Dari :

BAB 2 LANDASAN TEORI

JARINGAN UNTUK MERGING

Algoritma Prim dengan Algoritma Greedy dalam Pohon Merentang Minimum

= himpunan tidak-kosong dan berhingga dari simpul-simpul (vertices) = himpunan sisi (edges) yang menghubungkan sepasang simpul

Buku Ajar Struktur Data

STRUKTUR POHON & KUNJUNGAN POHON BINER

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Algoritma dan Struktur Data. Tree

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

Representasi Graph Isomorfisme. sub-bab 8.3

Penerapan Pohon Dalam Heap Sort

FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL

BAB II LANDASAN TEORI

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

STRATEGI DIVIDE AND CONQUER

POHON CARI BINER (Binary Search Tree)

13/12/2013. Binary Tree. Contoh Tree

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

UNIVERSITAS GUNADARMA

BAB 2 LANDASAN TEORI

Pohon. Bahan Kuliah IF2120 Matematika Diskrit. Program Studi Teknik Informatika ITB. Rinaldi M/IF2120 Matdis 1

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

BAB XI Manipulasi Binary Tree

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

Pohon Biner (Bagian 1)

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

DESAIN DAN ANALISIS STRUKTUR DATA NON LINIER ROOTED TREE DINAMIS (Kata kunci: Graf, Struktur data, tree, LCA, pemrograman dinamis)

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

Definisi. Pohon adalah graf tak-berarah, terhubung, dan tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon (ada sikuit) (tdk terhubung)

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

IKI 20100: Struktur Data & Algoritma

BAB III ANALISIS SISTEM. literatur, paper maupun beberapa artikel di internet, mulai dari randomization

Algoritma dan Pemrograman Searching/Pencarian

Pohon (TREE) Matematika Deskrit. Hasanuddin Sirait, MT 1

I. PENDAHULUAN. 1.1 Permainan Rush Hour

Algoritma dan Struktur Data. Linear & Binary Search Tree

TREE STRUCTURE (Struktur Pohon)

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Pemrograman Algoritma Dan Struktur Data

BAB III ALGORITMA BRANCH AND BOUND. Algoritma Branch and Bound merupakan metode pencarian di dalam ruang

Matematika Diskret (Pohon) Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan. B.1 Pohon Biner (Binary Tree)

Diktat Algoritma dan Struktur Data 2

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

6. TREE / BINARY TREE

Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

CRITICAL PATH. Menggunakan Graph berbobot dan mempunya arah dari Critical Path: simpul asal : 1 simpul tujuan : 5. Graph G. Alternatif

BAB II LANDASAN TEORI

IT234 Algoritma dan Struktur Data. Tree

ALGORITMA ROUTING DI LINGKUNGAN JARINGAN GRID MENGGUNAKAN TEORI GRAF

Tujuan Instruksional

Pohon (Tree) Contoh :

SATUAN ACARA PERKULIAHAN MATA KULIAH PENGOLAHAN PARALEL (S1/ TEKNIK KOMPUTER)

BAB VII ALGORITMA DIVIDE AND CONQUER

SORTING. Brigida Arie Minartiningtyas, M.Kom

Graf. Program Studi Teknik Informatika FTI-ITP

8/29/2014. Kode MK/ Nama MK. Matematika Diskrit 2 8/29/2014

Gambar (a) PDL for test design

Algoritma Pemrograman & Struktur Data

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

BAB 2 TINJAUAN PUSTAKA

Algoritma Penentuan Graf Bipartit

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

BAB 2 GRAF PRIMITIF. 2.1 Definisi Graf

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Struktur Data. PDE - Struktur Data 1

Transkripsi:

Preorder Tree Traversal Dimana paralelnya? Operasi dasarnya adalah pelabelan pada node. Label pada verteks sub pohon kanan tidak dapat diberikan sampai diketahui berapa banyak verteks yang ada di sub pohon kirinya, begitu sebaliknya. Pelaksanaan penelusuran dari depan (preorder traversal), dikerjakan secara sistematis melalui semua edge pohon. Setiap edge selalu 2 (dua) kali melewati verteks, yang turun dari parent ke child dan kebalikkannya. Penelusuran pohon berorientasi edge ini merupakan algoritma paralel yang cepat. (Tarjan & Vishkin, 1984). 27 Preorder Tree Traversal CONTOH: Algoritma ini mempunyai 4 (empat) fase : Algoritma membentuk singly-linked list. Setiap verteksnya mempunyai penelusuran edge turun maupun naik dari pohon Memberikan bobot ke verteks-verteksnya, penelusuran naik (upward) : 0 penelusuran turun (downward) : 1 Setiap elemen singly-linked list menghitung rank-nya dari list secara paralel Prosesor yang diasosiasikan dengan edge yang turun menggunakan rank yang sudah dihitung sebagai nomor dari penelusuran preorder. 28

Preorder Tree Traversal 29 Preorder Tree Traversal Implementasi dari algoritma paralel preorder traversal menggunakan struktur data yang tidak biasa untuk merepresentasikan pohon. 30

Preorder Tree Traversal PSEUDOCODE PREORDER.TREE.TRAVERSAL (CREW PRAM): Global n {Number of vertices in tree} parent[1 n] {Vertex number of parent node} child[1 n] {Vertex number of firts child} sibling[1 n] {Vertex number of edge} succ[1 (n -1)] {Index of successor edge} position[1 (n -1)] {Edge rank} preorder[1 n] {Preorder traversal number} begin spawn (set of all P(i,j) where (i,j) is an edge) for all P(i,j) where (i,j) is an edge do {Put the edges into a linked list} if parent[i] = j then if sibling[i] null then succ[(i,j)] (j, sibling[i]) else if parent[j] null then succ[(i,j)] (j, parent[j]) else succ[(i,j)] (i,j) preorder[j] 1 {j is root of tree} else if child[j] null then succ[(i,j)] (j, child[j]) else succ[(i,j)] (j,i) 31 Preorder Tree Traversal {Number of edges of the successor list} if parent[i] = j then position[(i,j)] 0 else position[(i,j)] 1 {Perform suffix sum on successor list} for k 1 to log(2(n 1)) do position[(i,j)] position[(i,j)] + position[succ(i,j)] succ[(i,j)] succ[succ[(i,j)]] endfor {Assign preorder values} if i = parent[j] then preorder[j] n + 1 - position[(i,j)] endfor end 32

Preorder Tree Traversal GAMBARAN PSEUDOCODE Sebuah pohon dengan n buah node memiliki n-1 buah edge. Karena setiap edge dibagi ke dalam edge yang naik dan turun, algoritma membutuhkan 2(n-1) prosesor untuk memanipulasi 2(n-1) elemen dari singly-linked list ke penelusuran edge-nya. Pada saat prosesor diaktifkan, linked list dibentuk yang berisi elemen-elemen edge dari preorder traversal. Dengan edge (i, j), setiap prosesor harus menghitung successor (pengikut) dari edge dalam traversal. 33 Preorder Tree Traversal GAMBARAN PSEUDOCODE Jika parent[i] = j maka edge bergerak naik pada pohon, dari node child ke node parent. Edge-edge yang naik mempunyai 3 jenis successor : jika child memiliki sibling, maka egde successor berasal dari node parent ke node sibling, jika child memiliki grandparent, maka edge successor berasal dari node parent ke grandparent-nya, jika kedua kondisi di atas tidak ada, maka edge merupakan akhir dari preorder traversal. 34

Preorder Tree Traversal GAMBARAN PSEUDOCODE Akar pohon diidentitaskan dan nomor preordernya adalah 1. Jika parent[i] j, yaitu jika edge bergerak turun dari node parent ke salah satu child-nya, maka ada 2 macam edge successornya : jika node child memiliki node keturunan, edge successor berasal dari node child ke node grandchild jika node child merupakan daun, edge successor berasal dari node child itu sendiri ke parent-nya. 35 Preorder Tree Traversal GAMBARAN PSEUDOCODE Nilai posisi akhir menunjukkan nomor node preorder traversal antara elemen list dan akhir list. Untuk menghitung setiap label dari node, setiap prosesor yang diasosiasikan dengan edge turun dikurangkan nilai position dari n+1. Penambahan 1 menyebabkan penomoran preorder traversal dimulai dari 1. 36

Merging Two Sorted Lists DEFINISI Algoritma yang optimal adalah penggabungan daftar (list) untuk satu elemen setiap waktu. Untuk menggabungkan dua list secara terurut membutuhkan paling banyak n-1 perbandingan dari n/2 elemen. Waktu kompleksitasnya Θ(n). (Secara sekuensial) Dengan menggunakan algoritma PRAM, proses penggabungan dapat dicapai dalam waktu Θ(n log n) yaitu setiap elemen list dialokasikan ke prosesornya sendiri. Setiap prosesor menemukan posisi elemen-elemen pada list yang lain dengan pencarian biner (binary search). 37 Merging Two Sorted Lists Dengan menggunakan algoritma PRAM, proses penggabungan dapat dicapai dalam waktu Θ(n log n) yaitu setiap elemen list dialokasikan ke prosesornya sendiri. Setiap prosesor menemukan posisi elemen-elemen pada list yang lain dengan pencarian biner (binary search). Karena setiap indeks elemen pada list diketahui, tempat pada gabungan list dapat dihitung saat indeks pada list lainnya diketahui dan du indeks ditambahkan. Semua n elemen dapat dimasukkan ke gabungan list dengan prosesornya sendirisendiri dalam waktu konstan. 38

Merging Two Sorted Lists 39 Merging Two Sorted Lists PSEUDOCODE MERGE.LISTS (CREW PRAM): Given : Two sorted lists of n/2 elements each stored in A[1] A[n/2] and A[(n/2)+1] A[n] The two lists and their unions have disjoint values Final condition : Merged list in locations A[1] A[n] Global A[1 n] Local x, low, high, index begin spawn(p 1, P 2,, P n ) for all P i where 1 i n do {Each processor sets bounds for binary search} 40

Merging Two Sorted Lists if i n/2 then end else low (n/2) + 1 high n low 1 high n/2 {Each processor performs binary search} x A[i] repeat index (low + high)/2 if x < A[index] then high index 1 else low index + 1 until low > high {Put value in correct position on merged list} A[high + i n/2] x endfor 41 Merging Two Sorted Lists GAMBARAN PSEUDOCODE Prosesor yang dibutuhkan ada n buah, satu untuk setiap elemen dari dua list yang digabungkan. Secara paralel, prosesor ini menentukan indeks yang akan dicari. Prosesor yang diasosiasikan dengan elemen dari ½ array bagian bawah akan melakukan pencarian biner pada elemen dari ½ array bagian atas, begitupula sebaliknya. Prosesor P i diasosiasikan dengan array A[i] bagian bawah dari list. Nilai akhir prosesor high harus berada antara n/2 dan n. Elemen A[i] > i-1 elemen pada bagian bawah list. Juga A[i] > high (n/2) untuk elemen bagian atas list. Sehingga A[i] diletakkan pada gabungan list setelah i + high n/2 1 elemen lainnya, pada indeks i + high n/2. 42

Merging Two Sorted Lists Begitu pula dengan array bagian atas list. Prosesor P i diasosiasikan dengan array A[i] bagian atas dari list. Nilai akhir prosesor high harus berada antara 0 dan n/2. Elemen A[i] > i (n/2 +1) elemen lainnya pada bagian atas list. Juga A[i] > elemen high untuk bagian bawah list. Sehingga A[i] diletakkan pada gabungan list setelahi + high n/2 1elemen lainnya,pada indeks i + high n/2. Karena semua prosesor menggunakan ekspresi yang sama untuk menempatkan elemenelemennya, setiap prosesor merelokasi elemenelemennya menggunakan instruksi yang sama di akhir algoritma. 43 Merging Two Sorted Lists KOMPLEKSITAS Secara sekuensial : Θ(n) Secara paralel : Θ(n log n) Untuk membangun algoritma pada komputer paralel sebenarnya, cost algoritma paralel harus diperhitungkan. 44

DEFINISI Pewarnaan graf merupakan graf dimana verteks-verteks dapat diwarnai dengan c warna sehingga tidak ada dua verteks yang berdekatan (bertetangga/ ajasensi) memiliki warna yang sama. CONTOH Graph Coloring Diasumsikan graf dengan n buah verteks. Diberikan matriks ajasensi (bertetangga) mxn dan konstanta positif c, sebuah prosesor dibuat untuk setiap pewarnaan graf yang mungkin. Prosesor P(i 0, i 1, i 2,, i n-1 ) mengilustrasikan pewarnaan verteks 0 dengan warna i 0, verteks 1 dengan warna i 1 hingga verteks n-1 dengan warna i n-1. 45 Graph Coloring 46

Graph Coloring PSEUDOCODE GRAPH.COLORING (CREW PRAM): Global n {Number of vertices} c {Number of colors} A[1 n][1 n] {Adjacency matrix} candidate[1 c][1 c] [1 c] {n-dimensional boolean matrix} valid {Number of valid colorings} j, k 47 Graph Coloring begin end spawn(p(i 0, i 1, i 2,, i n-1 )) where 0 i v < c for 0 v < n for all P(i 0, i 1, i 2,, i n-1 ) where 0 i v < c for 0 v < n do candidate[i 0, i 1, i 2,, i n-1 ] 1 for j 0 to n-1 do for k 0 to n-1 do if a[j][k] and i j =i k then candidate[i 0, i 1, i 2,, i n ] 0 endfor endfor valid Σcandidate {Sum of all elements of candidate} endfor if valid > 0 then print Valid coloring exists else print Valid coloring does not exist 48

Graph Coloring GAMBARAN PSEUDOCODE Setiap prosesor memulai nilainya pada array candidate berdimensi-n dengan 1. Waktu yang dipakai Θ(n 2 ) untuk mewarnai verteks yang diwakili 2 verteks yang berajasensi diberikan warna yang sama. Jika A[j,k] = 1 dan i j =i k maka pewarnaan salah karena A[j,k] = 1 berarti verteks j dan k bertetangga (ajasensi) dan i j =i k berarti verteks j dan k berwarna sama. Jika hal ini terjadi, array candidate di-set 0. Setelah n 2 perbandingan, jika elemen lainnya pada array candidate masih 1, pewarnaan benar. 49 Graph Coloring Dengan menjumlah semua elemen c n pada array candidate, dapat digambarkan bahwa pewarnaan benar (valid). KOMPLEKSITAS Rutin spawn : Θ(log c n ), Perulangan loop for ganda : Θ(n 2 ), Menjumlah semua elemen c n : Θ(log c n ) Waktu kompleksitas keseluruhan : Θ(log c n + n 2 ) = Θ(n 2 + n log c) Karena c < n, kompleksitas berkurang menjadi Θ(n 2 ). 50