Take the Future

~ ~ Try not to become a man of success, but rather try to become a man of value ~ ~ Albert Einstein

Thursday, March 30, 2017

11:32 AM | by Unknown | Categories: , | No comments
Pengertian Komputasi
Komputasi adalah algoritma yang digunakan untuk menemukan suatu cara dalam memecahkan masalah dari sebuah data input. Data input disini adalah sebuah masukan yang berasal dari luar lingkungan sistem. Komputasi ini merupakan bagian dari ilmu komputer berpadu dengan ilmu matematika. Secara umum ilmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu (sains). Dalam penggunaan secara umum, biasanya berupa penerapan simulasi komputer atau berbagai bidang keilmuan, tetapi dalam perkembangannya digunakan juga untuk menemukan prinsip-prinsip baru yang mendasar terhadap bidang ilmu yang mendasari teori ini. Bidang ini berbeda dengan ilmu komputer (computer science), yang mengkaji komputasi, komputer dan pemrosesan informasi. Bidang ini juga berbeda dengan teori dan percobaan sebagai bentuk tradisional dari ilmu dan kerja keilmuan. Dalam ilmu alam, pendekatan ilmu komputasi dapat memberikan berbagai pemahaman baru, melalui penerapan model-model matematika dalam program komputer berdasarkan landasan teori yang telah berkembang, untuk menyelesaikan masalah-masalah nyata dalam ilmu tersebut.

Pengertian Komputasi Modern
Komputasi modern bisa disebut sebuah konsep sistem yang menerima intruksi-intruksi dan menyimpannya dalam sebuah memory, memory disini bisa juga dari memory komputer. Oleh karena pada saat ini kita melakukan komputasi menggunakan komputer maka bisa dibilang komputer merupakan sebuah komputasi modern. Konsep ini pertama kali digagasi oleh John Von Neumann (1903-1957). Dalam kerjanya komputasi modern menghitung dan mencari solusi dari masalah yang ada, dan perhitungan yang dilakukan itu meliputi:
1.    Akurasi
2.    Kecepatan
3.    ProblemVolume Besar
4.    Modelling
5.    Kompleksitas

Sejarah Komputasi Modern
Dalam perkembangan komputasi modern, kita tidak bisa melupakan begitu saja orang dibalik perkembangan komputasi modern yang merubah semua pekerjaan jadi lebih mudah. Sejarah komputasi dimulai dari seseorang ilmuan yang ternama di bidang teknologi. Permulaan komputasi modern dimulai pada saat tahun 1926 oleh ilmuan yang berasal dari hungaria yang bernama John Von Neumann.
Von Neumann seorang ilmuan yang belajar dari Berlin dan Zurich dan mendapatkan diploma pada bidang teknik kimia pada tahun 1926. Pada tahun yang sama dia mendapatkan gelar doktor pada bidang matematika dari Universitas Budapest. Berkat keahlian dan kepiawaiannya Von Neumann dalam bidang teori game yang melahirkan konsep seluler automata, teknologi bom atom, dan komputasi modern yang kemudian melahirkan komputer. Kegeniusannya dalam matematika telah terlihat semenjak kecil dengan mampu melakukan pembagian bilangan delapan digit (angka) di dalam kepalanya. Setelah mengajar di Berlin dan Hamburg, Von Neumann pindah ke Amerika pada tahun 1930 dan bekerja di Universitas Princeton serta menjadi salah satu pendiri Institute for Advanced Studies. Dipicu ketertarikannya pada hidrodinamika dan kesulitan penyelesaian persamaan diferensial parsial nonlinier yang digunakan, Von Neumann kemudian beralih dalam bidang komputasi. Sebagai konsultan pada pengembangan ENIAC, dia merancang konsep arsitektur komputer yang masih dipakai sampai sekarang. Arsitektur Von Nuemann adalah komputer dengan program yang tersimpan (program dan data disimpan pada memori) dengan pengendali pusat, I/O, dan memori. berdasarkan beberapa definisi di atas, maka komputasi modern dapat diartikan sebagai suatu pemecahan masalah berdasarkan suatu inputan dengan menggunakan algoritma dimana penerapannya menggunakan berbagai teknologi yang telah berkembang seperti komputer.


FSA (Finite State Automata) merupakan tool yang sangat berguna dalam perancangan lexical analyzer, yaitu bagian dari kompilator yang mengelompokan karakter-karakter ke dalam sebuah token, yang berupa unit terkecil seperti nama, variabel, dan keyword.
FSA dipakai untuk penganalisa leksikal dan dipakai juga dalam text editor, pemrosesan teks, dan program file-searching
Spesifikasi dari sebuah bahasa pemrograman meliputi, hal-hal :
1.     Himpunan simbol-simbol (alpabet) yang bisa dipakai untuk membentuk program yang benar
2.     Himpunan program yang benar secara sintaktik
3.     Makna dari program tersebut
  

Teori Bahasa Formal
Karena bahasa adalah sebuah himpunan dari string, maka untuk mendefinisikan suatu bahasa bisa dilakukan dengan menuliskan semua string yang menjadi anggotanya. Bagaimana kita bisa melakukannya jika jumlah string yang menjadi anggota bahasa tersebut banyak sekali atau bahkan tidak berhingga ? Pada Teori Bahasa Formal, hal ini dilakukan dengan mendefinisikan tata bahasanya.  Tata Bahasa = (T,N,S,P), di mana
·                  adalah himpunan berhingga simbol-simbol terminal
·                  adalah himpunan berhinggasimbol-simbol non terminal
·                  adalah simbol awal, S  N
·                  adalah himpunan berhingga aturan produksi yang setiap elemennya berbentuk α → β, α, β  ( N)+, α harus berisi minimal 1 simbol non terminal.
Sentential form adalah semua string yang dapat diturunkan dari simbol awal dengan menggunakan aturan produksi PKalimat(sentence) adalah sentential form yang tidak mengandung simbol non terminal. Bahasa yang dihasilkan dari G dinotasikan denganL(G), yaitu himpunan kalimat yang dapat diturunkan dari dengan menggunakan P.
Teori Automata
Berasal dari bahasa Yunani automatos, yang berarti sesuatu yang bekerja secara otomatis (mesin). Dalam tulisan ini akan dipergunakan istilah automaton sebagai bentuk tunggal danautomata sebagai bentuk jamak. Teori Automata adalah teori tentang mesin abstrak yang :
·                  bekerja sekuensial
·                  menerima input
·                  mengeluarkan output
Pengertian mesin di tulisan ini, bukan hanya mesin elektronis/mekanis saja melainkan segala sesuatu (termasuk perangkat lunak) yang memenuhi ketiga ciri di atas. Penggunaan automata pada perangkat lunak terutama pada pembuatan kompiler bahasa pemrograman. Setelah kita mengetahui definisi bahasa dan automata, pertanyaan selanjutnya adalah apakah hubungan antara teori automata dan bahasa formal ? Secara garis besar ada dua fungsi automata dalam hubungannya dengan bahasa, yaitu :
- fungsi automata sebagai pengenal (RECOGNIZER) string-string dari suatu bahasa, dalam hal ini bahasa sebagai masukan dari automata.
- fungsi automata sebagai pembangkit (GENERATOR) string-string dari suatu bahasa, dalam hal ini bahasa sebagai keluaran dari automata.
Dalam tulisan ini, pembahasan akan ditekankan pada fungsi pertama dari automata. Untuk mengenali string-string dari suatu bahasa, akan dimodelkan sebuah automaton yang memiliki komponen sebagai berikut :
- pita masukan, yang menyimpan string masukan yang akan dikenali;
- kepala pita (tape head), untuk membaca/menulis ke pita masukan;
- Finite State Controller (FSC), yang berisi status-status dan aturan-aturan yang mengatur langkah yang dilakukan oleh automaton berdasarkan status setiap saat dan simbol masukan yang sedang dibaca oleh kepala pita;
- pengingat (memory), untuk tempat penyimpanan dan pemrosesan sementara Automaton pengenal, setelah membaca string masukan dan melakukan langkah langkah pemrosesan yang diperlukan, akan mengeluarkan keputusan apakah string tersebut dikenali atau tidak.
Konfigurasi adalah suatu mekanisme untuk menggambarkan keadaan suatu mesin pengenal , yang terdiri atas :
- status FSC
- isi pita masukan dan posisi kepala pita
- isi pengingat
Mesin pengenal bersifat deterministik bila dalam setiap konfigurasi, hanya ada satu kemungkinan yang dapat dilakukan mesin, jika tidak mesin pengenal bersifat non deterministik. Contoh mesin automata :
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlbg_iIa7KQ6s1Op6fvR0x6IIX19GfewH2FlHO1llPUcPHWEoWRQFlF8ae-tfobO-fp02EkwUGo3TTpz7CMX_tEGK_SM4ee4n0fw-N1GF1hfo9AjJmiH85kL12n7-CCr2mG0cXCKYG9Ah/s400/dsa.jpg

·                  Sebuah string input diterima bila mencapai state akhir/ final state yang digambarkan dengan lingkaran ganda.
·                  Pada gambar diatas, mesin mendapat string input berikut :
–        ada : diterima
–        adu : diterima
–        add : ditolak
·                  Mesin diatas memiliki 6 state {qo, q1, q2, q3, q4, q5}.
·                  State awal : q0, State akhir : {q3, q4}.
·                  Himpunan simbol input : {a,d,u}.

Konsep Bahasa dan Otomata
•         Simbol adalah suatu entitas abstrak yang tidak bisa didefinisikan secara formal
•         Huruf dan digit adalah contoh dari simbol yang sering di pakai
•         String adalah suatu deretan berhingga dari simbol-simbol, contoh : ‘a’, ‘b’, ‘c’ adalah simbol dan ‘abc’ adalah sebuah string.
•         String kosong dinyatakan dengan ε di definisikan panjangnya = 0 atau |ε|= 0
•         Bahasa adalah himpunan string-string dari simbol-simbol untuk suatu alpabet yang memiliki makna.
•         Ada istilah bahasa kosong, yaitu bahasa yang tidak terdiri dari string-string, contoh himpunan kosong Ø
•         Otomata adalah suatu bentuk yang memiliki fungsi-fungsi dari komputer digital, menerima input menghasilkan output, bisa memiliki penyimpanan sementara, dan mampu membuat keputusan dalam mentransformasikan input ke output
•         Otomata merupakan suatu sistem yang terdiri atas sejumlah berhingga (state), dimana state menyatakan informasi mengenai input yang lalu dan dapat dianggap sebagai memori mesin.
•         Input pada mesin otomata dianggap sebagai bahasa yang harus dikenali oleh mesin. Selanjutnya mesin otomata membuat keputusan atau keluaran yang mengindikasikan apakah input itu diterima atau tidak

FINITE STATE MACHINES

Finite State Machines (FSM) adalah sebuah metodologi perancangan sistem kontrol yang menggambarkan tingkah laku atau prinsip kerja sistem dengan menggunakan tiga hal berikut: State (Keadaan), Event (kejadian) dan Action (aksi). Pada satu saat dalam periode waktu yang cukup signifikan, sistem akan berada pada salah satu state yang aktif. Sistem dapat beralih atau bertransisi menuju state lain jika mendapatkan masukan atau event tertentu, baik yang berasal dari perangkat luar atau komponen dalam sistemnya itu sendiri (misal interupsi timer). Transisi keadaan ini umumnya juga disertai oleh aksi yang dilakukan oleh sistem ketika menanggapi masukan yang terjadi. Aksi yang dilakukan tersebut dapat berupa aksi yang sederhana atau melibatkan rangkaian proses yang relative kompleks. Berdasarkan sifatnya, metode FSM ini sangat cocok digunakan sebagai basis perancangan perangkat lunak pengendalian yang bersifat reaktif dan real time. Salah satu keuntungan nyata penggunaan FSM adalah kemampuannya dalam mendekomposisi aplikasi yang relative besar dengan hanya menggunakan sejumlah kecil item state. Selain untuk bidang kontrol, Penggunaan metode ini pada kenyataannya juga umum digunakan sebagai basis untuk perancangan protokol-protokol komunikasi, perancangan perangkat lunak game, aplikasi WEB dan sebagainya.
Dalam bahasa pemrograman prosedural seperti bahasa C, FSM ini umumnya direalisasikan dengan menggunakan statemen kontrol switch case atau/dan if..then. Dengan menggunakan statemen-statemen kontrol ini, aliran program secara praktis akan mudah dipahami dan dilacak jika terjadi kesalahan logika.

 Finite State Machine di dunia AI Game Programming, merupakan salah satu teknik yang paling sering digunakan. Alasannya yaitu:
1. Implementasinya mudah dan cepat
2. Memudahkan proses debugging. Karena telah dipecah menjadi kepingan yang lebih kecil, proses debugging kalau terjadi behavoiur yang tidak semestinya, menjadi lebih mudah
3. Proses komputasi yg minimal, karena sejatinya FSM hanyalah conditional statement yang dikemas dalam bentuk yang lebih elegan.
4. Fleksibel, dapat dikombinasikan dengan teknik AI lain misalnya fuzzy logic dan neural network
Kekurangannya:
1. Behaviour dari agen mudah diprediksi, karena tidak ada searching dan atau learning di dalam agen tersebut
2. Karena mudah diimplementasi, kadang programmer langsung tembak di eksekusi tanpa melakukan desain FSM terlbih dahulu. Biasanya akan terjadi FSM yang terfragmentasi
3. Timbul apa yang dinamakan dengan State Oscillation yaitu ketika batasan antara dua buah state terlalu tipis:

MESIN TURING
Mesin Turing adalah model yang sangat sederhana dari komputer.  Secara esensial, mesin Turing adalah sebuah finite automaton yang miliki sebuah tape tunggal dengan panjang tak terhingga yang dapat membaca dan menulis data.  Mesin Turing menggunakan notasi seperti ID-ID pada PDA untuk menyatakan konfigurasi dari komputasinya. Stack pada PDA memiliki keterbatasan akses.  Elemen yang dapat diakses hanya elemen yang ada pada top stack. Pada Mesin Turing, memori akan berupa suatu tape yang pada dasarnya merupakan array dari sel-sel penyimpanan.
Visualisasi dari sebuah mesin Turing diberikan oleh gambar berikut:
mesinturing1

Mesin terdiri dari sebuah finite control, yang dapat berada dalam sebuah himpunan berhingga dari state.  Terdapat sebuah tape yang dibagi ke dalam kotak-kotak atau sel-sel.  Setiap sel dapat menampung sebuah dari sejumlah berhingga dari simbol.  Pada awalnya, input yang merupakan string dari simbol dengan panjang berhingga dipilih dari input alphabet, ditempatkan pada tape. Sel-sel tape yang lain, perluasan secara infinite ke kiri dan ke kanan, pada awalnya menampung simbol khusus yang dinamakan blank. Blank bukan sebuah input symbol, dan mungkin terdapat simbol tape yang lain disamping input symbol dan blank.  Terdapat sebuah tape head yang selalu ditempatkan pada salah satu dari sel-sel tape.  Mesin turing dikatakan men-scan sel tersebut. Pada awalnya, tape head berada pada sel paling kiri yang menampung input. Sebuah pergerakan mesin Turing adalah sebuah fungsi dari state dari finite control dan tape symbol yang di-scan.