Implementasi Penyelesaian Permainan Rubrik Cube dengan Algoritma Kociemba pada Platform Android
IMPLEMENTASI PENYELESAIAN PERMAINAN RUBIK CUBE
DENGAN ALGORITMA KOCIEMBA PADA PLATFORM
ANDROID
SKRIPSI
TOMMI NIASRI
081402026
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
2015
(2)
IMPLEMENTASI PENYELESAIAN PERMAINAN RUBIK CUBE
DENGAN ALGORITMA KOCIEMBA PADA PLATFORM ANDROID
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar
Sarjana Teknologi Informasi
TOMMI NIASRI
081402026
PROGRAM STUDI TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
2015
(3)
PERSETUJUAN
Judul : IMPLEMENTASI PENYELESAIAN PERMAINAN RUBIK CUBE DENGAN ALGORITMA KOCIEMBA PADA PLATFORM ANDROID
Kategori : SKRIPSI
Nama : TOMMI NIASRI
Nomor Induk Mahasiswa : 081402026
Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI Departemen : TEKNOLOGI INFORMASI
Fakultas : ILMU KOMPUTER DAN
TEKNOLOGIINFORMASI (FASILKOMTI) UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan, Juli 2015 Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
M. AndriBudiman,S.T,M.Comp.Sc,M.E.M Dr.Syahril Efendi ,S.Si,M.I.T NIP 197510082008011001 NIP 196711101996021001
Diketahui/Disetujui oleh
Program Studi S1 Teknologi Informasi Ketua,
M.Anggia Muchtar,S.T, MM.I.T NIP198001102008011010
(4)
PERNYATAAN
IMPLEMENTASI PENYELESAIAN PERMAINAN RUBIK CUBE DENGAN ALGORITMA KOCIEMBA PADA PLATFORM ANDROID
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Juli 2015
Tommi Niasri 081402026
(5)
UCAPAN TERIMA KASIH
Puji dan syukur penulis panjatkan kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi S1 Teknologi Informasi Departemen Teknologi Informasi Universitas Sumatera Utara. Ucapan terima kasih penulis sampaikan kepada Dr.Syahril Efendi ,S.Si,M.I.T. selaku pembimbing satu danM. AndriBudiman,S.T,M.Comp.Sc,M.E.M
selakupermbimbing dua yang telah banyak meluangkan waktunya dalam memberikan masukan-masukan kepada penulis. Ucapan terima kasih juga ditujukan kepada Romi Fadillah Rahmat, B.Comp.Sc., Msc. dan M. Anggia Muchtar, ST., MM.IT., yang telah bersedia menjadi dosen penguji. Ucapan terima kasih juga ditujukan kepada Ketua Departemen Teknologi Informasi, M. Anggia Muchtar, ST., MM.IT. dan, Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, semua dosen serta pegawai TU di Program Studi S1 Teknologi Informasi FASILKOMTI.
Skripsi ini terutama penulis persembahkan untuk kedua orang tua dan keluarga penulis yang telah memberikan dukungan dan motivasi, ayahanda Hazania Zai dan ibunda Sri Kusdiningsih Wijaya yang selalu sabar dalam mendidik penulis. Untuk kakak dan adik penulis, Tyas, Mitha, dan Rayhan yang selalu memberikan dorongan kepada penulis. Terima kasih penulis ucapkan kepada teman-teman TI 08 , 09 , dan 10 yang selalu memberikan dukungan dalam proses pembuatan skripsi ini dan tidak dapat disebutkan satu persatu .Sekali lagi penulis mengucapkan terima kasih kepada semua pihak yang membantu dalam penyelesaian skripsi ini yang tidak dapat disebutkan satu persatu, terima kasih atas ide, saran, dan motivasi yang diberikan. Semoga Allah SWT yang akan membalasnya.
(6)
ABSTRAK
Rubik’s Cube adalah permainan puzzle populer yang merupakan puzzle dengan penjualan tercatat terbesar sepanjang masa , kepopuleran ini tidak didukung oleh penyediaan aplikasi penyelesaian pada platform Android yang sedang berkembang pesat maka sebuah aplikasi penyelesaian perlu dibuat. Algoritma dua fase Kociemba adalah algoritma yang mengaplikasikan Teori Group dalam matematika dan menyelesaikan kubus dengan solusi sub-optimal, merupakan pilihan terbaik menilai keterbatasan resource pada pada perangkat mobile seperti android tidak memungkinkan pencarian brute-force pada 4.3 x 1019 kombinasi yang dimiliki rubik cube. Rubik cube akan direpresentasikan dalam beberapa tingkat dalam bentuk data agar dapat dicari penyelesaiannya.. Solusi yang dihasilkan cukup singkat dibandingkan dengan metode lain seperti layer per layer fridrich method .
(7)
ABSTRACT
Rubik’s Cube is a popular puzzle game with the highest number of sales ever
recorded, unfortunately this popularity is not followed by the availability of rubik’s cube solver in the rapidly developing Android platform and thus author feels the urgency of building one. Kociemba Two Phase Algorithm , an algorithm which applies Group theory in mathematics and gives sub-optimal solution to solve the cube , is considered the best choice for this particular case where the resource limitation of a mobile device such as Android is prohibiting us from doing a brute-foce search on 4.3 x 10 19 combinations of the cube. Rubik’s Cube will be represented in various level form of data so it can be processed to find a solution. The generated solution is short enough when compared to other methods such as layer per layer fridrich method.
Keywords : Android , Rubik’s Cube , Kociemba , TwoPhase, solver , puzzle
(8)
DAFTARISI
Halaman
Persetujuan ii
Pernyataan iii
Ucapan Terima Kasih iv
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel ix
Daftar Gambar x
Bab 1 Pendahuluan 1
1.1. Latar Belakang 1
1.2. Rumusan Masalah 2
1.3. Batasan Masalah 2
1.4. Tujuan Penelitian 2
1.5. Manfaat Penelitian 2
1.6. Metodologi Penelitian 3
1.7. Sistematika Penulisan 4
Bab 2 Landasan Teori 5
2.1. PermainanRubik’s Cube 5
2.1.1. Struktur Kubus 6
2.1.2. Notasi Singmaster 7
2.1.3. Kajian Matematis 9
2.2. Algoritma Kociemba 10
2.3. Android 12
2.3.1. Arsitektur Android 13
a.Applications 13
b.Applicationframework 13
c.Libraries 14
d.Android runtime 15
e.Linux kernel 15
2.3.2. Komponen aplikasi 16
2.3.3. LifeCycle aplikasi Android 17
2.4. Penelitian Terdahulu 19
Bab 3 Analisis dan Perancangan 20
3.1. Analisis 20
(9)
3.1.2. Permutasi dan representasi tingkat facelet 23
3.1.3. Representasi tingkat cubie 27
a.Definisi dari kordinat orientasi corner 30 b.Definisi dari kordinat orientasi edge 31 c.Definisi dari kordinat permutasi corner 32
d.Definisi dari permutasi kordinat 33
3.1.4. Kubus equivalen dan simetri 35
3.2. Gambaran Umum Perancangan 38
3.2.1. Persiapan sistem 38
3.2.2. Persiapan perancangan aplikasi 38
3.2.3. Flowchart aplikasi 39
3.3. Pemodelan analisis 40
3.3.1. Identifikasi use case diagram 40 a.use case pilih warna facelet 42 b.use case pilih manuver 43 c.use case buat kubus random 44 d.use case cari solusi 45 e.use case minimize aplikasi 46 f.use case terima panggilan masuk 47
3.4. Desain Antarmuka 48
Bab 4 Implementasi dan Pengujian 49
4.1. Implementasi 49
4.1.1. Konfigurasi Perangkat Keras. 49
4.1.2. Konfigurasi Perangkat Lunak 49
4.1.3. Eksekusi Aplikasi 50
4.2. Pengujian 53
4.2.1. Pengujian Black box 53
Bab 5 Kesimpulan dan Saran 54
5.1. Kesimpulan 54
5.2. Saran 54
Daftar Pustaka 56
(10)
DAFTAR TABEL
Halaman
Tabel 3.1 Dokumentasi naratif use case pilih warna facelet 42 Tabel 3.2 Dokumentasi naratif use case pilih manuver 43 Tabel 3.3 Dokumentasi naratif use case kubus random 44 Tabel 3.4 Dokumentasi naratif use casecari solusi 45
Tabel 3.5 Dokumentasi naratif use case minimize 46
Tabel 3.6 Dokumentasi naratifuse case terima panggilan masuk 47 Tabel 4.1 Hasil pengujian black box pada aplikasi Rubiks Solver 53
(11)
DAFTAR GAMBAR
Halaman
Gambar 2.1 Susunan standar warna 5
Gambar 2.2 Center ,Corner , Edges secara berturut 6
Gambar 2.3 Arsitektur platform Android 13
Gambar 3.1 Kubus bersih 23
Gambar 3.2 Kubus bersih setelah langkah - F 23
Gambar 3.3 Contoh kubus sebagai permutasi facelet 26
Gambar 3.4 Representasi tingkat cubie 27
Gambar 3.5 Cubie pada posisi awal dengan orientasi yang salah 27
Gambar 3.6 Facelet acuan 28
Gambar 3.7 Kubus acuan setelah manuver - F 29
Gambar 3.8 Equivalen dan simetri 35
Gambar 3.9 Contoh Equivalen 35
Gambar 3.10 Denotasi equivalen dan simetri 36
Gambar 3.11 Kerangka Rubik’s Cube 38
Gambar 3.12 Flowchart dasar Aplikasi 39
Gambar 3.13 Use case diagram Rubiks solver 41
Gambar 3.14 Activity diagram pilih warna facelet 47
Gambar 3.15 Activity diagram pilih manuver 43
Gambar 3.16 Activity diagram kubus random 44
Gambar 3.17 Activity diagram cari solusi 45
Gambar 3.18 Activity diagram minimize aplikasi 46 Gambar 3.19 Activity diagram terima panggilan masuk 47
Gambar 3.20 Antarmuka 48
Gambar 4.1 Tampilan aplikasi 50
Gambar 4.2 Pewarnaan facelet 51
Gambar 4.3 Kubus random sesuai aturan konsistensi 51
Gambar 4.4 Tampilan hasil 52
Gambar 4.5 Sebelum dan sesudah manuver – U 52
(12)
ABSTRAK
Rubik’s Cube adalah permainan puzzle populer yang merupakan puzzle dengan penjualan tercatat terbesar sepanjang masa , kepopuleran ini tidak didukung oleh penyediaan aplikasi penyelesaian pada platform Android yang sedang berkembang pesat maka sebuah aplikasi penyelesaian perlu dibuat. Algoritma dua fase Kociemba adalah algoritma yang mengaplikasikan Teori Group dalam matematika dan menyelesaikan kubus dengan solusi sub-optimal, merupakan pilihan terbaik menilai keterbatasan resource pada pada perangkat mobile seperti android tidak memungkinkan pencarian brute-force pada 4.3 x 1019 kombinasi yang dimiliki rubik cube. Rubik cube akan direpresentasikan dalam beberapa tingkat dalam bentuk data agar dapat dicari penyelesaiannya.. Solusi yang dihasilkan cukup singkat dibandingkan dengan metode lain seperti layer per layer fridrich method .
(13)
ABSTRACT
Rubik’s Cube is a popular puzzle game with the highest number of sales ever
recorded, unfortunately this popularity is not followed by the availability of rubik’s cube solver in the rapidly developing Android platform and thus author feels the urgency of building one. Kociemba Two Phase Algorithm , an algorithm which applies Group theory in mathematics and gives sub-optimal solution to solve the cube , is considered the best choice for this particular case where the resource limitation of a mobile device such as Android is prohibiting us from doing a brute-foce search on 4.3 x 10 19 combinations of the cube. Rubik’s Cube will be represented in various level form of data so it can be processed to find a solution. The generated solution is short enough when compared to other methods such as layer per layer fridrich method.
Keywords : Android , Rubik’s Cube , Kociemba , TwoPhase, solver , puzzle
(14)
BAB 1
PENDAHULUAN
1.1. Latar Belakang
Dengan berkembangnya berbagai teknologi dan kepopuleran mobile device akhir – akhir ini memungkinkan para developer aplikasi yang dulunya di batasi oleh keterbatasan kapasitas hardware untuk membuat berbagai bentuk game dan puzzle untuk mobile platform tersebut , berbagai bentuk permainan puzzle kembali marak berkembang dalam bentuk mobile game , salah satunya adalah rubik cube.
Rubik Cube adalah puzzle kombinasi 3 Dimensi diciptakan pada tahun 1974 oleh
pematung dan profesor arsitektur Hungaria Ernő Rubik (Fotheringham,2007).
Disebut sebagai Magic Cube pada awal pembuatannya, puzzle ini dilisensikan rubik untuk dijual oleh Ideal Toy Corp (Dainith,1994). Dalam Kubus Rubik klasik, masing-masing dari enam permukaan ditutupi oleh sembilan stiker, masing-masing-masing-masing salah satu dari enam warna solid: putih, merah, biru, oranye, hijau, dan kuning. Dalam model yang saat ini dijual, putih berlawanan dengan kuning, biru berlawanan dengan hijau, dan oranye berlawanan dengan merah, dan merah, putih dan biru diatur agar dalam susunan searah jarum jam. Terdapat mekanisme poros internal yang memungkinkan setiap sisi untuk berubah secara independen, sehingga mencampur warna.Teka-teki yang harus dipecahkan adalah setiap sisi harus dikembalikan ke satu warna. Terhitung Januari 2009 , 350 juta buah kubus telah terjual diseluruh dunia (Adams , 2009) , membuktikan bahwa Rubik’s cube adalah puzzle terlaris sepanjang masa.
Dengan besarnya ketertarikan terhadap puzzle ini maka kurangnya ketersediaan aplikasi penyelesaian permainin ini pada platform yang sedang berkembang pesat seperti android sangat disayangkan ,berdasarkan hal ini penulis berniat mengimplementasikan penyelesaian permainan dalam platform android.
(15)
1.2. Rumusan Masalah
Berdasarkan latar belakang yang dijelaskan sebelumnya maka rumusan masalahnya adalah diperlukannya aplikasi penyelesaian permainan rubik cube pada platform
android. .
1.3. Batasan Masalah
Pada tugas akhir ini dilakukan beberapa batasan masalah sebagai berikut :
1. Aplikasi solver yang dibuat hanya akan membantu penyelesaian sub – optimal. 2. Aplikasi terbatas pada penyelesaian rubik 3 x 3 x 3.
3. Aplikasi dibuat dengan menggunakan bahasa Java pada platform Android.
1.4. Tujuan Penelitian
Adapun tujuan dan objektif dari penulisan tugas akhir ini adalah membangun suatu aplikasi penyelesaian rubik cube dengan menerapkan metode Kociemba.
1.5. Manfaat Penelitian
Adapun manfaat dari penelitian ini adalah :
1. Membantu penyelesaian kembali rubik’s cube yang telah teracak
2. Menerapkan pengetahuan dalam logika penyelesaian masalah 3. Dapat menjadi referensi bagi penelitian selanjutnya.
(16)
1.6. Metodologi Penelitian
Metode penelitian yang akan digunakan adalah:
1. Studi Literatur
Pada tahap ini dilakukan dengan membaca dan mempelajari buku-buku referensi, jurnal atau sumber-sumber lain yang berkaitan dengan tugas akhir ini, baik berasal dari buku maupun dari internet.
2. Analisis dan Perancangan Desain Sistem
Pada tahap ini akan dilakukan analisis aplikasi solverdan perancangan aplikasi mengenai skripsi ini, seperti: perancangan aplikasi, dan perancangan antarmuka (interface).
3. Implementasi Sistem
Pada tahap ini akan dilakukan pengkodean dan menerapkan perancangan aplikasi tersebut ke dalam bahasa pemrograman.
4. Pengujian Sistem
Pada tahap ini akan dilakukan pengujian terhadap aplikasi apakah telah memenuhi kriteria atau tidak.
5. Dokumentasi Sistem
Pada tahap ini akan dilakukan penulisan laporan mengenai aplikasi tersebut yang bertujuan untuk menunjukkan hasil penelitianini.
(17)
1.7. Sistematika Penulisan
Sistematika penulisan dari skripsi ini terdiri dari lima bagian utama sebagai berikut:
BAB 1: PENDAHULUAN
Bab ini akan menjelaskan tentang latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.
BAB 2: LANDASAN TEORI
Pada tahap ini akan dilakukan studi tentang segala sesuatu yang berkaitan dengan penelitian ini baik yang berasal dari buku, jurnal, maupun dari internet.
BAB 3: ANALISIS DAN PERANCANGAN
Pada bab ini berisikan analisis terhadap permasalahan dan penyelesaian persoalan pada sistem rekomendasi serta identifikasi kebutuhan perancangan sistem.
BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini berisi implementasi perancangan sistem dari hasil analisis dan perancangan yang sudah dibuat, serta menguji sistem untuk menemukan kelebihan dan kekurangan yang ada pada sistem rekomendasi yang dibuat.
BAB 5: KESIMPULAN DAN SARAN
Bab ini memuat kesimpulan dari keseluruhan uraian bab – bab sebelumnya dan saran - saran yang diajukan untuk pengembangan program selanjutnya.
(18)
BAB 2
LANDASAN TEORI
Pada bab ini akan diuraikan beberapa hal penting berkenaan dengan dasar perancangan aplikasi penyelesaian permainan rubik’s cube dengan metode Kociemba pada platform android . Landasan teori yang diuraikan meliputi dasar permainan
rubik’s cube , penjelasan metode Kociemba , pengembangan aplikasi ,dan platform Android.
Semua dasar teori tentang rubik’s cube , metode Kociemba , dan Android diambil dari buku , jurnal, laporan dan internet..
2.1. Permainan Rubik’s Cube
Kubus Rubik adalah permainan puzzle kombinatorik 3 dimensi , kubus Rubik klasik memiliki pengaturan warna sebagaimana ditunjukkan oleh gambar 2.1 :
(19)
2.1.1 Struktur Kubus
Struktur Kubus Rubik dapat dibagi menjadi tiga macam bagian yaitu : 1. Center (Pusat)
Terdapat 6 bagian center. Setiap kotak center memiliki satu warna tertentu dan tidak dapat merubah posisinya relatif terhadap satu sama lain , Karena itu mereka digunakan sebagai acuan dalam penyelesaian kubus.
2. Corner(Ujung)
Terdapat 8 bagian corner yang memiliki kombinasi dari 3 warna. 3. Edges(Tepi)
Terdapat 12 bagian edges yang memiliki kombinasi 2 warna .
Pembagian Kubus ditunjukkan pada gambar berikut :
Gambar.2.2 Center , Corner , Edges secara berturut (Pochmann, 2008)
(20)
2.1.2 Notasi Singmaster
Kebanyakan pemain kubus rubik 3x3x3 menggunakan notasi gerakan yang dikembangkan oleh David Singmaster untuk menotasi pengurutan gerakan kubus yang disebut “Singmaster Notation” . Bentuk dasarnya mengijinkan algoritma untuk dituliskan dalam sebuah cara dimana gerakan dapat dilakukan tanpa memperhatikan sisi manapun yang diacukan menjadi sisi atas atau bagaimana warna disusun pada kubus tertentu (Joyner,2002).
1. F (Front): Sisi yang langsung menghadap pengguna
2. B (Back): Sisi berlawanan dengan Front
3. U (Up): Sisi diatas Front
4. D (Down): Sisi berlawanan dengan Up, dasar kubus
5. L (Left): Sisi sebelah kiri dari Front
6. R (Right): Sisi sebelah kanan dari Front
7. ƒ (Front two layers): Sisi yang menghadap pengguna dan lapisan tengah yang bersinggungan
8. b (Back two layers): Sisi yang berlawan dengan pengguna dan sisi tengah yang bersinggungan
9. u (Up two layers) : Sisi atas dan lapisan tengah yang bersinggungan
10. d (Down two layers) : Sisi bawah dan lapisan tengah yang bersinggungan
11. l (Left two layers) : Sisi kiri dan lapisan tengah yang bersinggungan
12. r (Right two layers) : Sisi kanan dan lapisan tengah yang bersinggungan
13. x (rotate): Putaran kubus berporos pada R
14. y (rotate): Putaran kubus berporos pada U
(21)
Ketika sebuah simbol prime ( ′ ) mengikuti sebuah huruf maka itu berarti bahwa putaran dilakukan berlawanan arah jarum jam , sementara jika tidak terdapat prime
maka putaran searah jarum jam. Sebuah huruf yang diikuti oleh angka 2 (atau terkadang superscript2) menyatakan 2 kali gerakan atau putaran 180 derajat.
Pengubahan paling umum dari notasi Singmaster yang digunakan sebagai standar
resmi sekarang adalah penggunaan “w” , dari kata “wide” yang berarti lebar daripada
penggunaan huruf kecil untuk menunjukkan gerakan 2 lapisan maka , notasi Rw
adalah samar dengar r .
Untuk metode menggunakan gerakan lapisan tengah (terutama metode corner first ) terdapat tambahan yang diterima secara umum yaitu “MES” dimana huruf M ,E , dan S menyatakan pergerakan lapisan tengah . Ini di gunakan sebagai contoh dalam Algoritma Marc Waterman .
M (Middle): lapisan antara L and R, E (Equator): lapisan antara U and D S (Standing): lapisan antara F and B
(22)
2.1.3 Kajian Matematis Permainan
Kajian Matematis terdapat Kubus rubik adalah sebagai berikut :
Rubik Cube memiliki delapan corner dan dua belas edge . Ada 8 ! ( 40.320 ) cara untuk mengatur corner kubus . Tujuh dapat berorientasi secara independen , dan orientasi kedelapan tergantung pada tujuh sebelumnya , memberikan 37 ( 2.187 ) kemungkinan . Ada 12 ! / 2 ( 239500800 ) cara untuk mengatur edge , karena permutasi genap dari corner menyiratkan permutasi edge juga. ( Ketika pengaturan center juga diperkenankan , seperti yang dijelaskan di bawah ini , aturan adalah bahwa pengaturan gabungan dari corner ,edge , dan center harus menjadi bahkan permutasi . Sebelas edge dapat bergerak secara independen , dengan flip dari kedua belas tergantung pada sebelas sebelumnya yang , memberikan 211 ( 2.048 ) kemungkinan .
{ 8 ! x 37 x ( 12 ! / 2 ) x 211 } = 43.252.003.274.489.856.000
yang kira-kira 4.3 quintillion (Cotten,2009).
Teka-teki ini sering diiklankan sebagai memiliki hanya " miliaran " posisi , karena angka yang lebih besar masih asing bagi banyak orang.
Angka sebelumnya terbatas pada permutasi yang dapat dicapai hanya dengan memutar sisi kubus . Jika kita menganggap permutasi dicapai melalui pembongkaran kubus , nomor menjadi dua belas kali lebih besar :
{ 8! x 38 x 12 ! x 212 } = 519.024.039.293.878.272.000 .
yang kira-kira 519 quintillion kemungkinan susunan potongan-potongan yang membentuk Cube , tetapi hanya satu dari dua belas bagian ini yang sebenarnya bisa dipecahkan . Hal ini karena tidak ada urutan langkah yang akan menukar satu pasang potongan atau memutar corner atau edge kubus tunggal . Jadi ada dua belas kemungkinan set konfigurasi terjangkau , kadang-kadang disebut " semesta " atau " orbit " , di mana Cube dapat ditempatkan dengan pembongkaran dan pemasangan kembali itu .
(23)
2.2Algoritma Kociemba
Kociemba menciptakan algoritma ini untuk memperbaiki algoritma Thistlethwaite pada tahun 1992 .Ia menurunkan jumlah grup perantara menjadi dua:
G0 = ( U, D, L, R, F, B )
G1 = ( U, D, L2, R2, F2, B2 )
G2 ={ 1 }
sebagaimana dengan algoritma Thistlethwaite , ia akan mencari spasi coset dari G1\ G0 yang benar untuk mengelompokkan kubus kedalam grup G1 . Berikutnya dia
mencari solusi optimal untuk Group G1. . Pencarian di G1 \ G0 dan G1 keduanya
dilakukan dengan metode yang senilai dengan IDA*.Pencarian di G1 \ G0 memerlukan
paling banyak 12 giliran dan pencarian di G1 paling banyak 18 giliran , Michael Reid
menunjukkan pada tahun 1995 dengan membuat solusi suboptimal yang membawa kubus ke grup G1 dan mencari solusi pendek di G1 , biasanya akan menghasilkan
solusi keseluruhan yang lebih singkat . Dengan menggunakan algoritma ini solusi biasanya di temukan di bawah 21 gerakan, walaupun tidak ada bukti untuk membuktikan akan selalu menghasilkan hal tersebut.
Uraian berikut ini dimaksudkan untuk memberikan ide dasar tentang bagaimana algoritma ini bekerja.
6 permukaan yang berbeda dari Cube disebut U (p), D (own), R (ight), L (eft), F (ront) dan B (ack). Sementara U menunjukkan seperempat putaran permukaan Up 90 derajat searah jarum jam, U2 menunjukkan 180 putaran derajat dan U' menunjukkan seperempat putaran 90 derajat berlawanan arah jarum jam. Deretan seperti UDR 'D2 dari gerakan Cube disebut manuver.
Jika Anda mengubah permukaan kubus yang telah diselesaikan dan tidak menggunakan gerakan R, R ', L, L', F, F ', B dan B' Anda hanya akan menghasilkan subset tertentu dari semua posisi kubus yang dimungkinkan . Subset ini dilambangkan dengan G1 = <U,D,R2,L2,F2,B2>. Dalam Subset ini, orientasi corner dan edges tidak dapat diubah. Artinya, orientasi edges atau corner di lokasi tertentu selalu sama dan empat sisi di UD-slice (lapisan antara permukaan U dan D) tetap terisolasi di slice itu.
Pada Fase 1, algoritma mencari manuver yang akan mengubah kubus teracak menjadi G1. Artinya, orientasi corner dan edge harus dibatasi dan edge di UD-slice harus ditransfer ke slice itu. Dalam ruang abstrak ini, Gerakan hanya mengubah sumbu
(24)
triple (x, y, z) ke tiga posisi lainnya (x ', y', z '). Semua kubus dari G1 memiliki triplet yang sama (x0, y0, z0) dan ini adalah state yang dituju dalam fase 1.
Untuk menemukan state tujuan ini akan digunakan algoritma pencarian yang disebut iterative deepening A * dengan fungsi heuristic lowerbound (IDA *). Dalam kasus Rubik Cube, ini berarti bahwa pengulangan dilakukan melalui semua manuver yang bertambah panjang. Fungsi heuristik h1 (x, y, z) memperkirakan untuk masing-masing state kubus (x, y, z) berapa jumlah langkah yang diperlukan untuk mencapai state tujuan. Sangat penting bagi fungsi untuk tidak memperkirakan jumlah langkah ini secara berlebihan . Dalam pencarian diperlukan untuk memberikan jumlah pasti langkah yang diperlukan untuk mencapai keadaan tujuan pada Fase 1. Heuristik ini memungkinkan pruning sewaktu membuat maneuver , hal ini penting jika kita tidak ingin menunggu untuk waktu yang sangat lama sebelum state tujuan tercapai. Fungsi heuristik h1 adalah tabel pencarian berbasis memori dan memungkinkan pruning
hingga 12 gerakan . Pada fase 2 algoritma mengembalikan kubus di subgroup G1, hanya menggunakan gerakan dari subkelompok ini. Ini mengembalikan permutasi dari 8 corner, permutasi dari 8 edges permukaan U dan D , dan permutasi dari 4 edges di UD-slice . Fungsi h2 heuristik (a, b, c) hanya memperkirakan jumlah langkah yang diperlukan untuk mencapai goal state, karena ada terlalu banyak elemen yang berbeda dalam G1.
Algoritma ini tidak berhenti ketika sebuah solusi pertama ditemukan , namun terus mencari solusi yang lebih pendek dengan menjalankan fase 2 dari solusi suboptimal dari fase 1. Sebagai contoh, jika solusi pertama memiliki 10 gerakan pada fase 1 yang diikuti oleh 12 gerakan dalam fase 2 , solusi kedua bisa memiliki 11 gerakan pada fase 1 dan hanya 5 gerakan dalam fase 2. panjang manuver di fase 1 meningkat dan panjang manuver di fase 2 menurun. Jika panjang fase 2 mencapai nol, solusinya adalah optimal dan algoritma berhenti.
Dalam implementasi saat ini Algoritma Two-Phase tidak dapat mencari solusi yang optimal secara keseluruhan dari Rubik Cube , bagi yang menginginkan solusi optimal
(25)
2.3.Android
Android merupakan suatu software stack untuk mobile device. Di dalamnya terdapat sistem operasi, middleware, dan key application. Aplikasi pada platform ini dikembangkan dalam bahasa pemrograman java. Android sendiri memiliki banyak fitur diantaranya adalah :
1. Merupakan sebuah Application Framework sehingga programmer dapat menggunakan beberapa fungsi yang telah disediakan.
2. Dalvik virtual machine. Tiap aplikasi dalam Android memiliki instance virtual machine yang dapat bekerja secara efisien dalam lingkungan memori yang terbatas.
3. Integrated browser. Web browser berbasis WebKit engine terdapat pada browser default Android ataupun dapat diintegrasikan dengan aplikasi lain. 4. Optimized graphics. Library grafis 2D yang kaya dan 3D berbasis OpenGL ES
1.0 yang mendukung akselerasi hardware.
5. SQLite. Basis data relasional yang ringan namun sangat powerful.
6. Media Support. Mendukung berbagai format audio, video, dan gambar (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
7. Bluetooth, EDGE, 3G, dan Wifi. Mendukung komunikasi jaringan(tergantung hardware).
8. Kamera, GPS, kompas, dan accelerometer. Mendukung berbagai fitur yang disediakan oleh hardware.
9. Lingkungan pengembangan yang lengkap. Termasuk device emulator,
tools, untuk debugging, profiling, memori dan performa, plugin untuk Eclipse
Integrated Development Environment (IDE).
(26)
2.3.1. Arsitektur android
Android terdiri dari beberapa stack software yang terdiri dari : Applications,
Application Framework, Libraries, Android Runtime dan Kernel Linux. Arsitektur lengkap platform ini dapat dilihat pada gambar 2.3.
Gambar 0.1 Arsitektur platform Android (Zechner, 2011)
a. Applications
Applications merupakan program yang langsung berhubungan dengan user. Baik program yang merupakan bawaan dari Android sendiri maupun program yang dibuat oleh developer menggunakan bahasa pemrograman java. Contoh program bawaan dari platform Android sendiri adalah emailclient, program SMS, calendar, maps, web browser, contact dan sebagainya.
b. Application Framework
Lapisan ini berisi sekumpulan API yang dapat digunakan oleh programmer maupun
(27)
komponen dari Android sendiri. Aplikasi manapun dalam Android dapat berbagi fungsi sehingga aplikasi lain dapat memanfaatkannya.
Aplikasi pada Android disusun atas beberapa komponen :
1. Sekumpulan views. Digunakan untuk mengatur tampilan pada aplikasi. Contohnya adalah lists, grid, text box, button, bahkan embeddable web browser.
2. Contentproviders. Komponen yang mengatur agar aplikasi dapat mengakses
resources dari aplikasi lain (seperti Contacts), atau berbagi data dengan aplikasi lain.
3. Resource manager. Menyediakan akses kepada resource non-code seperti
localized string, dan file layout.
4. Notification manager. Memungkinkan agar suatu aplikasi dapat menampilkan peringatan yang dapat dikustomasi pada status bar.
5. Activity manager. Mengatur siklus aplikasi dan navigasi antar aplikasi yang sedang berjalan.
c. Libraries
Android mendukung beberapa library C/C++yang digunakan pada berbagai komponen Android. Kemampuan ini dapat diakses oleh developer melalui Android
apllication framework. Beberapa library diantaranya adalah : 1. System C library. Implementasi library C standar(libc).
2. Media libraries. Mendukung berbagai format multimedia (termasuk MPEG4, H.264, MP3, AAC, AMR, JPG, PNG).
3. Surface manager. Mengatur akses ke subsistem display. 4. LibWebCore. Engine web browser modern.
5. SGL. Engine grafis 2D.
6. 3D library. Implementasi OpenGL ES 1.0 yang mendukung akselarasi hardware.
7. FreeType. Rendering untuk bitmap dan vektor font.
8. SQLite. Basis data relasional yang sangat kecil namun sangat ampuh.
(28)
d. Android runtime
Tiap aplikasi pada Android memiliki proses nya masing-masing. Tiap aplikasi tersebut memiliki instans dari Dalvik virtual machine (VM). Dalvik virtual machine
dirancang agar suatu perangkat dapat menjalankan beberapa VM secara efisien. Dalvik VM mengeksekusi file dengan format Dalvik executable format (.dex) yang dirancang untuk meminimalkan memoryfootprint.
Dalvik VM berbasis register dan dapat menjalankan kelas-kelas yang dikompilasi dengan bahasa pemrograman java dan ditransformasikan menjadi format .dex. Dalvik VM sendiri bergantung pada kernel Linux untuk fungsi dasarnya, seperti
threading dan manajemen memori secara low-level.
e. Linux kernel
Android menggunakan Kernel Linux versi 2.6 sebagai sistem utama. Fungsi kernel yang digunakan antara lain untuk keamanan, manajemen memori, manajemen proses, manajemen jaringan, dan drivermodel. Kernel juga berfungsi sebagai layer abstrak antara hardware dan lapisan lainnya pada software stack.
(29)
2.3.2. Komponen aplikasi
Komponen aplikasi adalah building block penting dari aplikasi Android. Setiap komponen adalah titik yang berbeda dimana system dapat masuk ke aplikasi. Tidak semua komponen adalah titik masuk yang sebenarnya bagi pengguna, beberapa bergantung pada komponen lain. Namun masing-masing adalah entitasyang unik yang memainkan perannya masing-masing. Setiap komponen adalah building block unik yang membantu mendefinisikan perilaku keseluruhan aplikasi.
Ada empat jenis komponen aplikasi. Setiap jenis memiliki tujuan yang berbeda dan memiliki siklus hidup yang berbeda yang mendefinisikan bagaimana komponen dibuat dan dimusnahkan.
Berikut ini adalah empat jenis komponen aplikasi :
1. Activities, activity dilambangkan dengan sebuah layar dengan antarmukanya. Sebagai contoh, sebuah aplikasi email memiliki activity yang menunjukkan tampilan dari daftar email baru, activity lain untuk membuat pesan, dan
activity lain untuk membaca pesan. Meskipun activities bekerja sama membentuk sebuah aplikasi email, namun masing-masing merupakan element independen. Dengan demikian aplikasi lain dapat memulai salah satu dari activity tersebut (jika aplikasi email mengizinkan). Contohnya adalah aplikasi kamera dapat memulai aktifitas di aplikasi email untuk membuat pesan, agar pengguna dapat berbagi gambar.
2. Services, service adalah komponen yang berjalan di belakang untuk menjalankan operasi yang panjang dan menjalankan kerja proses remote.
Service tidak menyediakan antarmuka bagi pengguna. Sebagai contoh bagaimana sebuah aplikasi pemutar musik dapat berjalan dibelakang saat pengguna sedang membuka aplikasi lain. Komponen lain seperti activity
dapat memulai service, membiarkannya bekerja atau mengikatnya untuk berinteraksi.
3. Content providers, content provider mengatur pembagian data antar aplikasi. Lewat content provider, aplikasi lain dapat membaca ataupun dapat memodifikasi (jika diizinkan) data dari aplikasi lain. Contohnya adalah bagaimana aplikasi chat seperti WhatsApp dapat membaca data kontak
phonebook perangkat Android dimana dia dipasang.
(30)
4. Broadcast receivers, broadcast receiver adalah komponen yang merespon seluruh pengumuman siaran dari sistem. Banyak siaran berasal dari sistem, contohnya siaran yang mengumumkan bahwa layar telah mati atau baterai rendah. Aplikasi juga dapat melakukan siaran seperti misalnya mengumumkan bahwa aplikasi telah selesai melakukan download data dan tersedia untuk digunakan aplikasi lain. Meskipun broadcast receiver tidak memiliki antarmuka tetapi bisa saja komponen ini membuat notfikasi di
status bar untuk memperingati pengguna.
2.3.3. LifeCycle Aplikasi Android
Secara umum setiap aplikasi Android akan berjalan sebagai sebuah proses tersendiri. Hal yang unik dalam Android adalah bahwa masa hidup (life-time) dari sebuah proses tidak dikendalikan sepenuhnya oleh aplikasi, namun ditentukan oleh sistem. Sistem mengendalikan proses dengan pertimbangan aplikasi yang sedang berjalan, kepentingannya bagi pengguna, dan total memori yang tersedia dalam sistem.
Penggunaan seperti activities, services, content providers, dan broadcast receivers sangat berperan dalam menentukan masa hidup dari proses. Cara penggunaan komponen yang salah dapat menyebabkan proses di-kill oleh sistem biarpun sedang berjalan. Sistem juga dapat meng-kill proses jika sistem kehabisan memori. Adapun pertimbangan yang digunakan sistem untuk meng-kill proses adalah dengan menggunakan hirarki kepentingan (importance hierarchy) yang didasari oleh komponen yang sedang berjalan dan state komponen tersebut.
Berikut adalah hirarki kepentingan tersebut terurut menurun :
1. Proses foreground yaitu proses yang dibutuhkan untuk aktivitas yang sedang dilakukan oleh pengguna.
2. Proses visible yaitu proses dengan komponen activity yang tampak oleh pengguna namun tidak sedang berjalan (pause).
3. Proses service yaitu proses dengan komponen service.
4. Proses background yaitu proses dengan komponen activity dan tidak tampak oleh pengguna (stop).
(31)
5. Proses kosong yaitu proses yang sedang tidak aktif berupa proses yang
di-cache untuk meningkatkan performansi.
Jika terdapat lebih dari satu proses yang dapat di-kill maka sistem akan menggunakan algoritma Least Recently Used (LRU), yaitu meng-kill proses yang paling awal digunakan.
(32)
2.4.Penelitian Terdahulu
Beberapa penelitian terdahulu yang telah dilakukan seputar topik ini adalah:
1. Analyzing Human Solving Methods for Rubik’s Cube and similar Puzzles(Pochmann , 2008)
Pada penelitian ini penulis menganalisa berbagai metode yang digunakan manusian untuk menyelesaikan rubik cube dan puzzle lainnya yang mirip tanpa bantuan alat komputasi apapun dan menggunakan hasil analisa tersebut untuk membuat sebuah program penyelesaian rubik cube.
2. Finding Optimal Solutions to Rubik's Cube Using Pattern Databases (Korf ,1997)
Penelitian ini adalah penelitian pertama yang berupaya untuk menemukan solusi optimal untuk beberapa sampel kubus teracak yang sudah ditentukan dengan menggunakan pendekatan komputasional , yaitu dengan
menggunakan algoritma pencarian IDA* pada tabel pencarian dalam Pattern Database .
3. The Group Theoretic Rubik's cube (Cotten ,2009)
Penelitian ini ” membedah” Rubik’s cube pada sisi matematisnya , dimana
pendekatan teori grup digunakan untuk membagi – bagi kubus ke dalam .subgoal tertentu agar penyelesain secara matematis dapat diperlihatkan
(33)
BAB 3
ANALISIS DAN PERANCANGAN
Rubik’s cube adalah puzzle 3 dimensi yang cukup kompleks dalam penyelesaiannya karena terdapat begitu banyak permutasi yang dimungkinkan . Untuk membuat aplikasi solver tentu penulis perlu melakukan analisis untuk merepresentasikan objek 3 dimensi ini menjadi bentuk struktur dan data agar dapat diproses untuk mencari penyelesaiannya.
3.1. Analisis
Pada bab sebelumnya dijelaskan bahwa algoritma Kociemba akan diteraplan sebagai fungsi untuk mencari penyelesaian permainan Rubik’s Cube . Bab ini akan menjelaskan bagaimana algoritma ini di aplikasikan pada perancangan aplikasi solver di platform Android.
3.1.1 Analisis algoritma Kociemba
Herbert Kociemba menggabungkan beberapa ide menjadi sebuah algoritma baru yang sangat efektif dimana algoritma ini mampu memberian solusi sub- optimal dengan cepat. Ide pertamanya dibuat berdasarkan hasil kerja Thistlethwaite , tetapi Kociemba hanya menggunakan dua fase . Fase pertamanya mengubah dari G0ke G1 = <U ,D,
R2, L2, F2, B2>, dan fase keduanya dari G1 ke G2 = I . Jadi setiap fase Kociemba
menggabungkan 2 fase dari Thistlethwaite secara bersamaan. Fase ini jelas terlalu besar untuk diberikan tabel pencarian lengkap (full table) , tetapi dapat dibuatkan tabel
pruning dan menggunakan IDA* untuk menyelesaikan setiap fase. Ide besar kedua adalah terus mencari setelah solusi fase pertama ditemukan , sebagaimana juga dengan algoritma Thistlethwaite , sebuah solusi fase 1 yang berbeda dapat memungkinkan solusi fase 2 yang lebih baik , jadi setelah sebuah solusi ditemukan , solusi fase 1 lainnya dicoba untuk melihat apakah ia akan memberikan solusi fase 2 yang lebih baik dan dengan demikian memberikan solusi keseluruhan yang lebih baik.
(34)
Garis besar dari Algoritma dapat dibuat sebagai pseudocode berikut .Pada intinya adalah dua proses IDA* :
maxLength=9999
function Kociemba ( position p) for depth d from 0 to maxLength Phase1search( p; d )
endfor endfunction
function Phase1search( position p; depth d ) if d=0 then
if subgoal reached and last move was a quarter turn of R, L, F, or B then
Phase2start( p ) endif
elseif d>0 then
if prune1[p]<=d then
for each available move m
Phase1search( result of m applied to p; d-1 ) endfor
endif endif
endfunctionfunction Phase2start ( position p) for depth d from 0 to maxLength - currentDepth Phase2search( p; d )
endfor endfunction
function Phase2search( position p; depth d ) if d=0 then
if solved then
Found a solution!
maxLength = currentDepth-1 endif
elseif d>0 then
if prune2[p]<=d then
for each available move m
Phase2search( result of m applied to p; d-1 ) endfor
endif endif endfunction
(35)
gambaranpseudocode sebelumnya tentu belum mencukupi untuk menjelaskan rangkaian langkah pencarian penyelesaian Rubik’s cube , maka penjelasan akan diperjelas di sub bab berikutnya
(36)
3.1.2.Permutasi dan representasi tingkat facelet
Gambar.3.1 Kubus Bersih(Kociemba,2013)
Apabila kita melihat kubus bersih , kita melihat 6 * 9 facelet. Jika kita menerapkan langkah untuk kubus, maka facelet akan tersusun ulang. Penataan ulang seperti itu disebut permutasi.
Kita menggunakan enam huruf U, R, F, D, B, L untuk menerangkan enam gerakan permukaan 90 ° searah jarum jam. Kami menggunakan misalnya F2 untuk
menunjukkan putaran 180 ° dan F ' untuk menunjukkan putaran 270 ° , yaitu sama dengan putaran 90 °berlawanan arah jarum jam dari permukaan depan.
Jika kita menerapkan misalnya langkah F ke kubus di atas maka kita mendapatkan hasil sebagai berikut:
(37)
Untuk menjelaskan representasi permutasi tersebut, kita hanya akan melihat facelets kuning sejenak. Ada dua cara untuk representasi ini , contoh :
1. Dengan representasi “dibawa ke ”
F1 dibawa ke F3 (F1-> F3), F2-> F6, F3-> F9, F4-> F2, F5-> F5, F6-> F8, F7-> F1, F8-F7-> F4, F9-F7-> F7. Kita bisa menulis
Letak awal F1 F2 F3 F4 F5 F6 F7 F8 F9 Letak setelah dibawa
langkah F
F3 F6 F9 F2 F5 F8 F1 F4 F7
2. Dengan representasi “digantikan oleh”
F1 digantikan oleh F7 (F1 F7), F2 F4, F3 F1, F4 F8, F5 F5, F6 <-F2, F7 <-F9, F8 <-F6, F9 <- F3. Kita bisa menulis
Karena baris pertama dari selalu sama, kita dapat menghilangkan baris ini. Jadi kita bisa menulis hanya
(F3, F6, F9, F2, F5, F8, F1, F4, F7) representasi dari “ dibawa ke” atau (F7, F4, F1, F8, F5, F2, F9, F6, F3) representasi dari “di diganti dengan” .
Dalam kebanyakan kasus kita tidak akan menggunakan bentuk pendek tanpa kotak pemisah di sini demi kejelasan. Kita menggunakan representasi cara pertama pada tingkat facelet, dan cara yang kedua pada tingkat cubie.Dalam sisa bab ini
representasi menggunakan cara pertama “dibawa ke”. Kita mampu mendefinisikan sebuah produk dari dua permutasi. Misalnya :
F1 F2 F3 F4 F5 F6 F7 F8 F9 F2 F1 F6 F3 F5 F4 F8 F7 F9 *
F1 F2 F3 F4 F5 F6 F7 F8 F9 F3 F6 F9 F2 F5 F8 F1 F4 F7 Letak awal F1 F2 F3 F4 F5 F6 F7 F8 F9
Digantikan oleh F7 F4 F1 F8 F5 F2 F9 F6 F3
(38)
=
F1 F2 F3 F4 F5 F6 F7 F8 F9 F6 F3 F8 F9 F5 F2 F4 F1 F7
karena misalnya F1-> F2 oleh permutasi pertama dan F2-> F6 oleh permutasi kedua, jadi kita mendapatkan F1-> F6 sebagain hasil produk.
Perbanyakan permutasi memiliki beberapa kesamaan dengan perkalian umum dengan angka, tapi ada satu perbedaan besar misalnya 3 * 5 = 5 * 3, Anda biasanya tidak dapat menukar urutan dua permutasi.
sebagai contoh kita balik urutan di atas, maka kita memiliki :
F1 F2 F3 F4 F5 F6 F7 F8 F9 F3 F6 F9 F2 F5 F8 F1 F4 F7 *
F1 F2 F3 F4 F5 F6 F7 F8 F9 F2 F1 F6 F3 F5 F4 F8 F7 F9 =
F1 F2 F3 F4 F5 F6 F7 F8 F9 F6 F4 F9 F1 F5 F7 F2 F3 F8
dan hasilnya adalah sesuatu yang sama sekali berbeda. Perkalian dalam permutasi gerakan rubik tidak bersifat komutatif. Istilah lain yang penting adalah permutasi terbalik. Pergunakan langkah F
F1 F2 F3 F4 F5 F6 F7 F8 F9 F3 F6 F9 F2 F5 F8 F1 F4 F7
Dan kali kan dengan inverse nya F’ ( * )
F1 F2 F3 F4 F5 F6 F7 F8 F9 F7 F4 F1 F8 F5 F2 F9 F6 F3
Maka hasilnya
F1 F2 F3 F4 F5 F6 F7 F8 F9 F1 F2 F3 F4 F5 F6 F7 F8 F9
(39)
Dalam hal ini Permutasi terakhir ini tidak menghasilkan apa-apa sama sekali, jadi ketika kita kalikan permutasi dengan kebalikannya, kita mendapatkan I yaitu
permutasi identitas , dalam contoh ini permutasi kedua adalah representansi dari F ', jadi kesimpulannya F * F' = I .
Kita juga dapat memeriksa, bahwa F '* F = I, sehingga dalam kasus khusus ini dimana permutasi dikalikan dengan kebalikannya , perkalian adalah komutatif.
Tidak hanya langkah yang dapat dilihat sebagai permutasi, setiap kubus acak dapat ditulis sebagai permutasi.
Gambar.3.3 Contoh kubus sebagi permutasi facelet(Kociemba,2013)
Karena U1-> R3, U2-> L2, U3-> D3, U4-> U8, ... kubus ini memiliki representasi (R3, L2, D3, U8, ...).
Jika Anda menyelesaikan kubus ini, Anda sebenarnya akan mencoba untuk
menemukan permutasi kebalikan dari kubus ini terdiri sebagai produk dari permutasi sesuai dengan gerakan dasar U, U2, U ', R, R2, R' dst . Ingat bahwa produk dari permutasi terbalik memberikan permutasi identitas, dan ini adalah kubus bersih. Algoritma Kociemba mencoba untuk menemukan produk terpendek dari permutasi balik ini.
Tetapi representasi permutasi pada tingkat facelet tidak efektif untuk perhitungan cepat. Ada dua tingkat yang lebih tepat untuk mengatasinya.
(40)
3.1.3 Representasi tingkat cubie
Pada tingkat Cubie, objek yang dipermutasikan bukan lagi facelets , tetapi 12 edges
dan 8 corner .
Gambar.3.4 representasi tingkat cubie(Kociemba,2013)
Pada gambar diatas , corner - URF corner– DFR , edge– FL dan edge– UL telah ditandai .Cubie corner dinamai URF, UFL, ULB, UBR, DFR, DLF, DBL dan DRB. Cubie edges dinamai UR, UF, UL, UB, DR ,DF, DL, DB, FR, FL, BL dan BR.
Dalam tingkat cubie tidak dimungkinkan untuk merepresentasikan sebuah langkah atau kubus teracak dengan sebuah permutasi biasa , hal ini dikarenakan corner dapat terputar dan edges dapat terbalik .
(41)
Ini adalah contoh cubie yang berada pada posisi awalnya , tetapi telah berubah orientasinya , corner– UFL telah berputar searah jarum jam , corner– UBR berputar berlawanan arah jarum jam , edge– DF dan edge– FR terbalik.
Jika corner atau edge tidak berada pad posisi awalnya , maka terdapat banyak cara untuk mendefinisikan orientasi dari cubie , tetapi untuk algoritma Two Phase diperlukan definisi sebagai berikut.
Gambar.3.6 Facelet acuan(Kociemba,2013)
Facelet yang ditandai pada kubus bersih berikan adalah acuan untuk orientasi .
Pada gambar , corner pada posisi URF terputar searah jarum jam relatif terhadap facelet acuan pada kubus bersih , begitu pula corner pada posisi DLF.
Corner pada posisi UFL dan DFR terputar berlawanan arah jarum jam. Edges pada posisi UF, DF, FL dan FR terputar.
(42)
Gambar.3.7 Kubus acuan setelah maneuver F(Kociemba,2013)
Kita menggunakan representasi “digantikan oleh” untuk menuliskan permutasi pada
tingkat cubie. Pada contoh : URF digantikan oleh UFL(URF‹-UFL), UFL‹-DLF, ULB
‹-ULB, UBR‹-UBR, DFR‹-URF, DLF‹-DFR, DBL ‹-DBL, DRB‹-DRB . Kita dapat
menuliskan
URF UFL ULB UBR DFR DLF DBL DRB
UFL DLF ULB UBR URF DFR DBL DRB
dalam kasus ini untuk permutasi corner , tetapi kita juga harus memperhatikan perubahan orientasi pada perubahan tersebut jadi kita menambahkan
F =
URF UFL ULB UBR DFR DLF DBL DRB
c:UFL;o:1 c:DLF;o:2 c:ULB;o:0 c:UBR;o:0 c:URF;o:2 c:DFR;o:1 c:DBL;o:0 c:DRB;o:0
Kita menggunakan “0” bila putarannya tidak berubah , “1” bila berputar searah jarum jam dan “2” untuk putaran berlawanan arah jarum jam . Dengan cara ini kita dapat
menambahkan orientasi dengan cara yang mudah . Permutasi pada edges didefinisikan dengan cara yang mirip “1” untuk orientasi edgeyang terputar dan “0” untuk edge
(43)
3.1.3.Representasi tingkat kordinat
Pada tingkat kordinat kita menjelaskan permutasi dan orientasi dari corner dan edges dengann angka .Tingkat abstraksi ini secara khusus sangat sesuai untuk
mengimplementasikan sebuah algoritma yang cepat untuk menyelesaikan kubus.
a. Definisi dari kordinat orientasicorner
Jika kita mengaplikasikan sebagai contoh manuver – R kepada sebuah kubus bersih maka kita akan mendapatkan :
URF UFL ULB UBR DFR DLF DBL DRB
c:DFR;o: 2 c:UFL;o: 0 c:ULB;o: 0 c:URF;o: 1 c:DRB;o: 1 c:DLF;o: 0 c:DBL;o: 0 c:UBR,o: 2 Orientasi dari ke 8 corner dideskripsikan oleh sebuah nomor dari 0 sampai 2186 (berasal dari batas permutasi corner 3^7 -)
Fungsinya dideskripsikan sebagai berikut :
function CubieCube.CornOriCoord:Word;
var co: Corner; s: Word; begin
s:=0;
for co:= URF to Pred(DRB) do s:= 3*s + PCorn^[co].o; Result:= s;
end;
dalam contoh di atas fungsi ini akan mengkomputasi :
2*3^6 + 0*3^5 + 0*3^4 + 1*3^3 +1*3^2 + 0*3^1 + 0*3^0 = 1494
Ini merupakan 2001100 dalam system angka ternary.Untuk membuat metode ini
bekerja kita harus menuliskan permutasi dalam representasi “digantikan oleh”.Kita
tidak memperhatikan orientasi dari corner-DRB , karena orientasinya telah ditentukan oleh orientasi dari ke 7 corner lainnya . Jumlah dari nilai orientasi corner harus dapat dibagi dengan 3.
(44)
b..Defnisi dari kordinat orientasi edge
Orientasi kordinat edge didefinisikan secara analog. Orientasi dari ke 12 edges dideskripsikan dengal nomor dari 0 sampai 2047 (berasal dari 2^11 - 1).
Fungsinya dideskripsikan sebagai berikut :
function CubieCube.EdgeOriCoord:Word; var ed: Edge; s: Word;
begin s:=0;
for ed:= UR to Pred(BR) do s:= 2*s + PEdge^[ed].o; Result:= s;
end;
Kita menggunakan sistem bilangan biner disini karena edge hanya memiliki 2
permukaan dan dengan begitu 2 macam orientasi . Kita tidak memperhatikan orientasi dari edge-BR karena telah ditentukan oleh orientasi 11 edge lainnya. Jumlah dari seluruh orientasi kordinat edge haruslah genap .
(45)
c.Definisi dari kordinat permutasi corner
Permutasi kordinat corner diberikan dengan nomor dari 0 sampai 40319(8!-1) .Dalam contoh ini , kita menggunakan kembali permutasi dari manuver – R , tapi kali ini tanpa memperhatikan orientasi .
URF UFL ULB UBR DFR DLF DBL DRB
c:DFR c:UFL c:ULB c:URF c:DRB c:DLF c:DBL c:UBR
1 1 3 0 1 1 4
Kita membuat urutan natural dari corner dengan urutan : URF<UFL<ULB<UBR<DFR<DLF<DBL<DRB.
Nomor yang berada di baris ke tiga dibawah corner XXX di baris kedua merupakan pernyataan berapa nomor ke kiri dari kiri corner XXX yang memiliki urutan lebih tinggi dari corner XXX.
Seperti contoh di atas kita memiliki nilai 4 pada corner- UBR. Dari ke 7 corner ke kiri dari corner-UBR , 4 corner memiliki nilai urutan yang lebih tinggi yaitu
DFR,DLF,DBL,DRB.
Kita membangun permutasi kordinat dengan nomor dari baris ketiga.
1*1! + 1*2! + 3*3! + 0*4! + 1*5! + 1*6! + 4*7! = 21021
Jadi kita menggunakan sistem dengan basis variabel disini. ,Fungsinya dideskripsikan sebagai berikut :
function CubieCube.CornPermCoord: Word; var i,j: Corner; x,s: Integer;
begin x:= 0;
for i:= DRB downto Succ(URF) do begin
s:=0;
(46)
for j:= Pred(i) downto URF do begin
if PCorn^[j].c>PCorn^[i].c then Inc(s); end;
x:= (x+s)*Ord(i); end;
Result:=x; end;
d. Definisi dari kordinat permutasi edge
Permutasi kordinat edge dideskripsikan secara analog dengan nomor dari 0 sampai 479001599 (12!-1) .
Fungsinya dideskripsikan sebagai berikut :
function CubieCube.EdgePermCoord: Integer; var i,j: Edge; x,s: Integer;
begin x:= 0;
for i:= BR downto Succ(UR) do begin
s:=0;
for j:= Pred(i) downto UR do begin
if PEdge^[j].e>PEdge^[i].e then Inc(s); end;
x:= (x+s)*Ord(i); end;
Result:=x; end
Kita sekarang dapat mendeskripsikan tiap kubus dengan tuple(x1,x2,x3,x4) yaitu0 <= x1 < 3^7, 0 <= x2< 2^11, 0 <= x3< 8!, 0 <= x4< 12!
(47)
permutasi yang dapat dibuat dengan benar adalah genap dengan begitu kita hanya memiliki 12! *8! /2 permutasi \(dengan tanpa menghiraukan orientasi).
Dengan begitu jumlah dari kubus berbeda adalah :
3^7 * 2^11 * 8! *12! /2 = 43.252.003.274.489.856.000
(48)
3.1.4.Kubus equivalen dan simetri
Gambar 3.8 Equivalen dan simetri(Kociemba,2013)
Jika meliihat ke dua kubus diatas. Mereka terlihat berbeda , tetapi pada dasarnya mereka adalah sama. Apabila kita memutar keseluruhan kubus pada gambar sebelah kiri sebesar 90 derajat dengan sebuah sumbu yang dibuat melalu cubie center permukaan U dan perrmukaan D maka kita akan mendapatkan
Gambar 3.9 Contoh Equivalen(Kociemba,2013)
Kubus diatas , dan bila kita mewarni kembali faceletnya sehingga warna dari permukaan – F kembali merah dll , maka kita akan mendapatkan kubus di gambar sebelah kanan , kita menyebut ke dua kubus tersebut equivalen.
Dikarenakan kubus equivalen memiliki struktur yang sama , jumlah gerakan yang diperlukan untuk menyelesaikannya adalah sama.
(49)
Mendefinisikan kubus equivalen dengan cara pewarnaan kembali facelet bukanlah hal kita ingin lakukan , karena dengan begitu kita kembali ke representasi dasar tingkat
facelet .Kita sebaiknya mendefinisikan equivalensi pada tingkat cubie dengan permutasi . Dengan S_U4 kita mendenotasikan putaran 90 derajat dengan sebuah sumbu yang dibuat melalu cubie center permukaan-U dan perrmukaan-D , kemudian mendenotasikan permutasi yang mendefinisikan kubus sebelah kiri pada gambar 3.8 dengan A dan permutasi untuk kubus sebelah kanan dengan B , maka kita akan mempunyai
Gambar 3.10 Denotasi Equivalen dan Simetri(Kociemba,2013)
B= S_U4-1*A*S_U4 dalam contoh ini . Secara umum dua permutasi A dan B adalah equivalen jika terdapat simetri S dari kubus dari kubus dengan B = S-1*A*S .
Untuk setiap kubus terdapat 48 kubus yang equivalen , karena kubus memiliki 48 simetri , termasuk refleksi., 48 simetri dihasilkan oleh 4 simetri dasar, yaitu :
1. S_URF3, sebuah putaran 120 derajat dari kubus dengan sumbu yang melalui
corner– URF dan corner– DBL
2. S_F2, sebuah putaran 180 derajat dari kubus dengan sumbu yang melewati center – F dan center – B
3. S_U4, sebuah putaran 90 derajat dari kubus dengan sumbu yang melewati center – U dan center - D
4. S_LR2, sebuah refleksi dari bagian slice – RL 48 simetri unik dihasilkan sebagai produk dari :
(S_URF3)x1 * (S_F2)x2 * (S_U4)x3 * (S_LR2)x4dengan x1 dari 0…2, x2 dari 0…1, x3
from 0…3 and x4 dari 0…1. Tuple ini (x1,x2,x3,x4) di simpan sebagai angka natural
dari 0 sampai 47 dengan perhitungan sbb:
16*x1 + 8*x2 + 2*x3 + x4
(50)
Dengan begini tiap simetri memiliki nilai index yang terkait dari 0 sampai 47 (i) , dengan S(i) kita dapat mendenotasikan simetri mana yang berasal dari index tertentu
Dua kubus dengan permutasi A dan B adalah equivalen hanya dan jika hanya adanya index (i) dengan S(i)-1*A*S(i) = B
(51)
(52)
3.2.3. Flowchart aplikasi
Aplikasi dimulai dengan user memilih dari beberapa pilihan , mengisi warna facelet , membuat kubus random , atau megubah keadaan kubus dengan sebuah manuver . Setelah pengisiaan facelet selesai maka konsistensi kubus akan diperiksa berdasarkan beberapa aturan apakah kubus tersebut kubus yang sah atau tidak .
START
Pewarnaan facelet
Pilih warna
Cek Konsistensi Kubus
Random Cube
yes Pencarian penyelesaian
END Tampilkan Hasil Pesan Error
Sesuai Masalah
No Pilh
Manuver
Ubah Facelet Sesuai Manuver
(53)
3.3.Pemodelan Analisis
Pada penelitian ini digunakan UML sebagai bahasa pemodelan dan perancangan aplikasi. Model UML yang digunakan adalah use case diagram ,activity diagram , dan
class diagram .
3.3.1 Identifikasi use case diagram
Untuk mengetahui actor dan use case yang akan digunakan, maka dilakukan identifikasi actor dan identifikasi use case. Setelah mendapatkan actor dan use case
maka use case diagram dapat digambarkan.
Pengidentifikasian actor dalam aplikasi ini dilakukan dengan menjawab pertanyaan-pertanyaan berikut :
1. Siapa yang menggunakan sistem? Jawaban : Pengguna
2. Siapa yang diperlukan untuk melaksanakan fungsi pada sistem? Jawaban : Pengguna
3. Bagaimana pengguna menggunakan sistem?
Jawaban : Pengguna memilih salah satu dari beberapa tombol yang disediakan untuk fungsi tertentu. Saat memulai aplikasi pengguna dapat memilih untuk membuat kubus secara random , mengisi facelet secara manual , atau menggunakan manuver tertentu untuk merubah konten facelet. Saat facelet telah terisi sesuai keinginan pengguna maka pengguna dapat mencari solusi untuk penyelesaian kubus yang telah diperiksa konsistensi dengan interface yang disediakan aplikasi.
Dengan demikian actor yang diperoleh adalah pengguna. Untuk mendapatkan
use case dari pengguna, maka harus ditentukan hal-hal apa saja yang dapat dilakukan pengguna terhadap sistem. Berikut adalah hal-hal yang dapat dilakukan oleh penggun sebagai actor dalam sistem :
1. Merubah warna facelet dengan pilihan tombol warna.
2. Merubah konten facelet dengan mengaplikasikan sebuah manuver dari pilihan yang disediakan.
3. Me-reset seluruh facelet menjadi kosong.
4. Mengisi konten facelet dengan menggunakan fungsi kubus random. 5. Mencari solusi dari kubus yang telah di input .
(54)
Berikut adalah use casediagram yang digambarkan berdasarkan actor dan use case yang diperoleh.
Pilih warna facelet
Pengguna
Pilih Manuver
Kubus Random
Terima panggilan masuk
Resume aplikasi
Minimize aplikasi
<<extend>>
<<extend>> SISTEM
Cari solusi
(55)
a. Use case pilih warnafacelet
Berikut ini merupakan tabel dokumentasi naratif dari use case pilih warnafacelet. Tabel 3.1 Dokumentasi naratif use case pilih warnafacelet
Nama use case Pilih warnafacelet
Aktor Pengguna
Deskripsi Use case ini berfungsi untuk memilih warna bagi pengguna untuk mengisi facelet.
Pre condition Aplikasi dimulai .
Normal flow Kegiatan aktor Respon sistem
Pengguna memilih warnafacelet.
Sistem mengubah isi facelet
sesuai pilihan warna.
Alternative flow Kegiatan aktor Respon sistem
Post condition Aplikasi berakhir jika ditutup pengguna.
Activity diagram untuk use case pilih warna faceletdapat dilihat pada gambar 3.14.
Pengguna Sistem
Pilih warna Ubah isi facelet
[Facelet terisi dan sesuai aturan
konsistensi]
[Kubus selesai]
Gambar 3.14Activitydiagram pilih warna
(56)
b. Use case pilih manuver
Berikut ini merupakan tabel dokumentasi naratif dari use case pilih manuver. Tabel 3.2 Dokumentasi naratif use case pilih manuver
Nama use case Pilih Manuver
Aktor Pengguna
Deskripsi Use case ini berfungsi untuk merubah konten faceletsesusai dengan manuver yang dipilih
Pre condition Aplikasi dimulai .
Normal flow Kegiatan aktor Respon sistem
Pengguna menekan salah satu tombol manuver .
Sistem mengubah isi facelet
sesuai pilihan manuver.
Alternative flow Kegiatan aktor Respon sistem
Post condition Aplikasi berakhir jika ditutup pengguna.
Activity diagram untuk use case pilih manuver dapat dilihat pada gambar 3.15.
Pengguna Sistem
Pilih manuver Ubah isi facelet
[Facelet terisi dan sesuai aturan
konsistensi]
[Kubus selesai]
(57)
c. Use case buat kubus random
Berikut ini merupakan tabel dokumentasi naratif dari use case buat kubus random. Tabel 3.3 Dokumentasi naratif use casekubus random
Nama use case Kubus random
Aktor Pengguna
Deskripsi Use case ini berfungsi untuk men –generate isi facelet untuk membuat kubus yang sesuai aturan konsistensi secara random.
Pre condition Aplikasi dimulai .
Normal flow Kegiatan aktor Respon sistem
Pengguna menekan tombol random.
-Sistem men –generate kubus random
-Sistem mengubah isi facelet
sesuai hasil random.
Alternative flow Kegiatan aktor Respon sistem
Post condition Aplikasi berakhir jika ditutup pengguna.
Activity diagram untuk use casekubus random dapat dilihat pada gambar 3.16.
Pengguna Sistem
Kubus Random Generate Kubus Random
[Kubus selesai]
Ubah isi facelet
Gambar 3.16Activitydiagram kubus random
(58)
d. Use case cari solusi
Berikut ini merupakan tabel dokumentasi naratif dari use casecari solusi .
Tabel 3.4 Dokumentasi naratif use casecari solusi Nama use case Cari solusi
Aktor Pengguna
Deskripsi Use case ini berfungsi untuk memberikan solusi dari kubus yang ditelah dibuat sebelumnya.
Pre condition Facelet terisi sesuai aturan konsistensi kubus.
Normal flow Kegiatan aktor Respon sistem
Pengguna menekan tombol solve.
Sistem menjalankan fungsi pencarian solusi dan memberikan hasil pada window pop-up.
Alternative flow Kegiatan aktor Respon sistem
Post condition Aplikasi berakhir jika ditutup pengguna.
Activity diagram untuk use casecari solusi dapat dilihat pada gambar 3.17.
Pengguna Sistem
Tekan tombol SOLVE
Tampilkan Result window Cek Konsistensi Kubus
Tampilkan Error window
[Sesuai] [Error]
Tutup window
(59)
e.Use caseminimimize aplikasi
Berikut ini merupakan tabel dokumentasi naratif use case minimize aplikasi.
Tabel 3.5 Dokumentasi naratif use case minimize aplikasi Nama use case Minimize aplikasi
Aktor Pengguna
Deskripsi Use caseini berfungsi untuk me-minimize aplikasi
Pre condition Aplikasi telah dibuka
Normal flow Kegiatan aktor Respon sistem
Pengguna menekan home button
Sistem me-minimize aplikasi
Alternative flow Kegiatan aktor Respon sistem
- -
Post condition Jika aplikasi dibuka kembali aplikasi dilanjutkan pada kondisi terakhir yang dibuka
Activity diagram untuk use case minimize aplikasi dapat dilihat pada gambar 3.18.
Pengguna Sistem
Menekan Home button
Aplikasi diminimize
Membuka Kembali aplikasi
Tampilan terakhir ditampilkan
Gambar 3.18Activitydiagramminimize aplikasi
(60)
f. Use caseterima panggilan masuk
Berikut ini merupakan tabel dokumentasi naratif use case terima panggilan masuk. Tabel 3.6 Dokumentasi naratif use caseterima panggilan masuk
Nama use case Terima panggilan masuk
Aktor Pengguna
Deskripsi Use caseini berfungsi untuk menerima panggilan masuk saat aplikasi sedang dibuka
Pre condition Panggilan masuk datang
Normal flow Kegiatan aktor Respon sistem
- Aplikasi langsung di-minimize
dan pengguna dapat menerima panggilan
Alternative flow Kegiatan aktor Respon sistem
- -
Post condition Jika aplikasi dibuka kembali aplikasi dilanjutkan pada layar terakhir yang dibuka
Activity diagram untuk use caseterima panggilan masuk dapat dilihat pada gambar 3.19. Pengguna Sistem Panggilan masuk datang Aplikasi diminimize Permainan dipause Menjawab panggilan Tampilan pause ditampilkan Mengakhiri panggilan
(61)
3.4 . Desain Antarmuka
Bagian ini adalah bagian terakhir dari analisa dan perancangan dimana penulis menerapkan ide, analisa, dan mekanisme permainan untuk membuat tampilan yang
simple dan user friendly.
Karena aplikasi yang ingin dibangun adalah solver yang ringkas penulis memutuskan untuk membuat aplikasi dalam satu interface utama , dibantu dengan antarmuka
window pop-up untuk menunjukkan solusi dan error .Berikut adalah rancangan antarmuka yang dibuat pada low fidelity interface.
Gambar.3.20Desain antarmuka low fidelity
Layar ini adalah satu – satunya layar pada saat aplikasi dibuka berjalan . Dalam interface ini pengguna dapat mengubah kompisisi faceletsesuai keinginan , halaman ini terus memperbaharui state kubus sesuai input dari pengguna , jadi perubahan apapun pada layar ini akan mempengaruhi jalannya aplikasi .
(62)
BAB 4
IMPLEMENTASI DAN PENGUJIAN
Pada bab ini akan dijelaskan tentang pengimplementasian solver rubik’s cube pada platform android, sesuai perancangan yang telah dilakukakn di bab 3 serta melakukan pengujian sistem yang telah dibangun.
4.1.Implementasi
Implementasi aplikasi Rubiks Solver dibuat menggunakn bahasa pemrograman JAVA berbasis Android dengan menggunakan Intergrated Development Envinronment (IDE) Android Studio .Penulis memilih IDE ini karena gratis dan merupakan IDE yang khusus dibuat untuk membuat aplikasi Android .
4.1.1.Konfigurasi Perangkat Keras
Dalam melakukan pengembangan aplikasi Android, kebutuhan terbesar perangkat keras adalah saat melakukan ujicoba ke emulator. Ujicoba ke emulator adalah tahap awal sebelum aplikasi dipasangkan ke perangkat Android. Agar pengujian dapat berjalan dengan lancar, penulis menggunakan spesifikasi perangkat keras sebagai berikut :
1. `Processor Intel Core i5-3470 2. Memory RAM 4 GB
3. Harddisk 640 GB
Untuk perangkat Android yang dipasangkan, penulis menggunakan Samsung Galaxy Duos GT-i9082.
(63)
4.1.2.Konfigurasi Perangkat Lunak
Pada pengimplementasikan aplikas Rubiks Solver , penulis menggunakan sistem operasi Windows 7 32-bit. Perangkat lunak yang digunakan adalah :
1. Android Studio 1.1.0
2. Android SDK 4.2.2(API 21)
3. Java Runtime Environment 1.7.0_65-b19 x86
Untuk perangkat Android digunakan Stock ROM Android 4.2.2
4.1.3 Eksekusi Aplikasi
Berikut akan dijelaskan hasil eksekusi aplikasi Rubiks Sover yang dijalankan pada Samsung Galaxy Duos.
Gambar 4.1 Tampilan Aplikasi
Aplikasi akan menampilkan kerangka kubus kosong pada eksekusi pertama kali , dalam interface pemain dapat melakukan proses pewarnaan facelet dengan memilih palet warna dan merubah faceletmenjadi warna tersebut.
(64)
Gambar.4.2 Pewarnaan Facelet
Pengguna juga dapat menggunakan fungsi random dengan menekan button random untuk mengisi seluruh facelet dengan warna yang sesuai aturan konsistensi kubus , ini berarti random yang tercipta pasti kubus rubik yang dibuat dan dapat dipecahkan dengan manuver yang sah.
Gambar 4.3 Kubus random sesuai aturan konsistensi
Apabila facelet telah terisi dengan pewarnaan yang sesuai aturan konsistensi kubus makapengguna dapat menggunakan tombol solve untuk membuat solusi.
(65)
(66)
4.2.Pengujian
Pada tahap ini akan dilakukan pengujian pada setiap proses yang ada pada aplikasi. Pengujian ini bertujuan untuk mengetahui apakah aplikasi sudah dapat berjalan dengan baik atau tidak , sesuai dengan apa yang diharapkan penulis dan pengguna.
4.2.1. Pengujian black box
Pada pengujian ini akan menguji setiap modul pada aplikasi apakah sudah berjalan sesuai dengan yang diharapkan oleh penulis . Metode yang digunakan untuk menguji adalah metode black box . Metode black box adalah pengujian yang dilakukan dengan cara hanya menjalankan atau mengeksekusi unit atau modul pada aplikasi , kemudian diamati apakah hasil dari unit itu sudah sesusai dengan konsep awal aplikasi yang diinginkan , diamati apakah hasil dari unit itu sudah sesuai dengan konsep awal aplikasi yang diinginkan.
Tabel 4.1 . Hasil pengujian black box pada aplikasi Rubiks Solver
No Sasaran Pengujian Hasil yang diharapkan Hasil uji
1. Tampilan ketika aplikasi
dieksekusi.
Aplikasi menampilkan interface utama
Sesuai
2. Pengguna mewarnai facelet
sesuai palet warna
Warna di facelet berubah sesuai
palet warna
Sesuai
3. Pengguna melakukan sebuah
manuver sesuai pilihan.
Facelet berubah sesuai manuver Sesuai
4. Pengguna menggunakan fungsi
untuk merandom kubus .
Kubus random yang tercipta sesuai aturan konsistensi.
Sesuai
5. Pengguna menggunakan fungsi
penyelesaian terhadap kubus yang sesuai aturan konsistensi.
Aplikasi memberikan solusi dari kubus pada window pop-up .
Sesuai
6. Pengguna menggunakan fungsi
penyelesaian dengan kubus yang tidak sesuai aturan konsistensi.
Aplikasi menampilkan pesar error
sesuai kesalahan yang dibuat dalam pewarnaan facelet kubus.
Sesuai
7. Pengguna menggunakan fungsi
reset
Aplikasi mengosongkan facelet
kembali
(67)
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan pengujian implementasi penyelesaian permainan rubik cube dengan algo ritma Kociemba pada platform android , maka dapat diambil kesimpulan sebagai berikut :
1. Algoritma Kociemba merupakan algoritma yang cukup baik untuk digunakan sebagai algoritma untuk membuat penyelesaian Rubik’s Cube pada Android karena algoritma ini mampu mendapatkan solusi yang singkat dalam waktu yang cepat..
2. Rubik’s Cube merupakan puzzle dengan tingkat kesulitan yang tinggi dan kompleks untuk direpresentasikan sebagai objek dalam pemrograman , banyaknya jumlah permutasi yang dimungkinkan membuat keterbatasan
hardware menjadi halangan untuk menghasilkan solusi optimal.
5.2 Saran
Beberapa saran oleh penulis untuk pengembangan penelitian selanjutnya adalah :
1. Kedepannya input pada aplikasi agar dapat dilakukan dengan cara yang lebih mudah daripada pemberian warna facelet secara manual , mungkin dengan cara scan permukaan dengan kamera .
(68)
2. Tampilan yang masih sederhana ditingkatkan menjadi 3 Dimensi , Animasi manuver ,dan dalam bentuk permainan .
3. Pengaplikasian algorima Kociemba pada puzzle 3 - D lainnya , agar dapat menjadi pembanding performa dengan Rubik’s Cube.
(69)
DAFTAR PUSTAKA
Adams , W.L .2009.The Rubik’s Cube:A Puzzling Success..(Online)
http://web.archive.org/web/20090201200141/http:/www.time.com/time/magazine/arti cle/0,9171,1874509,00.html (01 Februari 2015)
Cotten, A. 2009 . The Group Theoretic Rubik's Cube. Tesis. Eastern Michigan University.
Daintith, John .1994. A Biographical Encyclopedia of Scientists. Bristol: Institute of Physics Pub, pp. 771
Fotheringham, W.2007. Fotheringham's Sporting Pastimes. Anova Books. p. 50.
Joyner, D. 2002. Adventures in group theory: Rubik's Cube, Merlin's machine, and Other Mathematical Toys. Baltimore: Johns Hopkins University Press. p. 7.
Kociemba, H .2013.Cube Solver :The Mathematics Behind Cube Solver.Darmstadt
Korf , R.E..1997. Finding Optimal Solution to Rubik’s Cube Using Pattern Databases
. Proceedings of the Fourteenth National Conference on Artificial Intelligence (AAAI -97), pp. 700–705.
Pochmann , S . 2008. Analyzing Human Solving Methods for Rubik’s Cube and
similar Puzzles. Tesis .Darmstadt University of Technology.
Rockiki , T. , Kociemba , H. , Davidson , M. & Dethridge , J . 2013. The Diameter Of
The Rubik’s Cube Group is Twenty. Society for Industrial and Applied Mathematics
Journal 27(2): 1082 – 1105.
Zechner, M. 2011. Beginning Android Games. New York: Apress.
(1)
51
Gambar.4.2 Pewarnaan Facelet
Pengguna juga dapat menggunakan fungsi random dengan menekan button random untuk mengisi seluruh facelet dengan warna yang sesuai aturan konsistensi kubus , ini berarti random yang tercipta pasti kubus rubik yang dibuat dan dapat dipecahkan dengan manuver yang sah.
Gambar 4.3 Kubus random sesuai aturan konsistensi
Apabila facelet telah terisi dengan pewarnaan yang sesuai aturan konsistensi kubus makapengguna dapat menggunakan tombol solve untuk membuat solusi.
(2)
(3)
53
4.2.Pengujian
Pada tahap ini akan dilakukan pengujian pada setiap proses yang ada pada aplikasi. Pengujian ini bertujuan untuk mengetahui apakah aplikasi sudah dapat berjalan dengan baik atau tidak , sesuai dengan apa yang diharapkan penulis dan pengguna.
4.2.1. Pengujian black box
Pada pengujian ini akan menguji setiap modul pada aplikasi apakah sudah berjalan sesuai dengan yang diharapkan oleh penulis . Metode yang digunakan untuk menguji adalah metode black box . Metode black box adalah pengujian yang dilakukan dengan cara hanya menjalankan atau mengeksekusi unit atau modul pada aplikasi , kemudian diamati apakah hasil dari unit itu sudah sesusai dengan konsep awal aplikasi yang diinginkan , diamati apakah hasil dari unit itu sudah sesuai dengan konsep awal aplikasi yang diinginkan.
Tabel 4.1 . Hasil pengujian black box pada aplikasi Rubiks Solver
No Sasaran Pengujian Hasil yang diharapkan Hasil uji 1. Tampilan ketika aplikasi
dieksekusi.
Aplikasi menampilkan interface utama
Sesuai
2. Pengguna mewarnai facelet sesuai palet warna
Warna di facelet berubah sesuai palet warna
Sesuai
3. Pengguna melakukan sebuah manuver sesuai pilihan.
Facelet berubah sesuai manuver Sesuai
4. Pengguna menggunakan fungsi untuk merandom kubus .
Kubus random yang tercipta sesuai aturan konsistensi.
Sesuai
5. Pengguna menggunakan fungsi penyelesaian terhadap kubus yang sesuai aturan konsistensi.
Aplikasi memberikan solusi dari kubus pada window pop-up .
Sesuai
6. Pengguna menggunakan fungsi penyelesaian dengan kubus yang tidak sesuai aturan konsistensi.
Aplikasi menampilkan pesar error sesuai kesalahan yang dibuat dalam pewarnaan facelet kubus.
Sesuai
7. Pengguna menggunakan fungsi reset
Aplikasi mengosongkan facelet kembali
(4)
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan pengujian implementasi penyelesaian permainan rubik cube dengan algo ritma Kociemba pada platform android , maka dapat diambil kesimpulan sebagai berikut :
1. Algoritma Kociemba merupakan algoritma yang cukup baik untuk digunakan sebagai algoritma untuk membuat penyelesaian Rubik’s Cube pada Android karena algoritma ini mampu mendapatkan solusi yang singkat dalam waktu yang cepat..
2. Rubik’s Cube merupakan puzzle dengan tingkat kesulitan yang tinggi dan kompleks untuk direpresentasikan sebagai objek dalam pemrograman , banyaknya jumlah permutasi yang dimungkinkan membuat keterbatasan hardware menjadi halangan untuk menghasilkan solusi optimal.
5.2 Saran
Beberapa saran oleh penulis untuk pengembangan penelitian selanjutnya adalah :
1. Kedepannya input pada aplikasi agar dapat dilakukan dengan cara yang lebih mudah daripada pemberian warna facelet secara manual , mungkin dengan cara scan permukaan dengan kamera .
(5)
55
2. Tampilan yang masih sederhana ditingkatkan menjadi 3 Dimensi , Animasi manuver ,dan dalam bentuk permainan .
3. Pengaplikasian algorima Kociemba pada puzzle 3 - D lainnya , agar dapat menjadi pembanding performa dengan Rubik’s Cube.
(6)
DAFTAR PUSTAKA
Adams , W.L .2009.The Rubik’s Cube:A Puzzling Success..(Online)
http://web.archive.org/web/20090201200141/http:/www.time.com/time/magazine/arti cle/0,9171,1874509,00.html (01 Februari 2015)
Cotten, A. 2009 . The Group Theoretic Rubik's Cube. Tesis. Eastern Michigan University.
Daintith, John .1994. A Biographical Encyclopedia of Scientists. Bristol: Institute of Physics Pub, pp. 771
Fotheringham, W.2007. Fotheringham's Sporting Pastimes. Anova Books. p. 50.
Joyner, D. 2002. Adventures in group theory: Rubik's Cube, Merlin's machine, and Other Mathematical Toys. Baltimore: Johns Hopkins University Press. p. 7.
Kociemba, H .2013.Cube Solver :The Mathematics Behind Cube Solver.Darmstadt
Korf , R.E..1997. Finding Optimal Solution to Rubik’s Cube Using Pattern Databases
. Proceedings of the Fourteenth National Conference on Artificial Intelligence (AAAI -97), pp. 700–705.
Pochmann , S . 2008. Analyzing Human Solving Methods for Rubik’s Cube and
similar Puzzles. Tesis .Darmstadt University of Technology.
Rockiki , T. , Kociemba , H. , Davidson , M. & Dethridge , J . 2013. The Diameter Of
The Rubik’s Cube Group is Twenty. Society for Industrial and Applied Mathematics Journal 27(2): 1082 – 1105.