Minggu, 20 November 2011

Algoritma Menentukan Grup Band Yang Diijinkan Latihan (UTS)

Sebuah studio musik membuka layanan penyewaan studio. Studio ini hanya beroperasi dari jam 1 sampai jam 14. Setiap grup band akan menyewa diwajibkan untuk memesan (booking) minimal dua hari sebelumnya, serta diharuskan menuliskan jam mulai dan jam selesai latihan terlebih dahulu pada saat pemesanan. Jam mulai dan jam selesai adalah bilangan bulat. Jumlah permintaan atau pemesanan cukup banyak setiap harinya, sehingga pemilik studio wajib memilih grup band mana saja yang diperbolehkan untuk latihan. Pemilik studio wajib memilih grup band mana saja yang diperbolehkan untuk latihan. Pemilik studio tidak dapat memperbolehkan semua grup band yang telah memesan untuk menggunakan studio, karena satu slot waktu pemesanan hanya boleh digunakan oleh satu grup band pada hari itu. Misalkan dua hari yang lalu terdapat 10 grup band yang telah memesan dengan kondisi sebagai berikut :

Tabel 1
Berdasar kondisi di atas, hari ini si pemilik studio harus memilih grup band mana saja yang diperbolehkan latihan, karena terdapat beberapa slot waktu yang beririsan atau sama.

Solusi

1. Metode Brute Force
  • Metode ini memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas (obvious way).
  • Grup band yang diijinkan masuk adalah grup band yang jam mulainya tidak bertabrakan dengan jam latihan grup band sebelumnya. jadi seleksi nya yaitu: (Syaratnya apabila jam mulai grup band tidak berada pada jam grup band yang diijinkan latihan sebelumnya)
  • Grup Band A diijinkan masuk karena jam mulainya pkl 1 dan selesai pkl 3.
  • Grup Band B diijinkan masuk karena grup band A selesai pkl 3 dan grup band B jam mulainya pkl 3 , sehingga grup ini masih dapat latihan.
  • Grup Band C tidak diijinkan masuk karena grup B selesai pkl 4, sedangkan grup C mulai pkl 2.
  • Grup Band D diijinkan masuk karena grup band B selesai pkl 4 dan grup band D jam mulainya pkl 5, sehingga grup ini masih dapat latihan.
  • Grup Band E diijinkan masuk karena grup band D selesai pkl 7 dan grup band E jam mulainya pkl 8 , sehingga grup ini masih dapat latihan.
  • Grup Band F tidak diijinkan masuk karena grup E selesai pkl 9, sedangkan grup F mulai pkl 7.
  • Grup Band G diijinkan masuk karena grup band E selesai pkl 9 dan grup band G jam mulainya pkl 9 , sehingga grup ini masih dapat latihan. 
  • Grup Band H diijinkan masuk karena grup band G selesai pkl 11 dan grup band H jam mulainya pkl 11 , sehingga grup ini masih dapat latihan. 
  • Grup Band I tidak diijinkan masuk karena grup H selesai pkl 12, sedangkan grup I mulai pkl 9.
  • Grup Band J diijinkan masuk karena grup band H selesai pkl 12 dan grup band J jam mulainya pkl 12 , sehingga grup ini masih dapat latihan. 
Sehingga grup band yang diijinkan masuk ada 7 grup yaitu : A,B,D,E,G,H,J

Penyeleksian juga dapat menggunakan rumus yaitu : jam selesai grup band yang terakhir latihan sebelumnya - jam mulai grup band. apabila hasilnya 0 atau positif maka grup tersebut diijinkan latihan. sedangkan apabila hasilnya negatif. untuk lebih jelas lihat tabel di bawah ini :

Tabel 2 Seleksi Grup Band
2. Metode Greedy
  • Merupakan metode yang paling populer untuk memecahkan persoalan optimasi. 
  • Penyeleksian grup band menggunakan metode ini yaitu dengan cara : 
  1. Cari nilai lama latihan dari setiap grup band yaitu dengan cara mengurangi jam selsai dengan jam mulai dari setiap grup band.
Tabel 3 Lama Latihan

      2. Urutkan dari lama latihan dari yang sebentar (kecil) sampai yang lama (besar).

Tabel 4. Urutan
     3. Seleksi kelayakan setiap grup band dari no 1 sampai no 10 apabila layak maka grup tersebut diijinkan 
         untuk masuk ke studio. Uji kelayakannya yaitu apabila grup band yang akan latihan jam mulai dan jam 
         keluarnya tidak bertabrakan dengan jam mulai dan jam selesai grup band yang lainnya. Sehingga di 
         dapatlah  grup band yang diijinkan masuk, yaitu:

Tabel 5. Hasil Seleksi
Jadi Grup Band yang masuk ke studio ada 7 band yaitu : B,E,H,A,D,G,J



---===Terima Kasih, Semoga Bermanfaat ====---

Minggu, 30 Oktober 2011

Algoritma Menyusun Balok (Quiz I)

Permasalahan

Diketahui Balok yang ditumpuk di bejana A tidak teratur, bagaimana cara memindahkan balok balok tersebut ke Bejana C dengan susunan yang berurut dari kecil ke besar. Tentukan dengan metode-metode algoritma yang ada dengan menjelaskan komponen di bawah ini: 
  1. Himpunan kandidat
  2. Himpunan solusi
  3. Fungsi seleksi 
  4. Fungsi kelayakan
  5. Fungsi Objektif

    Gambar 1. Permasalahan 

1. Himpunan Kandidat
    Himpunan yang berisi elemen pembentuk solusi. Pada kasus ini himpunan kandidatnya adalah

Gambar 2. Himpunan Kandidat
 

2. Himpunan Solusi
    Himpunan yang terpilih sebagai solusi persoalan. pada kasus ini himpunan solusi sama dengan himpunan kandidat, jadi elemen-elemennya sama seperti balok-balok pada bejana C. yaitu

Gambar 3. Himpunan Solusi


3. Fungsi Seleksi
    Fungsi yang memilih kandidat yang paling mungkin untuk mencapai solusi optimal.

4. Fungsi Kelayakan
    Fungsi yang memeriksa apakah suatu kandidat yang dipilih dapat memberikan solusi yang layak. Maksudnya yaitu apakah kandidat tersebut bersama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala yang ada. Pada Kasus ini fungsi kelayakannya salah satunya yaitu :


1. Bandingkan balok paling atas dari bejana A dengan balok paling atas di Bejana C,

 Gambar 4. Membandingkan Balok di A dengan Balok di C
  
2. Jika balok di bejana A lebih besar dari balok di C maka pindahkan Balok C (jika bejana C tidak kosong) ke bejana B dan pindahkan balok A  paling atas itu ke Bejana C.

 Gambar 5. Memindahkan Balok [1] dari A ke C

3. Jika pada saat dibandingkan ternyata Balok dari bejana A lebih kecil dari balok paling atas dari bejana C, maka pindahkan balok A itu ke bejana B.

  Gambar 6. Memindahkan Balok [1] dari C ke B dan Balok [4] dari A ke C
 
 Gambar 7. Memindahkan Balok [2] dari A ke B

Gambar 8. Memindahkan Balok [3] dari A ke B

Gambar 9. Memindahkan Balok [4] dari C ke B dan Balok [5] dari A ke C
 
  Gambar 10. Memindahkan Balok [5] dari C ke B dan Balok [6] dari A ke C

Gambar 11. Memindahkan Balok [3] dari A ke B

4. Lakukan sampai Bejana A kosong.

  Gambar 12. Bejana A Kosong

5. Jika sudah kosong, Bandingkan Balok paling atas di Bejana B dengan Balok paling atas di Bejana C.

6. Jika Balok di Bejana B lebih kecil dari pada Balok di C maka pindahkan balok di B ke bejana C.

Gambar 13. Memindahkan Balok [3] dari B ke C
7. Jika Balok di Bejana B lebih besar dari pada balok di C, maka pindahkan Balok paling atas di bejana C ke bejana A.

  Gambar 14. Memindahkan Balok [3] dari C ke A dan Balok [5] dari B ke C


8. Jika Bejana A tidak kosong, maka Balok di bejana B dibandingkan dengan balok di A.

9. Jika Balok di B lebih besar maka bandingkan dengan balok di C jika lebih kecil maka pindahkan balok tersebut ke Bejana C.

  Gambar 15. Memindahkan Balok [4] dari B ke C
Gambar 16. Memindahkan Balok [3] dari B ke C

10. Jika pada saat balok di B dibandingkan dengan balok di bejana A ternyata Balok di B lebih kecil daripada balok di A maka pindahkan Balok Di A ke bejana C.

Gambar 17. Memindahkan Balok [3] dari A ke C

11. Jika Balok A kosong, maka lakukan cara ke 5 sampai balok di bejana B kosong.
 Gambar 18. Memindahkan Balok [2] dari B ke C

 Gambar 19. Memindahkan Balok [1] dari B ke C

Gambar 20. Hasil

5. Fungsi Objektif
Fungsi yang mengembalikan nilai boolean. True jika himpunan solusi yang sudah tebentuk merupakan solusi yang lengkap; False jika himpunan solusi belum lengkap.Pada kasus ini fungsi objektifnya :
Gambar 21. Fungsi Objektif
   

Selasa, 27 September 2011

Notasi Algoritmik

Algoritma adalah suatu himpunan hingga dari instruksi-instruksi yang secara jelas memperinci langkah-langkah proses pelaksanaan, dalam pemecahan suatu masalah tertentu, atau suatu kelas masalah tertentu, dengan dituntut pula bahwa himpunan instruksi tersebut dapat dilaksanakan secara mekanik (Team Gunadarma :1988).

Dalam suatu penulisan algoritma terkadang kita sulit untuk mengerti dan memahami maksud dari algoritma tersebut. Selain itu juga kita sulit untuk menuliskan algoritmanya. Untuk itu agar mempermudahnya dapat dilakukan notasi – notasi algoritma. Notasi algoritma merupakan rancangan penyelesaian masalah (algoritma) yang dituliskan ke dalam notasi (cara penulisan khusus).

Notasi algoritma yang sering dijumpai ada 3 macam yaitu :
  • Notasi deskriptif, yaitu dengan cara menuliskan langkah-langkah penyelesaian masalah dengan kalimat- kalimat yang jelas dan deskriptif disertai dengan urutan (nomor urut) yang jelas. Selain itu juga Dengan notasi ini, deskripsi setiap langkah dijelaskan dengan bahasa yang jelas. Notasi ini cocok untuk algoritma yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini jelas tidak efektif. Selain itu, pengkonversian notasi algoritma ke notasi bahasa pemrograman cenderung relatif sukar.
          Contoh :

          Algoritma Bilangan_Maksimum
          Diberikan tiga buah bilangan bulat. Carilah bilangan bulat maksimum diantara ketiga bilangan tersebut.

          Deskripsi :
          (1)  baca bilangan 1
          (2)  baca bilangan 2
          (3)  bandingkan bilangan 1 dan bilangan 2, kita ambil yang lebih besar, jika kedua bilangan tersebut
                sama besar, dapat kita ambil bilangan 1, dan sebut bilangan tersebut MAX
          (4)  baca bilangan 3
          (5)  bandingkan MAX dengan bilangan 3, dan pilih yang lebih besar, jika keduanya sama besar, pilih
                 MAX dan sebut bilangan tersebut MAX.
          (6)  keluarkan sebagai output MAX
  • Notasi bagan alir (flow chart), yaitu algoritma menggunakan bagan alir dengan memanfaatkan bentuk-bentuk geometri seperti persegi panjang, jajaran genjang, lingkaran dan sebagainya. Sama halnya dengan notasi deskriptif, notasi ini cocok untuk algoritma yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini jelas tidak efektif. Selain itu, pengkonversian notasi algoritma ke notasi bahasa pemrograman cenderung relatif sukar.
          Contoh :

         Algoritma Bilangan_Maksimum
         Diberikan tiga buah bilangan bulat. Carilah bilangan bulat maksimum diantara ketiga bilangan tersebut.

         Deklarasi :
         Bil1,Bil2,Bil3 : integer {bilangan yang dicari maksimumnya}
         MAX      : integer {variabel bantu}

         Deskripsi :
         Read (Bil1,Bil2)
         If Bil1 >= Bil 2 then
         Bil1 = MAX
         Else Bil2 = MAX
         Read (Bil3)
         If Bil3 >= MAX then
         Bil3 = MAX
         Write (MAX) 
  • Notasi pseudo-code, yaitu notasi algoritma yang praktis dan mirip dengan bahasa pemrograman tingkat tinggi seperti Pascal. Banyak notasi pseudo-code yang digunakan oleh para ahli komputer dan berbeda-beda sehingga tidak ada aturan baku dalam penulisan pseudo-code ini, tetapi yang paling banyak digunakan dalam algoritma pemrograman adalah yang mendekati bahasa pascal. Keuntungan menggunakan notasi pseudo code adalah kemudahan mengkonversinya lebih tepat yang disebut mentranslasi ke notasi bahasa pemrograman, karena terdapat korespondensi antara setiap pseudo code dengan notasi bahasa pemrograman.
          Contoh :

         Algoritma Bilangan_Maksimum
         Diberikan tiga buah bilangan bulat. Carilah bilangan bulat maksimum diantara ketiga bilangan tersebut. 



Sekian dan terima kasih. Semoga bermanfaat untuk para pembaca semuanya. :D