• Tidak ada hasil yang ditemukan

2.1. Permainan Rubik’s Cube - Implementasi Penyelesaian Permainan Rubrik Cube dengan Algoritma Kociemba pada Platform Android

N/A
N/A
Protected

Academic year: 2019

Membagikan "2.1. Permainan Rubik’s Cube - Implementasi Penyelesaian Permainan Rubrik Cube dengan Algoritma Kociemba pada Platform Android"

Copied!
15
0
0

Teks penuh

(1)

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 :

(2)

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 :

(3)

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

(4)

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

(5)

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

(6)

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 )

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

(7)

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

(8)

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

(9)

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

(10)

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.

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

Gambar

Gambar 0.1 Arsitektur platform Android (Zechner, 2011)

Referensi

Dokumen terkait

[r]

Sementara itu ekspor Sumatera Barat Januari 2015 turun sebesar 12,04 persen bila dibandingkan dengan periode yang sama tahun sebelumnya.. Ekspor nonmigas bulan Januari 2015

Laporan Tugas akhir yang bertemakan Perancangan Komunkasi Visual Publikasi Pernikahan Batak dari Masa ke Masa, dibuat dengan tujuan melestarikan budaya Indonesia kepada

bahwa berdasarkan pertimbangan sebagaimana dimaksud dalam huruf a, perlu menetapkan Peraturan Daerah tentang Perubahan Atas Peraturan Daerah Kabupaten Banjarnegara

3.2 Mengenal teks cerita narasi sederhana kegiatan dan bermain di lingkungan dengan bantuan guru atau teman dalam bahasa Indonesia lisan dan tulis yang dapat

Masyarakat merupakan lingkungan alami kedua yang dikenal anak-anak. Anak remaja telah banyak mengenal karakteristik masyarakat dengan berbagai norma dan

Hasil penelitian menunjukkan bahwa (1) pembelajaran dengan model TA PPS mampu mencapai ketuntasan klasikal pada aspek pemecahan masalah; (2) pembelajaran dengan model T PS

pembelajaran yang dapat digunakan siswa hal itu tidak merubah guru sebagai