;

Miftahush Shirothul Haq

Saudaraku seiman, bukan besar kecilnya tugas yang menjadikan tinggi rendahnya diri kita, melainkan manfaat dari apa yang kita kerjakan buat sekitar kita. Maka senantiasalah bersemangat dalam hal nan penuh kebermanfaatan ini.

Nabi Muhammad SAW

"Jika seseorang bepergian dengan tujuan mencari ilmu, maka Allah akan menjadikan perjalanannya seperti perjalanan menuju surga"

Rabu, 25 Desember 2013

8 Nasehat Nabi Idris As

nasehat nabi Idris As
Nabi Idris a.s adalah keturunan keenam Nabi Adam, putera dari Yazid bin Mihla’iel bin Qoinan bin Anusy bin Syith bin Adam a.s dan dia adalah keturunan pertama yang dikurniakan kenabian setelah Adam dan Syith.
Nabi Idris a.s mengikut sementara riwayat bermukim di Mesir, di mana ia berdakwah untuk agama Allah mengajarkan tauhid dan beribadah menyembah Allah serta memberi beberapa pedoman hidup bagi pengikut-pengikut agar menyelamatkan diri dari siksaan di akhirat dan kehancuran serta kebinasaan di dunia. Ia hidup sampai berusia 82 tahun.

Di antara beberapa nasihat dan kata-kata mutiaranya ialah :-
1. Kesabaran yang disertai iman kepada Allah memebawa kemenangan.
2. Orang yang bahagia adalah orang yang merendah diri dan mengharapkan syafaat dari Tuhannya dengan amal-amal solehnya.
3. Bila kamu memohon sesuatu daripada Allah dan berdoa, maka ikhlaskanlah niatmu. Demikian pula puasa dan sembahnyangmu.
4. Janganlah bersumpah dengan keadaan kamu berdusta dan janganlah menuntut sumpah dari orang yang berdusta agar kamu tidak menyekutui mereka dalam dosa.
5. Bertaatlah kepada raja-rajamu dan tunduklah kepada pembesar-pembesarmu serta penuhilah selalu mulut-mulutmu dengan ucapan syukur dan puji kepada Allah.
6. Janganlah mengiri orang yang mujur nasibnya kerana mereka tidak akan banyak dan lama menikmati kemujuran nasibnya.
7. Barangsiapa melampaui kesederhanaan, tidak suatupun akan memuaskannya.
8. Tanpa membahagi-bahagikan nikmat yang diperolehi, seseorang tidak dapat bersyukur kepada Allah atau nikmat-nikmat yang diperolehinya itu.

Senin, 23 Desember 2013

Hasil Pengumuman CPNS Tahun 2013

Hasil Pengumuman CPNS Tahun 2013

Buat agan-agan yang cari pengumuman silahkan di download disini :
Download











Minggu, 15 Desember 2013

Dynamic Programing (Program Dinamis)

Program Dinamis (dynamic programming):
  • Metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) 
  • sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan.
Pada penyelesaian persoalan dengan metode ini:
  1. terdapat sejumlah berhingga pilihan yang mungkin, 
  2. solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, 
  3. kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.
Tinjau graf di bawah ini. Kita ingin menemukan lintasan terpendek dari 1 ke 10.

Prinsip Optimalitas
  • Pada program dinamis, rangkaian keputusan yang optimal dibuat dengan menggunakan Prinsip Optimalitas. 
  • Prinsip Optimalitas: jika solusi total optimal, maka bagian solusi sampai tahap ke-k juga optimal.
  • Prinsip optimalitas berarti bahwa jika kita bekerja dari tahap k ke tahap k + 1, kita dapat menggunakan hasil optimal dari tahap k tanpa harus kembali ke tahap awal. 
  • ongkos pada tahap k +1 = (ongkos yang dihasilkan pada tahap k ) + (ongkos dari tahap k ke tahap k + 1)
  • Dengan prinsip optimalitas ini dijamin bahwa pengambilan keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya. 
  • Pada metode greedy hanya satu rangkaian keputusan yang pernah dihasilkan, sedangkan pada metode program dinamis lebih dari satu rangkaian keputusan. Hanya rangkaian keputusan yang memenuhi prinsip optimalitas yang akan dihasilkan.
Karakteristik Persoalan Program Dinamis
  • Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya diambil satu keputusan. 
  • Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan tahap tersebut. Secara umum, status merupakan bermacam kemungkinan masukan yang ada pada tahap tersebut.
Graf multitahap (multistage graph). Tiap simpul di dalam graf tersebut menyatakan status, sedangkan V1, V2, … menyatakan tahap.

  • Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.
  • Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily) dengan bertambahnya jumlah tahapan.
  • Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan ongkos pada tahap tersebut.
  • Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan pada tahap sebelumnya. 
  • Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1. 
  • Prinsip optimalitas berlaku pada persoalan tersebut.
Dua pendekatan Pemprograman Dinamis


Misalkan x1, x2, …, xn menyatakan peubah (variable) keputusan yang harus dibuat masing-masing untuk tahap 1, 2, …, n. Maka,

  • Program dinamis maju. Program dinamis bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n. Runtunan peubah keputusan adalah x1, x2, …, xn.
  • Program dinamis mundur. Program dinamis bergerak mulai dari tahap n, terus mundur ke tahap n – 1, n – 2, dan seterusnya sampai tahap 1. Runtunan peubah keputusan adalah xn, xn-1, …, x1
Langkah-langkah Pengembangan Algoritma Program Dinamis
  1. Karakteristikkan struktur solusi optimal. 
  2. Definisikan secara rekursif nilai solusi optimal. 
  3. Hitung nilai solusi optimal secara maju atau mundur. 
  4. Konstruksi solusi optimal.

Contoh Soal :
Lintasan Terpendek (Shortest Path)
• Tentukan lintasan terpendek dari simpul 1 ke simpul 10:

 Penyelesaian dengan Program Dinamis Mundur
  • Misalkan x1, x2, …, x4 adalah simpul-simpul yang dikunjungi pada tahap k (k = 1, 2, 3, 4). 
  • Maka rute yang dilalui adalah 1--> x1-->x2-->x3-->x4 ,yang dalam hal ini x4 = 10.

Pada persoalan ini,
  • Tahap (k) adalah proses memilih simpul tujuan berikutnya (ada 4 tahap). 
  • Status (s) yang berhubungan dengan masing-masing tahap adalah simpul-simpul di dalam graf.


Penganggaran Modal (Capital Budgeting)

Sebuah perusahaan berencana akan mengembangkan usaha (proyek) melalui ketiga buah pabrik (plant) yang dimilikinya. Setiap pabrik diminta mengirimkan proposal (boleh lebih dari satu) ke perusahaan untuk proyek yang akan dikembangkan. Setiap proposal memuat total biaya yang dibutuhkan (c) dan total keuntungan (revenue) yang akan diperoleh (R) dari pengembangan usaha itu. Perusahaan menganggarkan Rp 5 milyar untuk alokasi dana bagi ketiga pabriknya itu.
  • Tabel berikut meringkaskan nilai c dan R untuk masing-masing proposal proyek. Proposal proyek bernilai-nol sengaja dicantumkan yang berarti tidak ada alokasi dana yang diberikan ntuk setiap pabrik. Tujuan Perusahaan adalah memperoleh keuntungan yang maksimum dari pengalokasian dana sebesar Rp 5 milyar tersebut. Selesaikan persoalan ini dengan program dinamis.


Penyelesaian dengan Program Dinamis Maju.

Misalkan,

Rk(pk) = keuntungan dari alternatif pk pada tahap k
fk(xk) = keuntungan optimal dari tahap 1, 2, …, dan k yang diberikan oleh status xk






Kamis, 12 Desember 2013

Pemampaatan Data dengan Algoritma Huffman

  Prinsip kode Huffman:
  - karakter yang paling sering muncul di dalam data dengan kode yang lebih
     pendek;
  - sedangkan karakter yang relatif jarang muncul dikodekan dengan kode yang  lebih panjang.

Fixed-length code 
    Karakter        a          b         c          d         e          f
  ----------------------------------------------------------------
    Frekuensi  45%   13%    12%   16%    9%      5%
    Kode           000    001     010     011    100      111

  ‘bad’ dikodekan sebagai ‘001000011’
  Pengkodean 100.000 karakter membutuhkan 300.000 bit. 

Variable-length code (Huffman code)

  Karakter              a              b           c           d          e            f
  ------------------------------------------------------------------------
    Frekuensi         45%       13%    12%     16%    9%      5%
    Kode                   0            101       100     111    1101   1100

   ‘bad’ dikodekan sebagai ‘1010111 ’
 Pengkodean 100.000 karakter membutuhkan
    (0,45 ´ 1 + 0,13 ´ 3 + 0,12 ´ 3 + 0,16 ´ 3 + 0,09 ´ 4 + 0,05 ´ 4) ´ 100.000 = 224.000 bit

Nisbah pemampatan:
    (300.000 – 224.000)/300.000 ´ 100% = 25,3%


Algoritma Greedy untuk Membentuk Kode Huffman:

1.Baca semua karakter di dalam data untuk menghitung frekuensi kemunculan setiap karakter. Setiap karakter penyusun data dinyatakan sebagai pohon bersimpul tunggal. Setiap simpul di-assign dengan frekuensi kemunculan karakter tersebut.


2.Terapkan strategi greedy sebagai berikut: gabungkan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar. Akar mempunyai frekuensi yang merupakan jumlah dari frekuensi dua buah pohon penyusunnya.


3.Ulangi langkah 2 sampai hanya tersisa satu buah pohon Huffman.

Kompleksitas algoritma Huffman: O(n log n) untuk n karakter.

  Karakter      a    b   c    d   e   f
  Frekuensi  45  13  12  16  9  5

Langkah Langkahnya :

Maka, 

  Karakter              a              b           c           d          e            f
  ------------------------------------------------------------------------
    Frekuensi         45%       13%    12%     16%    9%      5%
    Kode                   0            101       100     111    1101   1100

   ‘bad’ dikodekan sebagai ‘1010111 ’
 Pengkodean 100.000 karakter membutuhkan
    (0,45 ´ 1 + 0,13 ´ 3 + 0,12 ´ 3 + 0,16 ´ 3 + 0,09 ´ 4 + 0,05 ´ 4) ´ 100.000 = 224.000 bit

Nisbah pemampatan:
    (300.000 – 224.000)/300.000 ´ 100% = 25,3%




Alur Algoritma Dijkstra

 Algoritma Dijkstra adalah salah satu metode untuk memecahkan masalah pencarian rute terpendek. Algoritma ini biasanya diterapkan pada sebuah aplikasi pencari rute jalan yang terdekat dari suatu daerah ke daerah lainnya.

Untuk bisa menerapkan algoritma ini dibutuhkan beberapa data yang harus disiapkan, yaitu :
  1. Beberapa Titik/simpul/daerah, titik/simpul/daerah yang bisa dijangkau secara langsung, dan juga jarak antara mereka.
  2. Titik/simpul/daerah awal.
  3. Titik/simpul/daerah tujuan.
Jika dicontohkan dengan gambar grafik akan seperti ini :

      Titik A adalah titik awal dan titik F adalah titik tujuan. Kemudian kita akan mencari rute manakah yang harus dilewati dan memilik total jarak yang paling dekat. Untuk bisa mendapatkan rute itu, maka grafik diatas ditambahkan beberapa kotak untuk mengisi beberapa label. Seperti ini :


      Penjelasannya adalah : 


      Setelah itu ada beberapa langkah yang harus dilakukan, yaitu :
      1. Mengisi kotak label pada titik awal dengan label urutan 1 dan label jarak 0.
      2. Menetapkan label jarak sementara untuk semua titik yang dapat dihubungi langsung dari awal.
      3. Pilih titik dengan label jarak sementara terkecil dan menuliskan nilainya di label jarak, serta tambahkan label urutan-nya.
      4. Masukan label jarak sementara pada setiap titik yang belum memiliki label urutan dan label jarak dan dapat dihubungi langsung dari titik yang baru saja ditulis label jarak dan label urutan-nya. nilainya diisi dengan total dari label jarak dari titik sebelumnya dan jarak dari titik tersebut. Jika label jarak sementara di titik tersebut sudah memiliki nilai, maka harus diganti hanya jika nilai yang baru lebih kecil.
      5. Pilih titik dengan label jarak sementara terkecil dan menggunakan label jarak sementara-nya sebagai label jarak dari titik tersebut, serta tambahkan label urutan-nya.
      6. Ulangi langkah 4 dan 5 hingga titik tujuan memiliki label jarak dan label urutan.
      Maka pada langkah pertama adalah Mengisi kotak label pada titik awal dengan label urutan 1 dan label jarak 0.


      Kemudian mengisi label jarak sementara titik yang dapat dihubungi langsung dari titik A yakni titik BC, dan E.


      Maka yang terpilih adalah titik B karena memiliki label jarak sementara terkecil, dan mengisi nilai label jarak-nya sama dengan label jarak sementara serta memberikan label urutan-nya.


      Selanjutnya mengisi label jarak sementara titik yang belum memiliki label jarak dan dapat dihubungi langsung dari titik B yakni hanya titik C. Label jarak sementara titik C diisi dengan total jarak dari titik A sampai ke titik C yang melalui titik B, yakni 4 + 2 = 6. Namun sebelumnya nilai label jarak sementara-nya titik C sudah ada dan lebih kecil (5), jadi label jarak sementara-nya tidak diganti dan tetap bernilai 5.

      Langkah selanjutnya adalah memilih label jarak sementara terkecil. Karena titik E dan titik C memiliki label jarak sementara yang sama yakni 5, maka bisa memilih salah satu dari kedua titik tersebut. Misalkan titik C yang dipilih, maka berikan label jarak dan label urutan-nya.


      Kemudian titik yang dapat dihubungi secara langsung dari titik dan belum memilik label jarak adalah titik E dan D. Titik E => 5 + 1 = 6, lebih besar jika dibandingkan dengan nilai label jarak sementara yang dimiliki oleh titik sebelumnya (5), maka nilai 6 diabaikan dan tetap diisi 5. Titik D => 5 + 2 = 7, maka langsung saja label jarak sementara titik D diisi dengan 7.


      Selanjutnya titik E terpilih karena memiliki label jarak sementara terkecil. Berikan label jarak dan label urutan-nya.


      Dan titik F dan adalah titik yang dapat dihubungi secara langsung dari titik dan belum memilik label jarak. Titik F => 5 + 3 = 8 dan langsung diisikan kedalam label jarak sementara-nya. sedangkan titik D => 5 + 1 = 6 dan lebih kecil dari pada nilai sebelumnya yaitu 7, maka nilai label jarak sementara-nya diganti dengan 6.


      Maka titik D terpilih karena memiliki label jarak sementara terkecil. Berikan label jarak dan label urutan-nya.


      Titik F adalah titik terakhir yang dapat dihubungi secara langsung dari titik dan belum memilik label jarak serta merupakan titik tujuanTitik F => 6 + 1 = 7 dan lebih kecil dari pada nilai sebelumnya yaitu 8, maka nilai label jarak sementara-nya diganti dengan 7.


      Karena titik F adalah stu-satunya titik terakhir yang belum mempunyai label jarak dan label urutan. maka lansung saja berikan nilai label jarak dan label urutan-nya. Dengan begitu titik tujuan sudah memiliki label jarak dan label jarak sementara.



      Cara mengetahui rute yang harus dilewati

      Untuk mengetahui rute manakah yang harus dilewati adalah dengan menelusuri kembali dari titik tujuan ke titik awal. tuliskan label jarak di samping setiap titik.


      Titik mana sajakah yang dapat dihungi langsung dari titik F ?, Yakni titik dan D. maka, untuk menentukan titik manakah yang seharusnya dilewati adalah dengan cara mengurangkan label jarak titik dengan jaraknya ke titik tujuan serta label jarak titik tersebut. jika hasilnya kurang dari 0 maka titik tersebut tidak layak untuk dilewati, dan jika hasilnya lebih dari 0 serta lebih mendekati 0 maka titik tersebut yang seharusnya dilewati.

      Langkah pertama :


      Langkah kedua :


      Langkah ketiga :


      Dengan begitu diketahui rute yang harus dilewati dan memiliki jarak terpendek dari titik A menuju titik F adalah A -> E -> D -> F



      Demikian alur Algoritma Dijkstra yang saya fahami. semoga bermanfaat bagi kalian yang membaca. -

      Sumber : http://achmad-asrori.blogspot.com/2013/01/algoritma-dijkstra.html#more