Otomat Teorisi ne kadar pratiktir?


37

Teorik bilgisayar bilimi ile ilgili konularda her zaman bir uygulama yolu vardır. Ancak ders kitapları ve lisans dersleri genellikle otomata teorisinin önemli bir konu olmasının nedenini ve hala uygulamada uygulamalarının olup olmadığını açıklamıyor. Bu nedenle lisans öğrencileri, otomat teorisinin önemini anlamada güçlük çekebilir ve bunun artık pratik bir kullanım olmadığını düşünebilir.

Otomata teorisi pratikte hala faydalı mı?

Lisans CS müfredatının bir parçası mı olmalı?


4
Bunun konu dışı olduğunu düşünüyorum; lütfen SSS bölümüne bakın .
Jukka Suomela 9:11

3
Bunun 'off = topic'-nessitesi hakkında karışık hislerim var. Belli ki araştırma seviyesi değil, ancak otomat teorisinin alaka düzeyine dair bu özel soru, sıkça ortaya çıkan bir sorudur.
Suresh Venkat

18
Bence bu mükemmel bir konudur. Sonlu otomata teorisinin uygulamaları nelerdir? Gerçek Dünyadaki Vertex Kapak Uygulamalarından farklı değil ve bu soruyu kapatmadık.
Peter Shor

4
Bu arada, bu soru yakından ilişkili ve cevapları sonlu otomata teorisi için de bazı pratik motivasyonlar verebilir: " Normal ifadeler için iyi olan nedir? ".
Jukka Suomela

2
Cevapların niteliğinin ve çeşitliliğinin "kapsam" meselesini alakasız hale getirdiğini söylemeliyim. Umarım üç yakın oyla bu soru sınırın dışına taşmaz.
Suresh Venkat

Yanıtlar:


51
  1. Hiç grep / awk / sed gibi bir araç kullandın mı? Düzenli ifadeler bu araçların kalbini oluşturur.

  2. Bir e-posta sunucusu gibi "pratik projeler" de, normal ifadelerin ilkeli kullanımıyla ne kadar kodlamanın önlenebileceğini görünce şaşıracaksınız.

  3. Bir CS uzmanıysanız, kesinlikle (en azından küçük) bir dil için bir derleyici / tercüman yazacaksınız. Bu görevi daha önce hiç denediyseniz ve takıldıysanız, küçük bir teorinin (yani bağlamsız gramerler) size ne kadar yardımcı olabileceğini takdir edersiniz. Bu teori, bir hafta sonunda tamamlanabilecek bir şey için bir kez imkansız bir görev haline getirmiştir. (Ve mucit bir Turing ödülü kazandı - google BNF).

  4. Bir CS uzmanıysanız, bir noktada, Android API'nin bir sonraki sürümünün ne kadar havalı olduğunu değil, arkana yaslanıp hesaplamanın felsefi temellerini düşünmeniz gerekir. İlgili bir notta, sizi, hayatınızın sonraki 5 yılı için hazırlamak değil, gelecek 50 yıl için hazırlamak, üniversitenin işidir. Bu konuda yapabilecekleri tek şey, düşünmenize yardımcı olmaktır. otomatlardan teorik olarak bu derslerden biri.


32

CS'nin daha pratik tezahürlerinden biri, Derleyici Yapı'dır. 1965 yılında Knuth LR ayrıştırıcıları çalışmaya başladı. Çabucak (on yıldan kısa bir sürede), kayma / azaltma uygulayabilmemizi sağlayan deterministik aşağı itme otomatlarının bir alt kümesi olan LALR ayrıştırıcılarımız vardı.

LALR ayrıştırmanın fizibilitesinin ve verimliliğinin merkezinde, dilin "öneklerinin" normal olduğu ortaya çıkmış bir kanıtıdır (Knuth tarafından). Bu, yacc / bison vb. Gibi otomatik ayrıştırıcı üreteçleridir.

Bildiğimiz gibi programlama dillerinin, bu gelişmelere derleme etkinliklerinin çoğunu borçlu olduğunu söylemek güvenlidir.

İşte başka bir örnek: TCP / IP protokolünün kalbi sonlu durumlu bir makinedir. Daha ne kadar pratik olabilir?

Her ciddi CS öğrencisi, özellikle pratik olanlar, otomata teorisine dikkat etmelidir. Bilgisayar Bilimi'nin zenginliğinin temelini oluşturur.


Kaynak dosyaların ayrıştırılması bir derleyicinin gerçekten ilginç (ve önemli) bir parçası değildir, bu yüzden "bildiğimiz dilleri programlama dillerinin bu gelişmelere derleme etkinliklerinin çoğunu borçlu olduğunu" söylemenin güvenli olduğunu sanmıyorum. Dahası, dilleri farklı araçlar kullanarak, örneğin PEG'ler veya ayrıştırma birleştiricileri (yani parsec) kullanarak ayrıştırmak mümkündür.
Jan Špaček

30

Bu gürültüyü duyabiliyor musun ? Otomata teorik cennette binlerce muhteşem teorem, uygulama ve araçların sesi.

Diller ve otomatlar, bilgisayar biliminin her alanında bulacağınız zarif ve sağlam kavramlardır. Diller kuru değil, formalist bilgisayar tarihçesinden indirgeniyor. Dil teorisi perspektifi, karmaşık ve opak nesneler hakkındaki karmaşık soruları kelimeler ve ağaçlar hakkındaki basit ifadelere dağıttı. Biçimsel diller bilgisayar bilimlerinde cebir ve topoloji tarafından klasik matematiğe getirilen temel ve oyun değiştirici bakış açısına benzer bir rol oynamaktadır. Dil teorisi ile ele alınan bazı pratik, oldukça karmaşık, pratik problemler.

  1. Bir cümlenin yinelenen oluşumlarını bir belgedeki noktalara tespit etmek ve ikinci tekrarı silmek istiyorsunuz. Temelde, bir dizideki bir dilin yerine geçmek istersiniz.
  2. Bir program bir iddia ihlali içeriyor mu? Bir aygıt sürücüsü çekirdekle etkileşime girdiğinde bazı protokollere saygı duyuyor mu? Bir programın davranışı bir dizi yürütmedir; Başka bir deyişle, bir dil. Doğruluk özelliği başka bir dildir. Programın doğruluğu sorunu bir dil dahil etme kontrolünü tutar.
  3. Yazılımınız sonsuz bir döngüde sıkışıp kalabilir mi? Dağıtılmış bir algoritma bir livelock içeriyor mu? Sonsuz kelimeler üzerinden dillere ihtiyacımız var, ancak dil ekleme görünümü hala geçerli.
  4. Bir web uygulamasına girilen kötü amaçlı Javascript'i tespit etmek için bir dezenfektan inşa etmek istiyorsunuz. Kötü niyetli dizeler kümesi bir dildir. Dizelere başka bir dilde formlara girildi. Bu dillerin kesişiminin boş olup olmadığını belirlemek istiyorsunuz.
  5. Reaktif ve kritik sistemler için çalışma zamanı izleme. Kimyasal işleminizin çalışmasını denetleyen bir yazılım monitörü tasarlamak veya finansal bir veritabanındaki güncellemeleri takip etmek istiyorsunuz. Bunlar kalp dili katılımı ve kesişme problemlerindedir.
  6. Çok sayıda uygulamasıyla örüntü tanıma. Genomik verilerdeki, metindeki bir dizi hata raporundaki kalıpları tespit etmek istiyorsunuz. Bunlar, bilinmeyen bir dilden kelimeler verilen ve dili tahmin etmemiz gereken sorunlardır. Bunlar dil çıkarımı problemleridir.
  7. Bir dizi XML belgesi verildiğinde, bu belgeler için geçerli olan bir şemayı tersine çevirmek istersiniz. XML belgeleri bir ağaç idealize edilebilir. Bir şema daha sonra bir ağaç dilinin bir özelliğidir ve şema çıkarım sorunu, ağaç dillerine göre bir dil çıkarım problemidir.
  8. Birçok uygulama otomatik aritmetik mantık gerektirir. Diyelim ki doğal sayılar, ekleme ve kestirmeden daha azının olduğu Presburger aritmetiği gibi bir mantıksal teori belirlediğimizi varsayalım. N değişkenli bir formül, bir n boyutlu vektör kümesini temsil eder. Bir vektör, bir rakam dizisidir ve bir kelime olarak kodlanabilir. Bir tahmin o zaman bir kelime kümesidir; dil. Birleşme, ayrılma ve olumsuzlama gibi mantıksal işlemler kesişme, dillerin birleşmesi ve tamamlayıcısı haline gelir (varoluşsal nicelik bir yansıtmadır).

Yukarıda belirtilen azalma, dilleri soyut matematiksel nesneler olarak görür. Bu fikirleri pratikte uygulamak için, dilleri temsil eden bir veri yapısına ve bu veri yapılarını manipüle eden algoritmalara ihtiyacımız var.

Otomatik verileri girin. Otomatlar, diller gibi soyut matematiksel nesneler hakkındaki soruları somutlaştırmamızı, etiketli grafiklerle ilgili algoritmik soruları azaltmamızı sağlar. Diller ve otomata teorisi, bir çok pratik uygulamaların yanı sıra, çok önemli bir entelektüel hizmet sunmaktadır. Posta kodlarını biçimlendirmekten monadik ikinci mertebe mantığı için tek tip ve derli toplu bir kavramsal alanda karar prosedürlerine kadar uzanan sorunları düşünebiliriz. Bu ne kadar şaşırtıcı!

Mantık ve karar prosedürleri hakkında hiçbir şey söylemedim. (Evet, pratik uygulamaları var.) Yetkili bir bakış için Kaveh'in cevabına bakınız.


haha, ironi
Praveen Soni

16

Diğer cevaplarda açıklandığı gibi, otomata teorisi kavramsal olarak iyi anladığımız basit bir hesaplama modeli olarak önemlidir ve düzenli ifadeler ve otomatların birçok gerçek yaşam uygulaması vardır.

İşte modern bir kavramı anlamak için otomat teorisine geri dönen modern araştırma için küçük bir örnek. Bu yazıda araştırmacılar normal dillerin hepsinin özellik testçilerine sahip olduğunu kanıtladı: "Düzenli diller sabit sayıda sorgu ile test edilebilir"


15

Bu sadece vanilya otomatları değil. (Hesaplamalı) bir modelin temellerini (durumları kabul etme, epsilon-geçişleri, ...), neyin olabileceği ve daha da önemlisi bazı sorgu dilleriyle neyin ifade edilemeyeceği hakkında düşünmeye yardımcı olan şeyleri öğreniyorsunuz. Birkaç ilginç sonuç şunlardır:

(ve tabii ki diğer birçok dersi atlıyorum)

Temel olarak, çok genel bir model. Sınıflarınız muhtemelen otomatlar, diller ve mantık arasındaki bağı vurgulayacaktır.

Ben "dünyevi" araçlar beton ile ilişkilendirilecek bakıyorduk, ben bir kaç parça (AB?) Okuma kütüphanede bir yavaş sabah geçirmek istiyorum Veritabanları Vakıflar Abiteboul & arkadaşları tarafından ve sınıf malzemeye bu geri bağlanmaya çalışılırken . Tabii ki, o bir otomata sınıfının uygulamalarını aramanın (birçok) yolundan sadece bir tanesi ve sanırım en açık olanı değil - ama tam da bu yüzden ilginç bir alıştırma.


14

Çeşitli cevaplarda daha önce de belirtildiği gibi, UG derslerinde Otomata Teorisi daha gelişmiş (ve pratik) konuları tanıtmak ve ayrıca gözden kaçan bağlantıları işaret etmek için temel bir kavramsal çerçeve sunar; örneğin: İkili Karar Şemaları (DFA'nın en aza indirgenmesi; DFA'nın öğretilmesinden sonra genellikle BDD tabanlı bulmaca çözmeyi öğretiyorum); BioPerl ve BioPython'da (ve gerçek dünyadaki senaryo regexps'inde kaç tane istenmeyen eşleşmenin gizlenebileceğini güçlendirmek için harika bir ortam), resmi hata ayıklama (ihmal edilen FA, kesişen durum özellikleri) ve hatta VCR veya ev hırsız alarmı programlamasını içeren komut dosyası (Her gün tam belirtilmemiş bir otomatın stres durumu eksik örneklerle öğretildi; belki de Harel'in oyun oynama / oyun senaryosu tabanlı kullanıcı arayüzleri kullanılarak sentezlendi). Bu ayarı Python'a öğretmek için de kullanıyorum.


1
Hoşgeldin Ganesh!
Suresh Venkat

1
Otomatları öğretmenin güzel bir yolu. Ders notlarınızı paylaşmak ister misiniz?
Martin Berger

9

Tamamen farklı bir pratik açıdan başka bir cevap atacağım: sonlu durumlu makineler (veya en azından bazı basit genellemeler / uzantıları) oyun programlamanın AI tarafında sıklıkla kullanılır. Karakter davranışını kapsüllemek için mükemmel bir model sağladılar; örneğin, bir düşman aralarında iyi tanımlanmış geçişlerle 'devriye', 'arama', 'yaklaşım', 'saldırı', 'savunma', 'geri çekilme', 'ölmek' vb. durumları temsil edebilir. Bu, normal diller ve benzerleri gibi otomatların resmi yönlerini içermez, ancak otomat konsepti çok çekirdeklidir.


8

Teori ve pratiği zıt bir dilin üst üste koyduğu dilin, cehaleti tamamen tükettiğini, bir erkeğin ilk düşünce unsurlarını tanımadığını kanıtladığını ve kendini kanıtlamak için harika bir yol izlediğini gördük. onlara öğretilemeyecek kadar sapık olmak.

- James Mill (takma adıyla "PQ" yazıyor) "Teori ve Uygulama", Londra ve Westminster Review , Nisan 1836


8

Endüstride kullanılan model kontrolünde otomata teorisi ile ilgili önemli bir araştırma yapılmıştır. Kontrol Alanlar Enstitüsü'nde Moshe Vardi en son ders , özellikle otomata teorisi hala önemli ve yararlı olmasının nedeni tadına bakmak için 3 ders "Mantık, Otomata, Oyun ve Algoritmalar".

Özet:

Buechi, Elgot, Rabin ve Trakhtenbrot tarafından 1950'lerde ve 1960'larda ortaya konan karar prosedürlerine otomata-teorik yaklaşım, karar prosedürlerine en temel yaklaşımlardan biridir. Son zamanlarda, bu yaklaşım donanım ve yazılım sistemlerinin resmi olarak doğrulanmasında endüstriyel uygulamalar buldu. Mantıktan pratik algoritmalara giden yol sadece otomata değil, aynı zamanda 1970'lerin sonlarında Chandra, Kozen ve Stockmeyer tarafından algoritmik olarak çalışılan oyunlara da uzanıyor. Bu genel bakış konuşmasında, mantıktan algoritmalara otomatalar ve oyunlar yoluyla giden yolu tarif ediyoruz.

Derslerin slaytları ve ses dosyaları burada mevcuttur: 1 , 2 , 3 .


6

"Pratik" ve "uygulama" kelimelerinin anlamlarını dikkate almalıyız. Bazı öğrenciler için pratik , sınavlarını geçmelerine yardımcı olacak herhangi bir şeydir; diğerleri için, bir işte gelecek herhangi bir şey. Her iki durumda da, Otomat Teorisi gerçekten çok pratiktir.

Diğerlerinin de belirttiği gibi, örneğin derleyiciler çalışırken gramerleri kullanacaksınız. Ancak bundan daha da fazlası: farklı devletlere sahip olma ve aralarındaki geçişler için kurallara sahip olma kavramını anlamak, örneğin, kodunuzun burada ve orada gereksiz olduğunu ve bunu iyileştirdiğinizde, bunun gereksiz olduğunu anladığınızda sizi daha iyi bir programcı yapabilir vardır uygulayarak kodunuzdaki aynı kavramsal fikirler DFA minimizasyonu arkasında.

Benzer şekilde "uygulama". Bu kelimeden ne anlıyorsun? "Dünyaya düşkün mühendis" olsanız bile, gerçek dünyadaki projelerde Automata Teorisi'ne benzer fikirleri görecek ve kullanacaksınız: programlama kodu, akış şemaları ve hatta bir yığının basit ama mükemmel konsepti. Benim gibi teorik inekler için , Automata Teorisinin mantık, cebir ve sonlu model teorisi gibi diğer alanlarda uygulanmasını düşünüyorum . Elbette, bir süpermarkette alışveriş yaparken asla pompalama lemasını kullanmam gerekmeyecek, ancak bunun gibi teoremler , yazışma yaptıkları mantık ve cebirsel yapılardan bahsetmeden, bazı dil sınıflarının yapısını anlamama yardımcı oldu . Ve bu pratiklik ölçütünden daha fazla değer verdiğim bir şey.


5

Mantıklarla birlikte atıldığında, otomatlar gibi heykelleri kontrol etmenin yollarını sunabilir

Aφ

AφAφ

φAφAφL(A)L(Aφ)


3

Çoğunlukla farklı bağlamlarda sonlu durum makineleri olarak yazılan Sonlu Otomatlar veya olasılık değişkenleri ile Saklı Markov Modelleri, bir örüntü tanıma ve niceleme yapısına uygulanabilir. Örn., Belirli bir olasılık dağılımına göre, az ya da çok, ya da bazı dağılımlardan bir dizi dizgenin (ya da zaman serisinin) istatistiksel özelliklerini eşleştiren dizgiler üretecek olan en küçük stokastik sonlu otomat nedir?

Örneğin , gizli durumları kör bir şekilde yeniden yapılandırmak için bir algoritma olan CSSR'ye bakınız ; Saklı Markov Modellerinden daha verimli ve esnektir.


1
Pratik tarafa eklemek için, Saklı Markov Modelleri, Kurzweil gibi konuşma tanıma programlarında kullanılmaktadır.
tdyen

3

Otomata teorisinin daha pratik bir uygulaması da yapay zekanın gelişimidir. Yapay Zeka sonlu otomat konseptinden geliştirilmiştir. Sinirsel robot ağı, otomata teorisi temel alınarak inşa edilmiştir. Tüm robotlar da otomata sonra.


2

Bazıları, endüstri ile olan ilişkisi konusunda büyük cevaplar verdi. Önemli olması gereken, bilimsel değeridir ve Automata teorisi, genellikle bir lisans öğrencisinin çalışmalarında daha yüksek bir hesaplama teorisi seviyesini anlamanın giriş kapısıdır. Otomata teorisi, Teorik Bilgisayar Bilimi'nde ve özellikle de Derleyiciler gibi uygulamalardan bahsetmek istediğinde ortaya çıkan her tür teorilere sahiptir. Bilimsel değeri (eski değil, nasıl olabilir? Alanın temel teorisidir.) Hesaplamaya ilgi duyan her bilim insanı için pratiktir. Hesaplamanın doğasını anlayan veya anlamak isteyenler için faydalı olduğu için pratiktir. Eğer içinde bir kullanım bulamazsanız, bir araştırmayı sorgularım ya da programlamayı yapmadığı için CS'yi incelemeyi düşünürüm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.