Crayon Code Highlighter … and welcome back :)

Sudah lama gak coding akhirnya kembali perlu berenang – renang kembali, ternyata nikmat nya sensasional. Semacam passion yang hilang terus ketemu lagi 🙂 Dan kembali sebagai bayi programmer … meniti satu-persatu wk kkkk

Ops sudah basa-basinya ya … jadi gak nyambung dengan judul di atas he he he

Ok untuk bisa menampilkan code-code saya gunakan plugin di wordpress yang bernama Crayon Code Highlighter. Kenapa Crayon ? karena enak sih 🙂 dan cantik tentunya …

Just  try :

<?php
   echo "Welcome to PHP tutorial";
?>

Cantik kan tampilan si Crayon … and hey code(s) … welcome back !

 

Refresh Ubuntu Repository

Sometime whenever you update your Ubuntu (12.x up) and found error message below

Reading package lists… Error!
or like :
W: GPG error: http://archive.ubuntu.com jaunty Release: The following signatures were invalid: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key

etc…

May be your repository configuration in you PC/laptop/server was dirty, and off course you can clean them up using this steps below :

sudo -i
apt-get clean
cd /var/lib/apt
mv lists lists.old
mkdir -p lists/partial
apt-get clean
apt-get update

Hope it will work with You, have a nice try.

Shuffle-Exchange Networks

M.J.Quin pp.59-60

Jaringan Shuffle-Exchange mengandung n = 2k buah node yang ditandai dengan angka 0, 1, … , n-1, dan dua macam koneksi yang disebut shuffle dan exchange. Exchange menghubungkan sepasang nodes yang angkanya berbeda di bit yang terakhirnya. Koneksi?perfect shuffle menghubungkan node i dengan node 2i modulo (n-1), kecuali untuk node yang ke n-1,?dia terhubung dengan dirinya sendiri. Perhatikan gambar 3-8 berikut :

shuffle-exchange

Gambar 3-8

Ini adalah gambar jaringan shuffle-exchange dengan 8 (delapan) buah nodes. Koneksi Shuffle ditandai dengan tanda panah bergaris penuh dan jalur exchange (pertukaran) ditandai dengan panah bergaris putus-putus.

Turunan dari shuffle-exchange salah satunya adalah perfect shuffle. Untuk mendapatkan pemahamam tentang perfect shuffle mari perhatikan ilustrasi berikut ini. Misalkan ada pengocokan kartu sejumlah 8 buah kartu. Mereka ditandai dengan angka 0,1,2,3,4,5,6,7. Jika tumpukan kartu tadi dibagi rata menjadi dua dan kemudian di kocok dengan sempurna, maka hasilnya adalah sebagai berikut : 0,4,1,5,2,6,3,7. Dengan memperhatikan gambar 3-8 di atas, posisi terakhir dari kartu yang dimulai dengan index i dapat ditentukan dengan mengikuti sambungan shuffle dari node i.

Misalkan \inline a_{k-1}a_{k-2},\cdots , a_{1},a_{0} adalah alamat sebuah node di sebuah jaringan perfect-shuffle dalam bentuk biner. Sebuah data pada alamat ini akan berada di alamat?\inline a_{k-2},\cdots , a_{1},a_{0},a_{k-1} sesuai dengan operasi?shuffle. Dengan perkataan lain, perubahan pada alamat dari sebuah data setelah operasi shuffle berkaitan dengan rotasi perputaran kiri (left cylic rotation) dari alamatnya sejauh 1 (satu) bit. Jika n = 2k, maka k kali operasi shuffle memindahkan suatu data kembali ke lokasi asalnya.

The nodes through which a data item beginning at address i travels in response to a sequence of shuffles are called the necklace of i. No necklace  is longer than k and a necklace shorter than k is called a short necklace. Figure 3-9 illustrate  the necklaces of the perfect shuffle network with eight nodes.

Gambar 3-9

Gambar 3-9

Bitonic Merge

Algoritma ini menjadi dasar untuk algoritma-algoritma sorting dengan waktu proses poli-logaritmik pada beberapa model komputasi paralel. Operasi dasarnya adalah Compare-Exchange: dua buah angka diarahkan masuk ke sebuah Comparator, di dalam comparator ini kedua nilai jika diperlukan akan dipertukarkan, sehingga akan berada pada urutan yang dikehendaki

openstat_bitonic_merge_10-4

Definisi 10.1 Bitonic Sequence adalah sederetan nilai \( a_{0}, \cdots ,a_{n-1}\) dengan sifat bahwa

  1. ada sebuah index , dimana \( 0\leq i\leq n-1\), sedemikian sehingga a menaik secara monoton ke adan amenurun secara monoton hingga an-1 , atau
  2. ada sebuah pergeseran index yang berputar (cyclic shift) sehingga kondisi yang pertama terpenuhi

Coba Anda perhatikan sebuah grafik barisan bitonic di bawah ini, dia akan memiliki paling banyak ‘satu puncak’ dan ‘satu lembah’. Jangan lupa bahwa barisan ini ‘memutar’ dari elemen yang terakhir kembali ke elemen yang pertama.

openstat_bitonic_merge_10-5

10-5

Sebuah langkah compare-exchange bisa memecah sebuah barisan bitonic tunggal menjadi 2 (dua) buah barisan bitonic, sebagaimana disebutkan dalam Lemma 10.1 berikut ini :

Lemma 10.1 Jika n adalah genap, maka n/2 buah comparator cukup untuk mentransformasikan sebuah barisan bitonic dengan n buah nilai, \( a_0, a_1, a_2, \cdots , a_{n-2},a_{n-1}\) menjadi 2 (dua) buah barisan bitonic dengan n/2 buah nilai,

\( min(a_0,a_{n/2}), min(a_1,a_{n/2+1}),\cdots ,min(a_{n/2-1},a_{n-1})\)
dan
\( max(a_0,a_{n/2}), max(a_1,a_{n/2+1}),\cdots ,max(a_{n/2-1},a_{n-1})\)

Sedemikian sehingga tidak ada nilai yang terletak pada barisan yang pertama adalah lebih besar dari nilai yang terletak pada barisan yang kedua.

Anggaplah kita memiliki sebuah barisan bitonic, sebuah langkah  compare-exchange membagi barisan ini menjadi dua buah barisan bitonic yang sama panjang yaitu n/2 . Dengan melakukan langkah ini secara rekursif akan menghasilkan barisan yang terurut.

 

10-8

10-8

Atau dengan kata lain, jika diberikan sebuah barisan bitonic dengan panjang n = 2k , dimana k > 0, maka k buah langkah compare-exchange cukup untuk menghasilkan barisan yang terurut

Berikut ini adalah contoh mengurutkan barisan dengan panjang 16 yang di jalankan dalam 4 (empat) langkah compare-exchange.

openstat_bitonic_merge_10-10

10-10

10-12

 

 

 

Bitonic Merge pada Shuffle-Exchange Nework

Teorema 10.6. Sebuah daftar dengan n = 2 buah elemen yang tidak terurut dan dapat diurutkan dalam waktu \inline \Theta (log^{2}n) dengan jaringan \inline 2^{k-1}[k(k-1)+1] komparator menggunakan skema interkoneksi  shuffle-exchange secara exclusive (Stone, 1971)

openstat_bitonic_merge_10-14

Stone menyadari bahwa Pengurut Bitonic milik Batcher ini selalu membandingkan elemen-elemen dengan index yang berbeda tepat 1 bit pada bentuk biner nya. Dengan perfect shuffle, akan memperjalankan elemen pada posisi ke posisi yang ditemukan., dengan memutar tampilan biner dari satu bit ke kiri. Dengan demikian dua buah index yang tampilan biner nya berbeda tepat 1 bit dapat diperjalankan ke komparator yang sama dengan cara melakukan sejumlah shuffle tertentu.

Gambar berikut ini menunjukkan bagaimana bitonic merge dapat diimplementasi dengan menggunakan skema interkoneksi shuffle-exchange secara ekslusif.

Gambar 10-13

Gambar 10-13

 

Sangat berbeda dengan Gambar 10-10, dimana interkoneksi antar komparator nya bervariasi dari tahap ke tahap lainnya. Keseluruhan proses pengurutan dapat diselesaikan dengan menggunakan interkoneksi shuffle-exchange. Kedua algoritma membutuhkan bitonic merge untuk mengurutkan 2k elemen, tetapi ketika merge ke-di algoritma Batcher membutuhkan langkah untuk total k(k+1)/2, 

 

openstat_bitonic_merge_10-14

Algoritma

openstat_bitonic_merge_10-16 ‘

 

openstat_bitonic_merge_10-17

Memasang Eclipse di Ubuntu

eclipse

Cara memasang Eclipse di Ubuntu (Saya menggunakan Ubuntu 12.10) pada prinsip nya sangat mudah, sama dengan aplikasi-aplikasi lainnya di Ubuntu, caranya : Aktifkan Ubuntu Software Center, lalu pilih Eclipse dan Install. DONE !

Hanya saja versi Eclipse terakhir yang tersedia di repository Ubuntu 12.10 adalah eclipse-platform 3.8.0~rc4-1ubuntu1. Sehingga jika Anda ingin mendapatkan versi terakhir yaitu Juno 4.2.2 SR2, Anda perlu sedikit usaha dengan mendownload dari http://www.eclipse.org/downloads/ lalu pilih yang sesuai dengan platform (OS) yang Anda gunakan.

Saya sarankan kita mulai dari Eclipse yang paling standard yaitu Eclipse Classic 4.2.2, 182 MB. Berhubung file nya cukup besar, jangan lupa siapkan kopi dan snack untuk menikmati penantian downloading nya 🙂

Anda akan mendapatkan file eclipse-SDK-4.2.2-linux-gtk.tar.gz , kemudian extract dengan extract tools yang Anda sukai. Kalau saya lebih memilih menggunakan Nautilus yaitu sebuah File Manager standard dari Gnome yang default terpasang di Ubuntu. Caranya praktis, tinggal klik-kanan, lalu Extract Here, selesai ! 🙂

Tidak ada proses instalasi, tetapi dengan catatan bahwa Java sudah terinstall dengan baik di Ubuntu Anda. Saat tulisan ini dibuat saya menggunakan OpenJDK Java 7 Runtime.

Hasil extract eclipse-SDK-4.2.2-linux-gtk.tar.gz akan menghasilkan sebuah folder Eclipse. Masuklah ke dalamnya lalu jalankan file eclipse yang merupakan executable file. Done !Selanjutkan Anda akan diminta menentukan direktory kerja (workspace) nya ada dimana.

eclipse2

Jika ingin lebih mudah dan nyaman dalam mengaktifkan eclipse, silahkan buat Link di menu, atau diletakkan di Desktop.

Mudah bukan 🙂 Selamat menggunakan eclipse.

Menggabungkan Dua Daftar Terurut

Sebuah Algoritma RAM yang optimal akan membuat satu elemen dalam satu waktu. Algoritma ini memerlukan paling banyak n – 1 buah perbandingan untuk menggabungkan 2 (dua) buah Daftar Terurut yang berukuran n/2. Kompleksitas waktunya \inline \Theta (n). Sedangkan algoritma PRAM hanya membutuhkan \inline \Theta (log \: n) dengan sebuah prosesor untuk setiap elemennya. Dua daftar yang sudah terurut yang akan digabungkan ini memiliki elemen-elemen yang saling disjoint.

(Merging Two Sorted List – Quinn)

merging_two_sorted_list_Quinn_1

 

merging_two_sorted_list_Quinn_2

Algoritma Paralel Pewarnaan Graph (Graph Coloring)

Persoalan pewarnaan Graph (Graph Coloring) adalah mencari banyaknya warna yang dapat digunakan untuk mewarnai setiap vertex yang ada pada sebuah Graph sehingga tidak ada vertex yang bertetangga memiliki warna yang sama.

Asumsikan bahwa kita memiliki sebuah Graph dengan buah vertex. Kemudian kita membuat sebuah matriks tetangga (matrik adjacency) n x n dan sebuah bilangan konstan c , sebuah prosessor disiapkan untuk setiap kemungkinan pewarnaan Graph. Contoh,  prosesor \(P(i_0,i_1, … , i_{n-1})\) berkaitan dengan  pewarnaan vertex 0 dengan warna \(i_0\), pewarnaan vertex 1 dengan warna \(i_1\), …  pewarnaan vertex n-1  dengan warna \(i_{n-1}\)

Setiap prosesor pada awalnya mengatur nilainya dalam candidate array berdimensi-n ke nilai 1 (satu). Kemudian menghabiskan waktu \(\Theta (n^{2})\) untuk menentukan apakah untuk pewarnaan pada vertex tertentu dapat dilakukan, dua vertex yang bertetangga telah diberi warna yang sama. Jika A[j,k] = 1 dan \(i_j = i_k\), maka proses pewarnaan salah, karena A[j,k] = 1 berarti vertex j dan k bertetangga, dan \(i_j = i_k\) artinya j dan k memiliki warna yang sama. Jika prosesor mendeteksi pewarnaan yang salah ini, dia akan mengubah nilainya di candidate array menjadi 0. Setelah \(n^2\) kali pembandingan, jika ada elemen di candidate array yang masih bernilai 1, maka pewarnaan dinyatakan benar. Dengan menjumlahkan semua elemen \(c^n\) dalam candidate array, maka kita dapat menyatakan apakah proses pewarnaan dapat dilakukan (lihat gambar dan algoritma di bawah ini)

Kompleksitas : \(\Theta (n^2)\) dengan menggunakan n buah Prosesor.

Contoh Graph Coloring

 

Algoriotma Graph Coloring

 

 

 

 

 

1 4 5 6 7 8 10