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