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

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 :

  Gambar.2.1 Susunan Standar Warna(Pochmann,2008)

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)

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

  15. z (rotate): Putaran kubus berporos pada F 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

  2 terkadang superscript ) 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 ya itu “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

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

  7

  orientasi kedelapan tergantung pada tujuh sebelumnya , memberikan 3 ( 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

  11 tergantung pada sebelas sebelumnya yang , memberikan 2 ( 2.048 ) kemungkinan .

  7

  11

  { 8 ! x 3 x ( 12 ! / 2 ) x 2 } = 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

  12 { 8! x 3 x 12 ! x 2 } = 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 .

2.2 Algoritma Kociemba

  Kociemba menciptakan algoritma ini untuk memperbaiki algoritma Thistlethwaite pada tahun 1992 .Ia menurunkan jumlah grup perantara menjadi dua:

   G = ( U, D, L, R, F, B )

  2

  2

  2

  2  G 1 = ( U, D, L , R , F , B )

  2  G ={ 1 }

  sebagaimana dengan algoritma Thistlethwaite , ia akan mencari spasi coset dari G

  1 \ G yang benar untuk mengelompokkan kubus kedalam grup G 1 . Berikutnya dia

  mencari solusi optimal untuk Group G . . Pencarian di G \ G dan G keduanya

  1

  1

  1

  dilakukan dengan metode yang senilai dengan IDA*.Pencarian di G

  1 \ G memerlukan

  paling banyak 12 giliran dan pencarian di G

  1 paling banyak 18 giliran , Michael Reid

  menunjukkan pada tahun 1995 dengan membuat solusi suboptimal yang membawa kubus ke grup G

  1 dan mencari solusi pendek di G 1 , 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 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 harus menggunakan God’s Algorithm(Rockiki,2013) .

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).

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

  

core application dari android. Lapisan ini dirancang untuk memudahkan penggunaan 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.

  System C library. Implementasi library C standar(libc).

  7. FreeType. Rendering untuk bitmap dan vektor font.

  3D library. Implementasi OpenGL ES 1.0 yang mendukung akselarasi hardware.

  6.

  5. SGL. Engine grafis 2D.

  4. LibWebCore. Engine web browser modern.

  3. Surface manager. Mengatur akses ke subsistem display.

  2. Media libraries. Mendukung berbagai format multimedia (termasuk MPEG4, H.264, MP3, AAC, AMR, JPG, PNG).

  apllication framework . Beberapa library diantaranya adalah : 1.

  Contohnya adalah lists, grid, text box, button, bahkan embeddable web browser .

  c. Libraries Android mendukung beberapa library C/C++yang digunakan pada berbagai komponen Android. Kemampuan ini dapat diakses oleh developer melalui Android

  5. Activity manager. Mengatur siklus aplikasi dan navigasi antar aplikasi yang sedang berjalan.

  4. Notification manager. Memungkinkan agar suatu aplikasi dapat menampilkan peringatan yang dapat dikustomasi pada status bar.

  3. Resource manager. Menyediakan akses kepada resource non-code seperti localized string , dan file layout.

  dari aplikasi lain (seperti Contacts), atau berbagi data dengan aplikasi lain.

  resources

  2. Contentproviders. Komponen yang mengatur agar aplikasi dapat mengakses

  8. SQLite. Basis data relasional yang sangat kecil namun sangat ampuh. 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.

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.

  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 untuk memperingati pengguna.

  status bar 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).

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.

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

Dokumen yang terkait

Studi Penggunaan Obat Pada Pasien Anak Rawat Inap Di Rumah Sakit Umum Daerah Dr. Pirngadi Kota Medan Periode Januari 2013 - Desember 2013

0 2 14

Pengaruh Efektivitas Koagulan PAC (Poly Auminium Chloride) dan Tawas terhadap Logam Mangan (Mn) pada Air Baku PDAM Tirtanadi Hamparan Perak

0 0 21

BAB II TINJAUAN PUSTAKA 2.1 Air - Pengaruh Efektivitas Koagulan PAC (Poly Auminium Chloride) dan Tawas terhadap Logam Mangan (Mn) pada Air Baku PDAM Tirtanadi Hamparan Perak

0 0 11

BAB II KERANGKA TEORI 2.1. Peristiwa Banjir Medan - Pergeseran Solidaritas Sosial Pada Masyarakat Yang Terkena Banjir (Studi Deskriptif Pada Masyarakat Sekitar Sungai Deli, Kelurahan Sukaraja, Kecamatan Medan Maimun)

0 0 28

BAB I PENDAHULUAN 1.1. Latar Belakang - Pergeseran Solidaritas Sosial Pada Masyarakat Yang Terkena Banjir (Studi Deskriptif Pada Masyarakat Sekitar Sungai Deli, Kelurahan Sukaraja, Kecamatan Medan Maimun)

0 0 18

2.1 Tumbuhan Sidaguri Tumbuhan sidaguri belum terlalu banyak dibudidayakan di Indonesia, oleh karenanya tumbuhan sidaguri masih banyak tumbuh secara liar. Proses regenerasi tumbuhan sidaguri secara alami dengan cara tumbuhnya tunas-tunas baru dari kecamba

0 0 18

BAB II TINJAUAN PUSTAKA 2.1. Pembangunan Ekonomi - AnalisisHubunganKetimpangan Daerah Dengan Tingkat Kemiskinan Di Sumatera Utara

0 0 26

BAB II KAJIAN PUSTAKA 2.1. Masyarakat Batak Toba - Dalihan Na Tolu” Sebagai Katup Pengaman Bagi Potensi Konflik Dalam Masyarakat Batak Toba Yang Berbeda Agama (Studi : Sidabaribaparapat, Kecamatan Girsang Sipanganbolon, Kabupaten Simalungun)

0 0 17

BAB I PENDAHULUAN 1.1. Latar Belakang - Dalihan Na Tolu” Sebagai Katup Pengaman Bagi Potensi Konflik Dalam Masyarakat Batak Toba Yang Berbeda Agama (Studi : Sidabaribaparapat, Kecamatan Girsang Sipanganbolon, Kabupaten Simalungun)

0 0 11

1 Bab I Pendahuluan - Tinjauan Sosial Dan Ekonomi Keluarga Penambang Emas Di Tambang Emas Rakyat di Desa Hutabargot Kecamatan Hutabargot Kabupaten Mandailing Natal

0 0 10