Anda di halaman 1dari 7

Bab 1

Automata : The Methods and the Madness

Teori Automata adalah studi tentang perangkat atau mesin komputasi


abstrak. Sebelum ada komputer di AS, Turing mempelajari komputer abstrak yang
memiliki semua kemampuan komputer saat ini, setidaknya sejauh di apa yang
dapat mereka hitung adalah tujuan Turing untuk menggambarkan dengan tepat
batas antara apa yang dapat dilakukan oleh mesin komputasi dan apa yang tidak
dapat dilakukannya. kesimpulannya berlaku tidak hanya untuk mesin Turing
abstraknya tetapi untuk mesin nyata saat ini.

Dalam s dan s jenis mesin yang lebih sederhana yang kita sebut hari ini
Meskipun automata dipelajari oleh sejumlah peneliti Automata ini awalnya
diusulkan untuk memodelkan fungsi otak yang ternyata sangat berguna untuk
berbagai keperluan lain yang akan kita sebutkan di Bagian Juga di bagian akhir
ahli bahasa N Chomsky memulai studi tata bahasa formal. Meskipun tidak
sepenuhnya mesin, tata bahasa ini memiliki hubungan dekat dengan automata
abstrak dan berfungsi hari ini sebagai dasar dari beberapa komponen perangkat
lunak penting termasuk bagian dari kompiler.

Pada tahun 1969. S Cook memperluas studi Turing tentang apa yang
bisa dan apa yang tidak bisa dihitung. Cook mampu memisahkan masalah-
masalah yang dapat diselesaikan secara efisien oleh komputer dari masalah-
masalah yang pada prinsipnya dapat diselesaikan. tetapi dalam praktiknya
mengambil begitu banyak waktu sehingga komputer tidak berguna untuk semua
tetapi sangat kecil contoh masalah. Kelas masalah terakhir disebut keras atau NP
sulit. Sangat tidak mungkin bahwa bahkan peningkatan eksponensial dalam
kecepatan komputasi yang perangkat keras komputer telah mengikuti Hukum
Moore akan memiliki signi tidak dapat berdampak pada kemampuan kita untuk
memecahkan masalah besar yang tidak dapat diselesaikan Semua perkembangan
teoretis ini berdampak langsung pada apa yang dilakukan ilmuwan komputer saat
ini. Beberapa konsep seperti nite automata dan beberapa jenis tata bahasa formal
digunakan dalam desain dan konstruksi berbagai jenis perangkat lunak. Konsep
lain seperti mesin Turing membantu kita memahami apa yang dapat kita harapkan
dari perangkat lunak kita. Terutama teori masalah yang tidak dapat diselesaikan
memungkinkan kita menyimpulkan apakah kita mungkin dapat memenuhi
masalah secara langsung dan menulis sebuah program untuk menyelesaikannya
karena tidak ada dalam kelas yang sulit dipecahkan atau apakah kita harus dan
beberapa cara untuk mengatasi masalah yang sulit diatasi dan perkiraan
menggunakan heuristik atau menggunakan metode lain untuk membatasi jumlah
waktu yang dihabiskan program untuk memecahkan masalah

Dalam bab pendahuluan ini, kita mulai dengan pandangan yang sangat tinggi
tentang apa teori automata dan apa kegunaannya. Sebagian besar bab dipilih untuk
survei teknik bukti dan trik untuk menemukan bukti. bukti dengan bukti
kontradiksi oleh induksi dan konsep penting lainnya. A Bagian terakhir
memperkenalkan konsep yang meliputi string huruf dan bahasa automata theory

1.1 Mengapa Belajar Teori Automata ?

Ada beberapa alasan mengapa studi automata dan kompleksitas merupakan bagian
penting dari inti Ilmu Komputer. Bagian ini berfungsi untuk memperkenalkan
pembaca dengan motivasi utama dan juga menguraikan topik utama yang dicakup
dalam buku ini.
1.1.1 Pengantar Finite Automata
Finite automata adalah model yang berguna untuk banyak jenis perangkat keras
dan perangkat lunak yang penting. Kita akan melihat mulai dalam contoh Bab
tentang bagaimana konsep-konsep digunakan Untuk saat ini, mari kita daftar
beberapa jenis yang paling penting:
1. Perangkat lunak untuk merancang dan memeriksa perilaku sirkuit digital
2. Penganalisis leksikal dari kompiler biasa yang merupakan komponen kompiler
yang memecah teks input menjadi unit logis seperti pengidentifikasi
kata kunci dan tanda baca
3. Perangkat lunak untuk memindai teks dalam jumlah besar seperti koleksi
halaman Web dan kemunculan frasa kata atau pola lainnya
4. Perangkat lunak untuk memverifikasi sistem dari semua jenis yang memiliki
jumlah terbatas dari negara yang berbeda seperti protokol komunikasi atau
protokol untuk pertukaran informasi yang aman
Sementara kita akan segera menemukan definisi yang tepat dari automata
berbagai jenis, mari kita mulai pengantar informal kita dengan sketsa apa yang
otomat terbatas dan lakukan. Ada banyak sistem atau komponen, seperti yang
disebutkan di atas yang dapat dipandang sebagai setiap saat di salah satu dari
sejumlah negara terbatas. Tujuan negara adalah untuk mengingat bagian yang
relevan dari sejarah sistem. Karena hanya ada sejumlah negara terbatas, seluruh
sejarah umumnya tidak dapat diingat sehingga sistem harus dirancang dengan
hati-hati untuk mengingat apa yang penting dan melupakan yang tidak.
Keuntungan memiliki hanya sejumlah negara terbatas adalah bahwa kita dapat
menerapkan sistem dengan sumber daya yang tetap. Misalnya kita dapat
mengimplementasikannya dalam perangkat keras sebagai sirkuit atau sebagai
bentuk sederhana dari program yang dapat membuat keputusan hanya dengan
melihat sejumlah data yang terbatas atau menggunakan posisi dalam kode itu
sendiri untuk membuat keputusan.
Contoh 1.1: Mungkin otomat terbatas nontrivial yang paling sederhana adalah
sakelar hidup / mati Perangkat mengingat apakah ia dalam keadaan hidup atau
mati dan memungkinkan pengguna untuk menekan tombol yang di berbeda
tergantung pada kondisi sakelar. Jika sakelar dalam kondisi ff maka menekan
tombol akan mengubahnya ke kondisi aktif dan jika sakelar dalam kondisi aktif
maka menekan tombol yang sama akan berubah. ke keadaan terbuka.
Model hingga-otomat untuk sakelar ditunjukkan pada Gambar. 1.1 Seperti untuk
semua automata terbatas, keadaan diwakili oleh lingkaran
dalam contoh ini kita telah menamai negara bagian on dan off. Arcs antara status
diberi label oleh input yang mewakili pengaruh eksternal pada sistem. Di sini
kedua Arc diberi label oleh input Push yang mewakili pengguna yang menekan
tombol. Maksud dari dua arc adalah keadaan yang ada dalam sistem ketika input
Push dijalankan. menerimanya pergi ke negara lain.
Salah satu negara ditetapkan sebagai negara mulai keadaan di mana sistem
ditempatkan awalnya Dalam contoh kita negara mulai mati dan kami biasanya
menunjukkan negara mulai dengan kata Mulai dan panah yang mengarah ke
negara itu.
Seringkali diperlukan untuk mengindikasikan satu atau lebih status sebagai
kondisi akhir atau penerimaan. Memasukkan salah satu status ini setelah urutan
input menunjukkan bahwa urutan input baik dalam beberapa cara. Misalnya kita
dapat menganggap status pada Gambar sebagai menerima karena dalam
menyatakan bahwa perangkat yang dikendalikan oleh sakelar akan beroperasi.
Adalah konvensional untuk menunjuk negara penerima oleh lingkaran ganda
meskipun kita belum membuat sebutan seperti itu pada Gambar 1.1.
Contoh 1.2: Kadang-kadang apa yang diingat oleh suatu negara bisa jauh lebih
kompleks daripada pilihan on / off Gambar 1.2 menunjukkan otomat terbatas lain
yang bisa menjadi bagian dari penganalisis leksikal Tugas otomat ini adalah
mengenali kata kunci saat itu. Dengan demikian diperlukan lima negara yang
masing-masing mewakili posisi yang berbeda dalam kata maka yang telah dicapai
sejauh ini. Posisi ini sesuai dengan awalan kata mulai dari string kosong (yaitu,
tidak ada kata yang telah dilihat sejauh ini untuk kata telah terlihat) hingga kata
lengkap.

Pada Gambar 1.2 lima negara dinamai dengan awalan yang kemudian dilihat
sejauh ini. Input sesuai dengan huruf. Kita dapat membayangkan bahwa
penganalisa leksikal memeriksa satu karakter program yang dikompilasi pada
suatu waktu dan karakter berikutnya yang akan diperiksa adalah input. ke otomat.
Status awal terkait dengan string kosong dan setiap negara bagian memiliki
transisi pada huruf berikutnya kemudian ke negara yang terkait dengan awalan
yang lebih besar berikutnya. Negara bernama kemudian dimasukkan ketika input
telah mengeja kata maka Karena itu adalah pekerjaan dari otomaton ini untuk
mengenali ketika kemudian telah terlihat kita dapat mempertimbangkan bahwa
negara satu-satunya negara penerima.
1.1.2 Representasi Struktural
Ada dua notasi penting yang bukan seperti otomat tetapi memainkan peran
penting dalam studi automata dan aplikasinya

1. Tata bahasa adalah model yang berguna ketika merancang perangkat lunak
yang memproses data dengan struktur rekursif? Contoh paling terkenal adalah?
Parser? komponen kompiler yang berhubungan dengan fitur-fitur bersarang secara
rekursif dari bahasa pemrograman yang khas seperti ekspresi? bersyarat aritmatika
dan sebagainya? Misalnya aturan tata bahasa seperti E E? E menyatakan bahwa
ekspresi dapat dibentuk dengan mengambil dua ekspresi dan menghubungkannya
dengan tanda tambah
aturan ini khas bagaimana ekspresi bahasa pemrograman nyata dibentuk? Kami
memperkenalkan tata bahasa bebas konteks sebagaimana biasanya disebut dalam
Bab 5.
?
2. Ekspresi Reguler juga menunjukkan struktur data terutama string teks Seperti
yang akan kita lihat dalam Bab pola string yang mereka gambarkan persis sama
dengan apa yang dapat dijelaskan oleh
nite automata? Gaya ekspresi ini berbeda?
Dari contoh tata bahasa dan kita akan puas dengan contoh sederhana di sini?
Ekspresi reguler gaya UNIX [? A-? Z] [?? a-? Z] * ??? ?? [] [A-? Z] [?? A-? Z]?
mewakili kata-kata yang ditulis dengan huruf besar diikuti olehace dan dua huruf
kapital? Ungkapan ini membenci pola dalam teks yang bisa menjadi kota dan
negara bagian? Ithaca NY? Itu merindukan nama kota multi-kata seperti Palo Alto
CA yang dapat ditangkap oleh ekspresi yang lebih kompleks
??? PENGANTAR BUKTI BUKTIAN FORMAL
Ketika menafsirkan ekspresi seperti itu, kita hanya perlu tahu itu? A? Z? mewakili
berbagai karakter dari modal? A? ke ibukota? Z? ?yaitu? ada huruf kapital? dan? ?
digunakan untuk mewakili karakter kosong saja? Juga simbolnya? mewakili?
ungkapan sebelumnya? Kurung digunakan untuk mengelompokkan komponen
ekspresi
mereka tidak mewakili karakter teks yang dijelaskan?
??? Automata dan Kompleksitas
Automata penting untuk mempelajari batas perhitungan? Seperti yang kami
sebutkan dalam pengantar bab ada dua masalah penting?
?? Apa yang bisa dilakukan komputer? Penelitian ini disebut? Decidability? dan
masalah yang bisa diselesaikan oleh komputer disebut? decidable ?? Topik ini
dibahas dalam Bab ??
?? Apa yang bisa dilakukan komputer dengan efisien? Penelitian ini disebut?
Intraktabil? dan masalah yang dapat dipecahkan oleh komputer menggunakan
tidak lebih dari waktu daripada beberapa fungsi yang tumbuh perlahan dari ukuran
input disebut? traktat ?? Seringkali kita menganggap semua fungsi polinomial
menjadi? Lambat tumbuh? sementara fungsi yang tumbuh lebih cepat daripada
polinomial dianggap tumbuh terlalu cepat? Subjek dipelajari dalam Bab ???
?? Pengantar Bukti Formal
Jika Anda mempelajari geometri pesawat di sekolah menengah kapan saja
sebelum ????? s Anda kemungkinan besar harus melakukan beberapa bukti
deduktif? di mana Anda menunjukkan kebenaran pernyataan dengan urutan
langkah dan alasan yang terperinci? Sementara geometri memiliki sisi praktisnya?
E? G? Anda perlu tahu aturan untuk menghitung luas persegi panjang jika Anda
perlu membeli jumlah karpet yang tepat untuk ruangan? studi tentang metodologi
bukti formal setidaknya sama pentingnya dengan alasan meliput cabang
matematika ini di sekolah menengah? Di Amerika Serikat ????? menjadi populer
untuk mengajarkan bukti sebagai masalah perasaan pribadi tentang pernyataan
itu? Meskipun baik untuk merasakan kebenaran dari sebuah pernyataan, Anda
perlu menggunakan teknik pembuktian penting yang tidak lagi dikuasai di sekolah
menengah? Namun bukti adalah sesuatu yang perlu dipahami oleh setiap ilmuwan
komputer? Beberapa ilmuwan komputer mengambil pandangan ekstrem bahwa
bukti formal dari kebenaran suatu program harus berjalan seiring dengan
penulisan program itu sendiri? Kami ragu bahwa melakukan itu produktif? Di sisi
lain ada orang yang mengatakan bahwa bukti tidak memiliki tempat dalam
disiplin pemrograman? Slogan? Jika Anda tidak yakin program Anda benar
jalankan dan lihat? Apakah biasanya ditawarkan oleh kamp ini? Posisi kita di
antara kedua ekstrem ini? Program pengujian pasti penting? Namun pengujian
hanya berjalan sejauh karena Anda tidak dapat mencoba program Anda pada
setiap input? Lebih penting lagi jika program Anda kompleks? katakan rumit

Anda mungkin juga menyukai