11. STRATEGI PARTISI DAN DIVIDE & CONQUER 11.1 Partisi Strategi Divide & Conquer Divide & Conquer M-ary 11.2 Contoh Divide & Conquer Sortir dengan Bucket.

Slides:



Advertisements
Presentasi serupa
REKURSIF.
Advertisements

Pseudocode & Flowchart
Aryo Pinandito, ST, M.MT - PTIIK UB
Design and Analysis of Algorithm Recursive Algorithm Analysis
Algoritma dan Struktur Data
Algoritma Divide and Conquer
Bahan Kuliah IF3051 Strategi Algoritma Oleh: Rinaldi Munir
1 Ruli Manurung & Ade AzuratFasilkom UI - IKI /2008 – Ganjil – Minggu 4 Dasar-dasar Rekursif.
1.Menghapus isi suatu sel tertentu Kursor diarahkan pada sel yang akan dihapus Klik edit atau klik kanan pada mouse Klik cut/clear 2.Menghapus isi.
CS3204 Pengolahan Citra - UAS
Rekursif Yuliana Setiowati.
Desain dan Analisis Algoritma
Design and Analysis of ALGORITHM (Session 3)
Pemrograman Terstruktur
Subprogram Minggu V – VI
sebuah fungsi yang memanggil dirinya sendiri
MULTIPROSESOR.
Modul-8 : Algoritma dan Struktur Data
Kompleksitas Algoritma
Algoritma dan Struktur Data
Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Message-Passing Computing
Design and Analysis Algorithm
Algoritma dan Struktur Data
Tenia Wahyuningrum, S.Kom. MT
Sorting 2007/2008 – Ganjil – Minggu 5.
Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M
1 Pertemuan 9 DIVIDE And CONQUER Matakuliah: T0034/Perancangan & Analisis Algoritma Tahun: 2005 Versi: R1/0.
Pertemuan 10 DIVIDE And CONQUER Lanjutan ….
Matakuliah: T0034 / Perancangan & Analisis Algoritma Tahun: 2008 Pertemuan 9 DIVIDE AND CONQUER (1)
Algoritma Divide and Conquer (Bagian 2) Wahyul Wahidah Maulida, ST.,M.Eng.
Algoritma Divide and Conquer (Bagian 1) Wahyul Wahidah Maulida, ST., M.Eng.
Pokok Bahasan 2 Konsep Pemrosesan Paralel
12-CRS-0106 REVISED 8 FEB 2013 CSG523/ Desain dan Analisis Algoritma Divide and Conquer Intelligence, Computing, Multimedia (ICM)
Algoritma dan Struktur Data
and Divide-and-Conquer Strategies
Tugas Kelompok 6 Teknik Sort.
Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Pokok Bahasan 5 Algoritma Pemrosesan Paralel
DIG1G3 Implementasi Struktur Data
PENJURUSAN DI ORACLE ORACLE DEVELOPER
Perulangan.
Bahan Kuliah IF2211 Strategi Algoritma Oleh: Rinaldi Munir
Pertemuan 25 MERANCANG ALGORITMA DENGAN KOMPLEKSITAS TERTENTU
Algoritma Divide and Conquer
Analisa Algoritma (IF1282)
Prosedur.
Pertemuaan 2 Fitri Amillia, S.T., M.T.
Algoritma dan Struktur Data
Faktor analisa algoritma
Algoritma dan Struktur Data
Modul 6 : Analisis Algoritma dan Struktur Data
Array Buat algoritma untuk mencari nilai terbesar dari 5 nilai mahasiswa yang diinputkan dengan array.
Rekursif- studi kasus.
Algoritma sorting.
Kompleksitas Algoritma
Pipelined Computations Dalam teknik pipeline, problem dibagi menjadi deretan yang harus dilaksanakan satu setelah lainnya. Setiap tugas nantinya akan dieksekusi.
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Analisa algoritma rekursif
Perulangan.
Algoritma Divide and Conquer
Pipelined Computations
Oleh :  Rustam Afandy  Darsilan  Husni Kaimudin  Jufer.
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
Transcript presentasi:

11. STRATEGI PARTISI DAN DIVIDE & CONQUER 11.1 Partisi Strategi Divide & Conquer Divide & Conquer M-ary 11.2 Contoh Divide & Conquer Sortir dengan Bucket Sort Referensi : Wilkinson, Barry & Allen, M, “Parallel Programming”, Prentice Hall, New Jersey, 1999; Chapter 4; hal Pengolahan Paralel/KK /1/26

Strategi Partisi Deretan dipartisi ke dalam m bagian dan ditambahkan secara bebas untuk membuat penjumlahan parsial Gambar 4.1 Deretan dipartisi menjadi m bagian dan ditambahkan. Pengolahan Paralel/KK Contoh - Menambah Sederetan Angka Pengolahan Paralel/KK /2/26

Menggunakan send( ) s dan recv( ) s Master s = n/m; /* number of numbers for slaves*/ for (i = 0, x = 0; i < m; i++, x = x + s) send(&numbers[x], s, P i ); /* send s numbers to slave */ sum = 0; for (i = 0; i < m; i++) { /* wait for results from slaves */ recv(&part_sum, P ANY ); sum = sum + part_sum; /* accumulate partial sums */ } Slave recv(numbers, s, P master ); /* receive s numbers from master */ part_sum = 0; for (i = 0; i < s; i++) /* add numbers */ part_sum = part_sum + numbers[i]; send(&part_sum, P master ); /* send sum to master */ Pengolahan Paralel/KK /3/26

Menggunakan rutin Broadcast/ Multicast Master s = n/m; /* number of numbers for slaves */ bcast(numbers, s, P slave_group) ; /* send all numbers to slaves */ sum = 0; for (i = 0; i < m; i++){ /* wait for results from slaves */ recv(&part_sum, P ANY ); sum = sum + part_sum; /* accumulate partial sums */ } Slave bcast(numbers, s, P master ); /* receive all numbers from master*/ start = slave_number * s; /* slave number obtained earlier */ end = start + s; part_sum = 0; for (i = start; i < end; i++) /* add numbers */ part_sum = part_sum + numbers[i]; send(&part_sum, P master ); /* send sum to master */ Pengolahan Paralel/KK /4/26

Menggunakan rutin Scatter dan Reduce Master s = n/m; /* number of numbers */ scatter(numbers,&s,P group,root=master); /* send numbers to slaves */ reduce_add(&sum,&s,P group,root=master); /* results from slaves */ Slave scatter(numbers,&s,P group,root=master); /* receive s numbers */. /* add numbers */ reduce_add(&part_sum,&s,P group,root=master); /* send sum to master */ Pengolahan Paralel/KK /5/26

Analisis Komputasi sekuensial membutuhkan n-1 penambahan dengan kompleksitas waktu O(n) Paralel : Dengan rutin send dan receive Fase 1 - Komunikasi t comm1 = m(t startup + (n/m)t data ) Fase 2 - Komputasi t comp1 = n/m - 1 Fase 3 - Komunikasi : mengembalikan hasil parsial dengan rutin send/ recv t comm2 = m(t startup + t data ) Fase 4 - Komputasi : Akumulasi akhir t comp2 = m - 1 Jadi t p = (t comm1 + t comm2 ) + (t comp1 + t comp2 ) = 2mt startup + (n + m)t data + m + n/m -2 = O(n + m) Waktu kompleksitas paralel lebih buruk dari sekuensial Pengolahan Paralel/KK /6/26

Divide & Conquer int add(int *s) /* add list of numbers, s */ { if (number(s) =< 2) return (n1 + n2); /* see explanation */ else { Divide (s, s1, s2); /* divide s into two parts, s1 and s2 */ part_sum1 = add(s1); /*recursive calls to add sub lists */ part_sum2 = add(s2); return (part_sum1 + part_sum2); } Pengolahan Paralel/KK Karakteristiknya adalah membagi masalah ke dalam sub-sub masalah yang sama bentuknya dengan masalah yang lebih besar. Pembagian selanjutnya ke dalam sub problem yang lebih kecil biasanya dilakukan melalui rekursi. Definisi rekursi sekuensial untuk menambah sederetan angka : Pengolahan Paralel/KK /7/26

Pengolahan Paralel/KK Hasil akhir Masalah Awal Pembagian masalah Gambar 4.2 Konstruksi Pohon. Pengolahan Paralel/KK /8/26

Pengolahan Paralel/KK Implementasi Paralel Gambar 4.3 Membagi deretan ke dalam beberapa bagian. Deretan awal Pengolahan Paralel/KK /9/26

Pengolahan Paralel/KK Gambar 4.3 Penjumlahan Parsial. Jumlah Akhir Pengolahan Paralel/KK /10/26

Kode Paralel /* division phase */ divide(s1, s1, s2); /* divide s1 into two, s1 and s2 */ send(s2, P 4 ); /* send one part to another process */ divide(s1, s1, s2); send(s2, P 2 ); divide(s1, s1, s2); send(s2, P 1 }; part_sum = *s1; /* combining phase */ recv(&part_sum1, P 1 ); part_sum = part_sum + part_sum1; recv(&part_sum1, P 2 ); part_sum = part_sum + part_sum1; recv(&part_sum1, P 4 ); part_sum = part_sum + part_sum1; Pengolahan Paralel/KK Misal dibuat ada 8 prosesor untuk menambah sederetan angka. Proses P 0 Pengolahan Paralel/KK /11/26

Kode yang serupa digunakan untuk proses-proses lainnya. recv(s1, P 0 ); /* division phase */ divide(s1, s1, s2); send(s2, P 6 ); divide(s1, s1, s2); send(s2, P 5 ); part_sum = *s1; /* combining phase */ recv(&part_sum1, P 5 ); part_sum = part_sum + part_sum1; recv(&part_sum1, P 6 ); part_sum = part_sum + part_sum1; send(&part_sum, P 0 ); Pengolahan Paralel/KK Kode untuk proses P 4 Proses P 4 Pengolahan Paralel/KK /12/26

Analisis Diasumsikan n adalah pangkat dari 2. Waktu set up komunikasi, t startup tidak diperhitungkan. Komunikasi Fase Pembagian Fase Penggabungan Total waktu komunikasi Komputasi Total waktu eksekusi paralel Pengolahan Paralel/KK /13/26

Gambar 4.5 Bagian dari pohon pencarian Pengolahan Paralel/KK /14/26

Divide & Conquer M-ary Tugas (task) dibagi ke dalam lebih dari 2 bagian setiap tahapannya. Contoh : Tugas dibagi menjadi 4 bagian. Definisi rekursif sekuensialnya : int add(int *s) /* add list of numbers, s */ { if (number(s) =< 4) return(n1 + n2 + n3 + n4); else { Divide (s,s1,s2,s3,s4); /* divide s into s1,s2,s3,s4*/ part_sum1 = add(s1); /*recursive calls to add sublists */ part_sum2 = add(s2); part_sum3 = add(s3); part_sum4 = add(s4); return (part_sum1 + part_sum2 + part_sum3 + part_sum4); } Pengolahan Paralel/KK /15/26

Gambar 4.6 Pohon kuarternair (quadtree) Pengolahan Paralel/KK /16/26

Gambar 4.7 Membagi sebuah citra Pengolahan Paralel/KK Daerah citra Pembagian pertama ke dalam 4 bagian Pembagian kedua Pengolahan Paralel/KK /17/26

Sortir dengan Bucket Sort Sederetan angka dibagi ke dalam m area yang sama, 0.. a/m - 1, a/m.. 2a/m - 1, 2a/m.. 3a/m - 1, … Sebuah “bucket” ditugaskan untuk menampung angka dalam setiap area Angka-angka tersebut dimasukkan ke bucket yang sesuai Angka-angka tersebut akan disortir dengan menggunakan algoritma sortir sekuensial setiap bucket. Sortir ini akan baik jika angka-angka awalnya didistribusikan ke interval yang sudah diketahui, misalnya 0.. a - 1. Pengolahan Paralel/KK Contoh Divide & Conquer Pengolahan Paralel/KK /18/26

Pengolahan Paralel/KK Angka yang disortir Angka yang belum disortir Bucket Gambar 4.8 Bucket sort Merge List Pengolahan Paralel/KK /19/26

Waktu Sekuensial Pengolahan Paralel/KK Algoritma Paralel Bucket sort dapat diparalelkan dengan menugaskan satu prosesor untuk setiap bucket - mengurangi suku ke dua (second term) dari persamaan sebelumnya menjadi (n/p)log(n/p) untuk p prosesor (dimana p = m). Pengolahan Paralel/KK /20/26

Pengolahan Paralel/KK Angka yang disortir Angka yang belum disortir Bucket Gambar 4.9 Satu versi Paralel dari Bucket sort Merge List p prosesor Pengolahan Paralel/KK /21/26

Paralelisasi Selanjutnya Membagi deretan ke dalam m area, satu area untuk setiap prosesor Setiap prosesor mengatur p “bucket” yang kecil dan memisahkan angka-angka dalam areanya ke dalam bucket-bucket tersebut Bucket-bucket kecil ini kemudian dikosongkan ke dalam p bucket akhir untuk sortir, yang membutuhkan masing-masing prosesornya untuk mengirimkan satu bucket kecil ke masing-masing prosesor yang lain (bucket i ke prosesor i). Pengolahan Paralel/KK /22/26

Pengolahan Paralel/KK Angka yang disortir Angka yang belum disortir Bucket besar Gambar 4.10 Versi Paralel dari Bucket sort Merge List p prosesor Bucket kecil Bucket kecil dikosongkan n/m angka Pengolahan Paralel/KK /23/26

Analisis Fase 1 - Komputasi dan komunikasi (membagi angka) t comp1 = n ; t comm1 = t startup + t data n Fase 2 - Komputasi (sortir ke bucket kecil) t comp2 = n/p Fase 3 - Komunikasi (kirim ke bucket besar) Jika seluruh komunikasi tumpang tindih : t comm3 = (p - 1)(t startup + (n/p 2 )t data ) Fase 4 - Komputasi (sortir bucket besar) t comp4 = (n/p)log(n/p) Jadi t p = t startup + t data n + n/p + (p - 1)(t startup + (n/p 2 )t data ) +(n/p)log(n/p) Diasumsikan angka-angka tersebut didistribusikan untuk mencapai formula ini. Skenario kasus terburuk (worse-case) terjadi ketika semua angka berada dalam satu bucket ! Pengolahan Paralel/KK /24/26

Rutin “all-to-all” Dapat digunakan untuk fase 3 - mengirimkan data dari setiap proses ke setiap proses yang lain Gambar 4.11 Broadcast “all-to-all” Pengolahan Paralel/KK /25/26

Rutin “all-to-all” sebenarnya mengubah baris sebuah array menjadi kolom Gambar 4.12 Efek “all-to-all” dari sebuah array Pengolahan Paralel/KK /26/26