Pengaruh Paralelisme Terhadap Mesin Turing Sebagai Konsep Komputasi

dokumen-dokumen yang mirip
Aplikasi Simulator Mesin Turing Pita Tunggal

Teori Bahasa Formal dan Automata

Kompleksitas Algoritma Rank Sort dan Implementasi pada Parallel Programming Dengan Menggunakan OpenMP

1, 2, 3

Teori Bahasa Formal dan Automata

Implementasi DFS dan BFS Dalam Recognizer Pushdown Automata

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Aplikasi Algoritma Branch and Bound dalam Pencarian Solusi Optimum Job Assignment Problem

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Penggunaan Mesin Turing Multitrack untuk Operasi Bilangan Biner

Mendeteksi Blob dengan Menggunakan Algoritma BFS

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

Pencarian Jalan untuk Menghasilkan Skor Tertinggi pada Permainan Voracity

Deterministic Finite Automata

Perbandingan Algoritma Pencarian Kunci di dalam Himpunan Terurut Melalui Linear Search dan Binary Search

Variasi-Variasi Algoritma Boyer-Moore dan perbandingannya dalam pencarian String

REVIEW ARRAY. Institut Teknologi Sumatera

Penggunaan Algoritma Paralel dalam Optimasi Prosesor Multicore

Implementasi Algoritma Greedy, BFS, Branch and Bound, dan Metode Heuristik dalam Permainan Reversi

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

Penerapan BFS dan DFS dalam Garbage Collection

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

dengan Algoritma Branch and Bound

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

PENGGUNAAN ALGORITMA PARALEL DALAM OPTIMASI PROSESOR MULTICORE

Penggunaan Algoritma Pathfinding pada Game

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

Pembuktian Kesulitan Hamiltonian Cycle Problem dengan Transformasi 3-Satisfiability Problem

Lecture Notes Teori Bahasa dan Automata

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

BAB I PENDAHULUAN. Merancang aplikasi Paralel Processing yang diimplementasikan dengan penggunaan Computer-Unified-Device-Architecture (CUDA).

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Overview. Pendahuluan. Pendahuluan. Pendahuluan. Pendahuluan. Pendahuluan

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Analisis Penerapan Algoritma Kruskal dalam Pembuatan Jaringan Distribusi Listrik

PENGANTAR KOMPUTER & SOFTWARE II

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

TEORI BAHASA DAN OTOMATA PENGANTAR

Algoritma Backtracking Pada Logic Game : Family Crisis (Game Penyebrangan)

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

Teori Bahasa Formal dan Automata

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

Algoritma Greedy untuk Pengambilan Keputusan dalam Permainan Kartu Hearts

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Teori Kompleksitas (Bagian 2)

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Penerapan Algoritma Branch and Bound untuk Optimasi Rute Penempelan Poster di Papan Mading ITB

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Menentukan Susunan Pengambil Tendangan Penalti dalam Skema Adu Penalti pada Pertandingan Sepak Bola dengan Algoritma Branch and Bound

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Implementasi Algoritma DFS pada permainan Monument Valley

Penghematan BBM pada Bisnis Antar-Jemput dengan Algoritma Branch and Bound

Kombinasi Algoritma Pattern Matching dan BFS-DFS pada aplikasi Music Discovery

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Aplikasi Pohon Pencarian Biner Seimbang sebagai Memo Table Dynamic Programming

Turing and State Machines. Mesin Turing. Turing Machine. Turing Machines 4/14/2011 IF_UTAMA 1

BAB 2 LANDASAN TEORI

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

PEMODELAN PERANGKAT LUNAK UNTUK PENGERTIAN DETERMINISTIC FINITE AUTOMATA DAN NON-DETERMINISTIC FINITE AUTOMATA

Pembuktian Benford s Law dengan Algoritma Brute Force terhadap Suatu Barisan Geometri Sembarang

Penerapan Algoritma Transversal pada Graf dan Algoritma Pencocokan String dalam Sistem Jual-Beli Tiket Bioskop

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Sumarni Adi TEKNIK INFORMATIKA STMIK AMIKOM YOGYAKARTA 2013

Penerapan Algoritma BFS dan DFS pada Permainan Logika Wolf, Sheep, and Cabbage

Penyelesaian Permainan Minesweeper dengan Algoritma BFS dengan Optimasi Algoritma Greedy

Lecture Notes Teori Bahasa dan Automata

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

Penerapan Graf Transisi dalam Mendefinisikan Bahasa Formal

RENCANA PEMBELAJARAN SEMESTER

Penyelesaian N-Puzzle Menggunakan A* dan Iterative Deepening A*

Penggunaan Fibonacci dan Josephus Problem dalam Algoritma Enkripsi Transposisi + Substitusi

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Chapter 9 Operator Types dan Operator Overloading

Penyelesaian Permainan Sliding Puzzle 3x3 Menggunakan Algoritma Greedy Dengan Dua Fungsi Heuristik

Penerapan Algoritma Greedy dalam Pembuatan Klasemen Kompetisi

Penerapan Algoritma Flood Fill untuk Mengurangi Ruang Pencarian pada Pencarian Solusi Puzzle Pentomino

Penerapan Algoritma Divide and Conquer Dalam Komputasi Paralel

BAB II TINJAUAN PUSTAKA

Penentuan Lintasan Terbaik Dengan Algoritma Dynamic Programming Pada Fitur Get Driving Directions Google Maps

Mesin Turing. Pertemuan Ke-14. Sri Handayaningsih, S.T., M.T. Teknik Informatika

Multithreading untuk Algoritma Divide and Conquer

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penerapan Algoritma Brute Force di Permainan Nonogram

Transkripsi:

Pengaruh Paralelisme Terhadap Mesin Turing Sebagai Konsep Komputasi Fitrandi Ramadhan and 23515050 Program MagisterInformatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia fitrandiramadhan@gmail.com Abstract Mesin turing non-deterministik adalah mesin turing yang dapat memberikan aksi yang tidak unik terhadap sebuah state yang diterima. Hal ini dapat searah dengan perkembangan teknologi komputer saat ini yaitu multiprocessing atau parallelism. Pertanyaan muncul apakah hal ini perkembangan paralelisme memang berpengaruh terhadap non-deterministik process dari nondeterministic algorithm. Dengan perubahan ini diharapkan dapat merubah pemahaman computer scientist terhadap analisis sebuah algoritma dimana paralelisme menjadi sebuah paradigma yang berdiri sendiri dikarenakan paralelisme sangat berbeda dengan singular programming. Index Terms non-deterministic, turing machine, parallelism, computing. I. PENDAHULUAN Secara natural pula apabila berada pada suatu situasi mesin akan melakukan satu dan hanya satu aksi. Hal ini berbeda dengan proses berfikir manusia yang dapat melakukan lebih dari satu aksi terhadap situasi yang diberikan. Fenomena ini disebut proses non-deterministic. Pertanyaan yang muncul dari fenomena ini adalah apa yang terjadi apabila sebuah mesin dapat melakukan proses berfikir ini. Hipotesis yang diajukan adalah dengan proses berfikir mesin dapat menyelesaikan lebih banyak permasalahan atau permasalahan yang lebih kompleks daripada deterministic turing machine. Waktu yang diperlukan untuk menyelesaikan permasalahan yang sama yang diberikan pada deterministic turing machine pun dapat diselesaikan dengan lebih cepat. II. LANDASAN TEORI Dalam perkembangan komputer kita tidak pernah terlepas dari mesin turing sebagai sebuah konsep bahwa sebuah mesin tanpa kecerdasan natural dapat menyelesaikan sebuah persoalan jika diberikan aturanaturan tertentu. Sebuah mesin dapat menyelesaikan persoalan sesuai dengan aturan yang telah diberikan, tentu kita berfikir hal ini adalah hal yang mudah dengan mendefinisikan aturan paling sederhana yaitu aturan ifthen. Mesin turing dapat menyelesaikan masalah yang sudah didefinisikan dan tidak dapat menyelesaikan masalah yang tidak didefinisikan pada mesin turing tersebut Secara definisi non deterministic turing machine adalah mesin turing yang dapat memiliki lebih dari satu aksi terhadap situasi yang diberikan. Berikut elemen dari fungsi transisi yang ada pada deterministic turing machine. 1. State yang dibaca pada pita. 2. Simbol yang akan ditulis pada pita 3. Arah dari head setelah melakukan aksi Hal yang sama juga dimiliki oleh non-deterministic turing machine, akan tetapi mesin dapat memiliki lebih dari satu poin kedua dan ketiga. Berikut definisi formal sebuah non-deterministic turing machine. Sebuah mesin turing non-deterministik dapat didefinisikan secara formal sebagai 6 tuple. Gambar 1.1 Single Tape Turing Machine. 1. adalah state yang diberikan 2. adalah alphabet 3. adalah initial state 4. adalah symbol blank. 5. adalah final state.

Ilustrasi dari non deterministic turing machine adalah sebagai berikut. jumlah core yang banyak untuk melakukan paralelisasi pada program yang dibuat. Sebuah program yang dibuat dengan paralelism akan jauh lebih cepat daripada program yang sama dengan single proccess paradigm. Gambar 2.1 Ilustrasi algoritma non deterministik. Setiap varian dari mesin turing memiliki representasinya pada standard deterministic turing machine. Pembuktian dari pernyataan ini adalah sebagai berikut. Diberikan N = (Q, Σ, Γ,, q0, qa, qr), dan d bilangan bulat terkecil untuk setiap (q, σ). 1. Sebuah mesin turing deterministic menelusuri setiap cabang dari komputasi pohon yang dibangkitkan oleh N. 2. Walaupun waktu penelusuran eksponensial total waktu yang dibutuhkan terbatas (finite). 3. Pada akhirnya proses ditentukan oleh kardinalitas dari δ(q Γ), yang adalah finite, karena δ(q Γ) Q Γ {L, R). Problem yang diselesaikan dengan non-deterministic turing machine tentunya adalah problem-problem NP. Setiap branching pada NP diselesaikan secara nondeterministik oleh mesin dan apabila salah satu branch menerima L sebagai bahasa yang diterima maka akan dikembalikan "accept". salah satunya adalah hamiltonian circuit. III. ANALISIS Perkembangan perangkat keras komputer saat ini bergerak menuju penambahan jumlah core proccessor. Moore s law dan perkembanganya membuktikan bahwa sangat sulit saat ini untuk mengembangkan CPU dengan kecepatan yang lebih besar, akan tetapi perkembangan terus dilakukan untuk meningkatkan efisiensi spasial transistor pada CPU untuk menambah jumlah physical core pada CPU. Pada sisi pengembang perangkat lunak hal ini memotivasi pengembang untuk memanfaatkan Gambar 3.1 Moore s Law dan perkembanganya. Secara definisi sebuah algritma non-deterministik melakukan operasi percabangan proses. Pada single proccess programming setiap daun dari proses akan dikunjungi baik dengan DFS (Depth First Search) ataupun BFS (Breadth First Search). Dengan kemampuan komputer saat ini setiap percabangan ini dapat dikunjungi (diproses) secara paralel, meningkatkan efisiensi dan memanfaatkan kemampuan komputer semaksimal mungkin. Berikut kode dari sebuah program paralel. //file : Prime.cpp //author : steakk #include "Prime.hpp" Prime::Prime() { size = DEFAULT_SIZE; for(long i=0;i<=size;i++) data[i] = true; Prime::Prime(long _size) { size = _size; for(long i=0;i<=size;i++) data[i] = true; Prime::Prime(const Prime& _Prime) { size = _Prime.size; for(long i=0;i<size;i++) data[i] = _Prime.data[i];

Prime& Prime::operator=(const Prime& _Prime) { size = _Prime.size; for(long i=0;i<size;i++) data[i] = _Prime.data[i]; return *this; Prime::~Prime() { bool& Prime::get_data() { return data; Prime::set_data(const bool& _data) { data = _data; Dari kode tersebut dapat dilihat bahwa pada pengunjungan setiap cabang pohon dapat dibuat sebuah thread baru yang akan diproses oleh processor lain. Dan apabila sebuah proses selesai dan menemukan jawaban atas persoalan (accept/reject), maka thread tersebut dapat menginformasikan thread lainya untuk berhenti melakukan komputasi dan mengembalikan jawaban. Tidak hanya dilakukan pada satu buat komputer dengan banyak core proses, paralelisasi juga dapat dilakukan antar komputer dengan library seperti MPI (Message Passing Interface) setiap komputer dapat berkomunikasi satu sama lain dan memberi perintah kepada program lain untuk berhenti melakukan proses apabila sebuah jawaban telah ditemukan pada proses lainya. Lain dari perkembangan proccessor yang berkembang sangat pesat perkembangan memory berjalan sangat lambat. Prime::sieve_of_erastothenes() { for(long i=2;i<=(size-1)/2;i++) { flip_data(i); Prime::flip_data(long x) { for(long i=x+x;i<size;i+=x) { data[i] = false; Prime::print() { if(data[i]==true) cout << i << " is prime" << endl; else cout << i << " is composite" << endl; Prime::print2() { if(data[i]==true) cout << "[" << i << "]"; cout << endl; Gambar 3.2 Message Passing Interface. Sebuah metode penyelesaian masalah yaitu dynamic programming adalah sebuah metode pemanfaatan ruang untuk melakukan pencarian dari percabangan masalah. Dynamic programming menyimpan optimum solution untuk setiap state yang dilalui dan dengan paralelisasi penggunaan lebih dari satu komputer dan memanfaatkan spasial memory dari setiap komputer akan mengoptimasi spasial yang dibutuhkan untuk melakukan proses. Prime::print3() { long count = 0; if(data[i]==true) count++; cout << "n primes to " << size-1 << " = " << count-2 << endl; Gambar 3.3 Dynamic Programming

IV. PENGUJIAN Untuk eksperimen akan diimplementasikan kode untuk eksperimen penggunaan algoritma non-deterministik dengan singular dan paralel. Program yang dibuat adalah program untuk melakukan sorting pada sebuah larik yang menimpan bilangan bulat acak. Psudocode dari program ini sendiri adalah algoritma singular akan tetapi untuk optimasi dapat dilakukan paralelisasi demi meningkatkan kecepatan program. Berikut adalah kode yang digunakan. //file : CountSort.h //author : steakk #ifndef CountSort_H #define CountSort_H #include <iostream> #include <cstring> #include <cstdlib> #include <ctime> #include <omp.h> #include <cilk/cilk.h> #include <cilk/cilk_api.h> #include "CountSortTBB.hpp" using namespace std; class CountSort { public: sort(int*,long); sort_openmp(int*,long); sort_tbb(int*,long); sort_cilk(int*,long); randomize_data(int*,long); print(int*,long); private: const int idealgrainsize = 100; ; #endif if(data[j] == data[i] && j<i) count++; temp[count] = data[i]; memcpy(data,temp,n*sizeof(int)); delete[] temp; //PARALLEL CountSort::sort_openmp(int* data, long n) { int* temp = new int[n]; omp_set_num_threads(omp_get_num_procs()); for(long i=0;i<n;i++) { long count = 0; for(long j=0;j<n;j++) { if(data[j]<data[i]) count++; else if(data[j] == data[i] && j<i) count++; temp[count] = data[i]; memcpy(data,temp,n*sizeof(int)); delete[] temp; Dilakukan eksperimen panjang mengenai waktu aktual dari penggunaan kode tersebut dan dicatat durasi yang dibutuhkan program untuk menyelesaikan persoalan tersebut. Berikut hasil eksperimen yang telah dilakukan. SINGLE with 16 data = 0 second(s) SINGLE with 256 data = 1 second(s) SINGLE with 4096 data = 0 second(s) SINGLE with 65536 data = 27 second(s) SINGLE with 1048576 data = 16221 second(s) OPENMP with 16 data = 0 second(s) OPENMP with 256 data = 0 second(s) OPENMP with 4096 data = 0 second(s) OPENMP with 65536 data = 8 second(s) OPENMP with 1048576 data = 2729 second(s) //SINGULAR CountSort::sort(int* data, long n) { int* temp = new int[n]; for(long i=0;i<n;i++) { int count = 0; for(long j=0;j<n;j++) { if(data[j]<data[i]) count++; else Dari pengamatan diatas proses yang memanfaatkan kemampuan komputer saat ini untuk melakukan operasi secara paralel akan meningkatkan kecepatan proses secara signifikan. V. KESIMPULAN Dari hasil percobaan yang didapatkan diatas dapat diambil kesimpulan bahwa algoritma non-deterministik yang sampai dengan pengembangan single core dapat

dioptimalisasi dengan penggunaan multicore. Pengembangan software juga akan lebih optimal jika diarahkan menjadi program yang didesain untuk bekerja secara paralel. Dari kesimpulan ini muncul pula apakah deterministic turing machine yang menjadi dasar pengembangan komputer sampai saat ini akan bergeser menjadi non-deterministik. [1] Hopcroft, John E. Motwani, Rejeev. Ullman, Jeffrey D. Introduction to Automata Theory, Languages and Computation. 2001. Pearson Education. [2] Carnegiemellon University in Qatar. Formal Languages, Automata and Computation Slide. Spring 2011. [3] http://www4.ncsu.edu/~uzgeorge/hamiltoncircuits7-19and22.pdfb. Smith, An approach to graphs of linear forms (Unpublished work style), unpublished. Tanggal akses 21 Desember 2015. [4] http://www.doc.ic.ac.uk/~mrc/computability%20&%20complexit y/lectures/c240lec17.pdf. 2010. Tanggal akses 21 Desember 2015 PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 21 Desember 2015 Fitrandi Ramadhan 23515050