## JEPIN
(Jurnal Edukasi dan Penelitian Informatika)
ISSN(e): 2548-9364 / ISSN(p) : 2460-0741

## Studi Komparatif Algoritma Fisher Yates dengan Brute Force pada Permainan Kartu 24
Ricky Imanuel Ndaumanu #1
# Program Studi Teknik Informatika, STMIK Widya Dharma Pontianak Jl. H.O.S Cokroaminoto 445 Pontianak
1 ricky_ndaumanu@ymail.com
Abstrak — Salah  satu  penyelesaian  dari  masalah  optimasi kombinatorial  yang  cukup  popular  dalam  dunia  nyata adalah  dengan  menggunakan  algoritma shuffling, seperti algoritma Brute Force dan algoritma Fisher Yates . Dari studi yang pernah dilakukan dari kedua algoritma tersebut dapat menghasilkan  solusi  yang  optimal.  Kedua  algoritma  dapat memberikan  hasil  nilai  yang  terbaik.  Pada  studi  ini dilakukan  untuk  mengetahui seberapa cepat diantara kedua algoritma  tersebut  mendapatkan  nilai  optimal  dengan  cara menghitung  jumlah  looping  yang  dilakukan  oleh  setiap algoritma  setelah  proses  pengacakan  data.  Sampling  data random yang sama akan tetapi jika diacak dengan cara yang berbeda  akan  memberikan  hasil  looping  berbeda.  Looping yang  rendah  akan  menghasilkan  nilai  yang  lebih  capat  dari looping  yang  tinggi.  Pada  penelitian  ini,  algoritma Brute Force memberikan  hasil  24%  lebih  capat  dari  pada algoritma Fiser Yates.  Prototipe  dari  algoritma Brute  Force dan  algoritma Fisher  Yates untuk  mendapatkan  nilai maksimal di implementasikan pada Games permainan kartu 24.  Permainan  Kartu  24  merupakan  permainan  kartu  yang ideal  dalam  menyimpan  dan  mengacak  kartu.  Penelitian  ini menunjukan  bahwa  Algoritma Brute Force  memberikan hasil  looping  yang  lebih  baik  dari  pada  Algoritma  Fisher Yates.  Implementasi  penelitian  ini  menggunakan  algoritma shuffling berbasis  objek  dengan  menggunakan  bahasa pemprograman  JAVA  SE  8u221  dan  diuji  dengan menggunakan simulasi data aktual dari permainan kartu 24.
Kata kunci — algoritma Brute Force, algoritma Fisher Yates, protototipe, algoritma shuffling

## I. P ENDAHULUAN
Dalam  perkembangan  ilmu  komputer (Computer Science) ,  algoritma  merupakan  salah  satu  topik  yang menarik  untuk  diteliti  lebih  dalam.  Banyak  solusi  yang sudah  dipecahkan  dalam  dunia  CS  khususnya  pembuatan dan penerapan algoritma untuk memecahkan permasalahan  yang  ada.  Permasalahan  yang  sering dihadapi  pada  hampir  setiap  aplikasi  profesional  dan aplikasi  standar  yang  menggunakan  data  untuk  diolah adalah  permasalahan  pengacakan (shuffle) .  Dalam pengelolaan  data,  data  dapat  diacak  dengan  tujuan  yang berbeda  pada  setiap  perangkat  lunak  akan  memberikan hasil  yang  berbeda  pula.  Walaupun  jumlah,  nilai,  dan  isi data  sama  sebelum  dan  sesudah  pengacakan,  hasil  yang
ditampilkan  terlebih  dahulu  akan  menjadikan  algoritma tersebut berbeda antara satu dengan yang lainnya.
Banyak  algoritma  yang  sering  digunakan  dalam langkah  melakukan  pengacakan  antara  lain Fisher Yates , Hash,  LCM (Linear  Congruent  Method), backtracking , dan  algoritma shufling lainnya.  Metode  pengacakan ( shuffling )  yang  digunakan  dalam  penelitian  ini  adalah Fisher Yates ,  diterapkan  dalam  perangkat  lunak permainan kartu 24, dibandingkan dengan algoritma Brute Force .
Permainan  kartu  24  merupakan  permainan  yang  cukup popular  di  lingkungan  Sekolah  Dasar  karena  permainan ini banyak digunakan oleh guru-guru sekolah dasar untuk membantu  peserta  didiknya  dalam  mengasah  logika matematikanya.  Permainan  kartu  24  atau  biasa  dikenal sebagai  24  ®  game  dibuat  oleh  Robert  Sun  pada  tahun 1988  sebagai  salah  satu  media  pembelajaran.  Permainan ini  mulai  berkembang  di  tahun  1990  an  bahkan  telah dilakukan  turnamen  antar  siswa  khusus  nya  di  Afrika Selatan [1].
Pada penelitian sebelumnya, penerapan algoritma Brute Force dapat menyelesaikan masalah dalam pencarian data kebudayaan[2],  pengembangan  aplikasi  menterjemahkan Sandi  Morse  [3],  menemukan  solusi  rubrik,  algoritma Brute Force dapat digunakan untuk salah satu pemecahan masalah  dari  semua  kemungkinan  yang  ada  [4],  serta pencarian  data  operator  pada  permainan  kartu  24[5], Pengacakan  dengan  menggunakan Fisher  Yates dalam implementasi  aplikasi  multimedia  interaktif  pembelajaran tenses bahasa Ingris[6] dan aplikasi game quiz tebak nada Sunda[7],  pengenalan  kosakata  bahasa  Ingris[8],  dan aplikasi  pembelajaran  trigonometri  memberikan  hasil pengacakan  yang  tidak  dapat  ditebak  data  selanjutnya. Dalam  Dengan  demikian  kedua  algoritma  baik  itu Brute Force dan Fisher  Yates  realible untuk  diterapkan  pada permainan kartu 24.
Kartu yang digunakan untuk bermain adalah kartu remi seperti  pada  umumnya  yang  terdiri  atas  52  kartu  yang terbagi  atas  empat  suit  (sekop,  hati,  keriting,  dan  wajik). Masing  masing  suit  terdiri  atas  13  kartu  (As, 2,3,4,5,6,7,8,9,10, Jack, Queen, King). As bernilai 1, Jack bernilai 11, Queen bernilai 12, dan King bernilai 13. Pada awal permainan, moderator mengambil 4 kartu yang telah
diacak  dari  dek  secara  random  kemudian  peserta permainan  akan  menebak  dari  4  kartu  menggunakan operator matematika dasar yaitu penjumlahan, pengurangan,  perkalian,  dan  pembagian.  Permainan berakhir  jika  salah  satu  dari  peserta  dapat  menebak bagaimana  membuat  nilai-nilai  dari  4  kartu  yang diberikan menjadi 24. Pemain yang paling cepat menebak bagaimana  urutan  kartu  dan  operasinya  dinyatakan sebagai pemenangnya [5].
Tujuan  penulisan  makalah  ini  adalah  membandingkan metode Brute Force dan  dengan  metode  pengacakan Fisher Yates dalam memberikan hasil dengan nilai terbaik dalam  waktu  yang  cepat.  Kecepatan  didapat  dengan  cara melihat  dari  kumpulan  data  operator  aritmatika  yang disimpan  dalam Generik  List ,  digunakan  dan  dihitung hasilnya  berdasarkan  kartu  yang  dibagikan.  Jika ditemukan nilai yang maksimal maka akan mengembalikan index dari kumpulan data sersebut. Paling kecil  index  maka  akan  semakin  cepat  hasil  ditemukan dalam  data  operator  baik  itu  menggunakan  algoritma Brute Force atau  juga  menggunakan  algoritma Fisher Yates . Nilai yang yang digunakan antara 0 sampai dengan 24. Nilai  yang terbaik adalah nilai  yang sama dengan 24. Apabila  nilai  melebihi  24  maka  peserta  dianggap  gugur [9].

## II. M ETODE
Metode  yang  digunakan  dalam  penelitian  ini  adalah Brute Force dan Fisher Yates .  Kedua  metode  ini  biasa digunakan  dalam  pencarian  untuk  mendapatkan  nilai secara  optimal.  Pada  peneliatian  ini,  kedua  metode  diatas digunakan untuk mencari operator dan mendapatkan hasil nilai 24.
Adapun  objek  pengumpulan  data  yang  digunakan adalah 4 kartu dari populasi satu dek kartu dengan jumlah total  52  kartu.  Simulasi  yang  dilakukan  adalah  dengan menggunakan bahasa pemprograman berbasis objek JAVA SE 8u221 dalam bentuk model permainan game kartu 24. Untuk  merancang  dan  menganalisis  sistem  yang  baik, diperlukan  suatu  metode  yang  sering  digunakan. Penulismenggunakan  metode  RAD (Rapid  Application Development) .  Model  RAD  memiliki  empat  fase  yaitu faseperencanaan  syarat-syarat,  fase  perancangan,  fase konstruksi,  dan  fase  pelaksanaan.  Berikut  adalah penjelasan masing-masing fase dalam penelitian ini.

## A. Fase Perencanaan Syarat-Syarat
1)  Fase Perencanaan Syarat-Syarat: Aturan permainan secara umum sama seperti permainan kartu 24 dimana  yang  dapat  menebak  nilai  24  terlebih  dahulu adalah  pemenangnya.  Pada  penelitian  ini,  yang  bermain adalah kedua algoritma yaitu Brute Force (BF) dan Fisher Yates  (FY)  yang  masing-masing  diberikan  4  kartu  yang sama  dan  masing-masing  mempunyai  larik  operator  yang sama.  Oleh  sebab  itu,  mungkin  saja  ke  dua  algoritma dapat  menghasilkan  nilai  yang  sama  akan  tetapi  posisi
index  lariknya  berbeda.  Pemain  yang  memiliki  index terkecil adalah pemenangnya.

## Strategi Permainan Kartu
Ada  berapa  strategi  yang  dapat  digunakan  pada permainan kartu 24 ini, yaitu:

##  Menentukan  posisi  ke  empat  kartu  yang didapatkan
Posisi  kartu  sangat  menentukan  hasil.  Untuk menentukan  posisi  kartu  dibutuhkan  permutasi Heap.  Kartu  A  dan  kartu  B  memiliki  kombinasi  = {AB, BA}. Jika nilai A sama dengan 5 dan B sama dengan  4  maka  dengan  menggunakan  operator pengurangan (‘-‘)  memberikan  hasil  yang  berbeda untuk posisi kartu yang berbeda. A – B = 1 dan B – A = -1.
 Mengganti operator jika hasil tidak mendapatkan hasil yang sesuai.
Jika  operator  yang  digunakan  untuk  menghitung adalah “ + + +” tidak mendapatkan hasil 24,  maka akan  diganti  dengan  operator  yang  lainnya  seperti “  +  +  -  “  atau  “  +  +    x  “  atau  operator  lainnya dalam koleksi larik operator.

## B. Fase Perancangan
Perancangan  proses  yang  digunaakan  dalam  sistem adalah  dengan  menggunakan  UML (Unified  Modeling Language) dengan  pemodelan  diagram usecase , activity , sequence ,  dan  diagram  kelas.  Data  yang  digunakan  tidak disimpan  dalam database akan  tetapi  disimpan  dalam koleksi  dari  larik  yang  berupa object .  Data  operator disimpan dalam larik operator.

## C. Fase Konstruksi
Pada tahap ini dilakukan pembuatan program terhadap rancangan-rancangan yang telah didefinisikan. Pembuatan program yang dilakukan menggunakan bahasa pemrograman  Java  sdk  1.8.0.  Fase  konstruksi  membuat sistem  yang  melingkupi  input,  proses,  dan  output.  Input data  yang  digunakan  adalah  koleksi  larik,  prosess  yang dilakukan  adalah  menggunakan  algoritma Brute Force atau  algoritma Fisher yates untuk  memasukan  semua kemungkinan operasi yang digunakan. Output adalah hasil dari  perhitungan,  operasi  yang  digunakan,  dan  berapa cepat algoritma tersebut menampilkan hasil yang terbaik.

## D. Fase Pelaksanaan
Pada  fase  pelaksanaan,  sistem  diuji  cobakan, dijalankan,  dan  direkam index dari  kedua  algoritma  agar diketahui  nilai  yang  tercepat  mendapatkan  hasil  dari kedua algoritma tersebut.
Proses  implementasi  dalam  alur  aplikasi  yang digunakan  untuk  melakukan  penelitian  dapat  dilihat  pada flow diagram pada Gambar 1 berikut ini:
Gambar. 1 Flow diagram
Proses Flow Diagram  yang  dilakukan  dalam  sistem pada Gambar 1 antara lain:
1) Kartu : Objek kartu yang sudah ada dalam sistem sudah ditetapkan sebanyak 52 kartu.
2) Acak Kartu: Kartu diacak atau di shuffle dengan menggunakan algoritma Fisher Yates.
3) Bagikan  4  kartu: Koleksi  kartu  membagikan  4 kartu,  Kemudian  kartu  melakukan  permutasi  dengan menggunakan  heap  permutasi  [2]  seperti  pada  persamaan di bawah ini:
(1)
Ilustrasi hasil pemutasi dilihat pada Gambar 2 berikut ini :

## Gambar. 2 Ilustrasi heap permutation – 4 data
Data yang diberikan adalah 4 kartu yang diumpamakan sebagai  kartu  pertama  adalah  A,  kedua  adalah  B,  ketiga adalah  C,  dan  keempat  adalah  D.  Permutasi  yang dihasilkan seperti pada Gambar 3 berikut ini:

## Gambar. 3 Hasil permutation
4) Get  operator:  Get  operator merupakan  proses untuk  mendapatkaan  data  operator.  Operator  yang terdaftar dalam larik operator adalah seperti pada  Gambar 4 berikut ini:
Gambar. 4 Operator 5) Penerapan Algoritma: Algoritma yang
digunakan  dalam  menggunakan  dua  metode  ini  adalah Brute Force dan Fisher Yates .
 Algoritma Brute Force
Brute Force merupakan  algoritma  yang  dapat memecahkan  permasalahan  dengan  sederhana  ( simple ), langsung,  dan  jelas.  Algoritma Brute Frorce melakukan pendekatan  yang  lempang (straight-forward) dalam memecahkan  suatu  masalah  oleh  sebab  itu  algoritma Brute  Force  sering  sekali  disebut  dengan  algoritma naïf ( Naïve  algorithm )  [10].  Algoritma Brute  Force dapat digunakan  untuk  memecahkan  hampir  sebagian  besar permasalahan  yang  ada  karena  memasukan  dan  mencoba semua  isi  dalam  suatu  data  koleksi  tanpa  menggunakan cara-cara  khusus.  Teratur,  sederhana  dan  mudah dimengerti  adalah  salah  satu  kelebihan  dari algoritma Brute  Force [2][5]. Psudocode algoritma Brute  Force dapat dilihat pada Gambar 5 berikut ini:
Gambar. 5 Psudocode algoritma Brute Force
 Algoritma Fisher Yates
Fisher Yates pertama pertama kali diperkenalkan pada tahun  1938  dan  mulai  dipopulerkan  pada  tahun  1948. Sejak  itu  banyak  varian  dari  implementasi  algoritma Fisher  Yates untuk  memperbarui  algoritma  tersebut  [6]. Algoritma Fisher  Yates merupakan  salah  satu  algoritma pengacakan (Shuffle) yang  mengacak  data  dalam  koleksi larik  atau array kartu  ataupun  larik  operator.  Algoritma dapat di narasikan sebagai berikut koleksi larik yang berisi objek  kartu  atau  objek  operator  (T)  akan  di looping dari awal  data  sampai  akhir  data.  Selanjutnya  mendapatkan nilai  random  diantara  0  sampai  dengan  panjang  koleksi larik.  Nilai  random  n  yang  didapat  akan  dijadikan index yang  akan  ditukar  dengan  index  pada  posisi  I  [6],[7]. Tampilan  pada  Gambar  6  berikut  ini  adalah psudocode algoritma Fisher Yates :

## Gambar. 6  Psudocode algoritma Fisher Yates
6) Hitung  Hasil: Hasil  yang  didapat  dari  Operator berupa  looping  yang  diperoleh  dari  masing-masing algoritma  diatas.  Nilai  perhitungan  dan  operator  yang memberikan hasil maximal akan ditampilkan.
7) Record:  Proses  record  merupakan  suatu  proses penyimpanan nilai index hasil dari algoritma Brute Force dan  algoritma Fisher  Yates .  Untuk  penerapan  algoritma, penulis  melakukan  pengujian  untuk  satu  dek  kartu sebanyak  13x  percobaan  dan  diulang  sebanyak  10x mendapatkan hasil seperti pada tabel berikut ini:

## III. H ASIL DAN P EMBAHASAN
Hasil  penerapan  Algoritma  merupakan  proses  dimana kartu  yang  diambil  dari  proses  3  diatas  kemudian diterapkan pada operator pada proses 4. Misalkan 4 buah kartu yang diambil adalah  A, B, C, D, dan operator yang digunakan  adalah  +  -  x,  maka  menghubungkan  kartu  dan operator seperti pada persamaan berikut:
Menjadi bentuk : A + B – C x D

## A. Hasil Penerapan Algoritma Brute Force
Brute Force mencoba  semua  operator  dari  yang pertama  sampai  yang  terakhir,  apabila  nilai  sudah mencapai  24,  maka looping akan  memberikan return kartu  beserta  operatornya.  Gambar  7  menampilkan contoh  hasil  perhitungan  yang  dilakukan  oleh algoritma Brute Force .
Gambar. 7 Hasil perhitungan Brute Force
B. Hasil Penerapan Algoritma Fisher Yates
Fisher Yates mengacak  nilai  operator  yang kemudian  dilakukan  proses  penghubungan  kartu  dan operator  yang  sudah  diacak  oleh  algoritma Fisher Yates . Looping juga  akan  memerikan return kartu beserta  operator  jika  nilai  sudah  mencapai  hasil  24. Gambar 8 menampilkan contoh hasil perhitungan yang dilakukan oleh algoritma Fisher Yates .
Gambar. 8 Hasil perhitungan Fisher Yates
C. Hitung Hasil
Proses  hitung  hasil  merupakan  proses  program dijalankan dan dilihat hasil dari kedua algoritma tersebut. Tampilan Aplikasi dapat dilihat pada Gambar 9.

## Gambar. 9  Tampilan Aplikasi
Dalam  satu  dek  kartu  terdapat  52  kartu  dan  setiap percobaan  dibutuhkan  4  kartu.  Total  babak  permainan menjadi 13x permainan.
TABEL I H ASIL R ATA - RATA Algo ritm a Win / 1de k B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 B 9 B 1 0 B 1 1 B 1 2 B 1 3 Rat a- rata
Brut e Forc e 5 2 4 5 2 3 7 2 6 4 9 4 5 4 9 1 9 3 9 4 4 4 9 5 1 35. 153 8
Fish er Yate s 7 1 7 1 2 3 1 4 1 2 4 2 5 5 8 4 5 3 4 1 5 2 6 3 3 2 27. 923 1
Pada  Tabel  1,  Data  diambil  untuk  semua  babak  dan dihitung  rata-rata  babak  dalam  satu  dek.  Dek  yang  lain dicoba  dengan  cara  yang  sama  kemudian  didapat  hasil seperti pada Gambar 10 .
Garis  berwarna  merah  merupakan  percobaan  yang dilakukan oleh FY sedangkan BF berwarna biru. Satu dari sepuluh  kali  percobaan  memberikan  hasil  BF  lebih  baik, akan  tetapi  Sembilan  dari  sepuluh  kali  percobaan menghasilkan  FY  yang  lebih  baik.  Operator  yang  diacak oleh  FY  ternyata  tidak  selalu  memberikan  solusi  yang langsung tepat sasaran. Tidak semua operator memberikan nilai 24, 95% operator memberikan nilai yang kurang dari 24. Algoritma BF selalu memberikan nilai yang berurutan dimulai  dari  operator  yang  termudah,  yaitu  +++  sampai dengan  perator  terakhir  (bagi,  bagi,  bagi).  Operator
terakhir  tidak  selalu  memberikan  nilai  terbaik  bahkan seringkali memberikan nilai yang semakin buruk.

## Gambar. 10  Hasil pengujian rata-rata
Dari  empat  kartu  yang  diberikan  secara  random, diasumsikan  operator  yang  memberikan  nilai  24  adalah operator  yang  ke  25,  algoritma  BF  sudah  jelas memberikan nilai looping ke 25, akan tetapi algoritma YF tidak selalu memberikan nilai yang kurang dari 25. Sering kali  algoritma  YF  memberikan  nilai  looping  yang  lebih dari  25.  Dengan  demikian  YF  selalu  memberikan  nilai looping yang lebih kecil dari pada BF.

## IV. K ESIMPULAN
Pengujian  diatas,  penggunaan  algoritma Brute Force dan Fisher Yates mampu  menyelesaikan  permasalahan dan  menemukan  solusi  yang  tepat  pada  permainan  24. Brute Force mampu  memberikan  solusi  yang  lebih  cepat dari pada Fisher Yates .
Operator  Data  yang  dihitung  dalam  algoritma Brute Force pada  pengujian  ini  memberikan  24%  lebih  cepat dari pada Fisher Yates .

## U CAPAN T ERIMA K ASIH
Pada kesempatan ini penulis mengucapkan terima kasih kepada  civitas  akademika  STMIK  Widya  Dharma Pontianak  atas  segala  dukungan  yang  diberikan  kepada penulis  untuk  melakukan  penelitian  yang  berkenaan dengan  penulisan  ini,  kepada  keluarga  yang  senantiasa mendukung  dan  kepada  teman-teman  semua  atas semangat dan motivasi yang telah diberikan
R EFERENSI
[1] T.  Ann  M.  (2011).  A  Closer  Look  at  the  24  Game.  International Journal  of  Applied  Science  and  Technology.  Vol.1  No.5; September 2011.
[2] Sugiharto. Implementasi Algoritma Brute Force Dalam Pencarian Kebudayaan  Di  Indonesia  Berbasis  Mobile  Application.(2018). Jurnal Buffer Informatika. Volume 4 Nomor 2.
[3] Azlan,  Hafizah,  &  Tugiono.  (2019).  Perancangan  Aplikasi Terjemahan  Sandi  Morse  Dengan  Penerapkan  Algoritma  Brute Force. Sain dan Komputer (SAINTIKOM). Vol. 18, No.2, pp.139- 146. P-ISSN: 1978-6603, E-ISSN: 2615-3475.
[4] G.  Chichi  Rizka.  A.  Ihsan,  &  Munawir.  (2018).  Optimasi Penyelesaian  Permainan  Rubik’s  Cube  Menggunakan  Algoritma
IDA dan Brute Force. Jurnal Infomedia. Vol. 3, No. 1. 1 Juni 2018. P-ISSN: 2527-9858, E-ISSN: 2548-1180.
[5] C.  Evita  (2016).  Makalah  IF2211  Strategi  Algoritma:  Penerapan Algoritma Brute Force pada Permainan Kartu 24 (24 game).
[6] S.  Beki.  &  A.  Dicky.  Implementasi  Algoritma  Fisher  Yates Shuffle  pada  Aplikasi  Multimedia  Interaktif  untuk  Pembelajaran Tenses Bahasa Inggris.(2017). Jurnal Infotronik Vol. 2, No.1
[7] I.  Haditama,  C.  Slamet,  dan  D.  F  Rahman.,  Implementasi Algoritma Fisher-Yates Dan Fuzzy Tsukamoto Dalam Game Kuis Tebak  Nada  Sunda  Berbasis  Android.  (2016).  JOIN  Volume  1.
No1.  Bandung.
[8] D. Romanus. (2019). Metode Pengacakan Algoritma Fisher Yates
Pada  Game  Edukasi  Pengenalan  Kosakata  Bahasa  Ingris.
Information  System  Development  (ISD).  Vol.4,  No.  1  Januari 2019.
[9] Z.  Sofriesilero.  &  K.  Oscar.  Introducing  an  Educational  Tool  for Learning Branch & Bound Strategy. Journal of Infrmation System Engineering and Business Intelegence Vol 3, No.1, April 2017
[10] Ermatita  &  B.  Didik.  Brute  Force  Algorithm  Implementation  on Knowledge Management System Overcoming Heavy Metal of PB and  CD  in  Soil  at  Palm  Oil  Plantation.  International  Journal  of Latest  Trends  in  Engineering  and  Technology.  Vol.  (8)  issue(2), pp.297-301. Maret 2017.