SORU
16 Temmuz 2011, CUMARTESİ


Düzenli bir dil nedir?

Dil düzeyleri (normal, bağlam özgür, duyarlı, vs.) kavramını anlamaya çalışıyorum.

Bu kolayca bakabilirim, ama ben tüm açıklamalar semboller yük ve hakkında konuşmak bulmak 'ayarlar'. İki sorum var:

  1. Düzenli bir dil ve farklı dillerde dilleri farklı nasıl kelimelerle tarif EDEBİLİR MİSİN?

  2. Nerede insanları anlamak bu şeyler öğrenir? Anladığım kadarıyla, resmi matematik değil mi? Kullanılan ve herkes öğretmenler sadece bunu biliyorduk farz olarak anlaşılması zor uni dersleri bir çift vardı. Nereden öğrenebilirim ve neden insanlar bu kadar çok kaynaklarda bunu bilmek? bekleniyor Eğitimde bir boşluk var gibi.

İşte example bir:

Herhangi bir dil bu set ait alfabe düzenli bir dildir.

Nasıl bir dil 'üzerinden bir şey var mı?

CEVAP
16 Temmuz 2011, CUMARTESİ


Bilgisayar bilimi, bir bağlamdakelimebirleştirmeyisemboller. Kullanılan semboller deniralfabe. Örneğin, bazı kelimeleri alfabe dışı {0,1,2,3,4,5,6,7,8,9} kurulması1, 2, , *, *912543, 002 olurdu.

Birdilsonra tüm olası kelimelerin bir alt kümesidir. Örneğin, tüm elit MI6 ajanları yakalayan bir dil tanımlamak isteyebiliriz. Bunların hepsi başlangıç ile çift 0, yani bir deyişle dil olurdu 007, 001, 005, 0012 ama 07 15. Basitlik aşkına, bir dildirüzerindebir alfabe" kelimeleri yerine semboller . birleştirme oluşturduğu "bir alt ^em>bir alfabe".

Bilgisayar bilimi, artık dilleri sınıflandırmak istiyorum. Bir dil diyoruznormaleğer bir kelime ise, karar verilir, eğer bir algoritma ile dil sonra başka sözcük tüm sembolleri inceleyerek (sonlu) sabit belleğe sahip bir makine/. Dili ibaret sadece sözü 42 düzenli olarak karar verebilirsiniz bir kelime içinde gerektirmeden keyfi miktarda bellek; sadece kontrol edip ilk sembolü 4, ister ikinci 2 ya da daha fazla numaraları izleyin.

Tüm dillerde sınırlı sayıda kelime vardır normal, çünkü biz (teorik olarak) sadece yapı denetim akışı ağacı sürekli boyutu (görselleştirmek bunun gibi bir sürü iç içe if-deyimleri incelemek için bir rakam, sonra diğeri). Örneğin, biz test edip bir kelimedir "asal sayıları 10 ila 99" dili ile aşağıdaki inşa gerektiren hiçbir bellek hariç kodlamak hangi kod satırı ediyoruz şu anda

if word[0] == 1:
  if word[1] == 1: # 11
      return true # "accept" word, i.e. it's in the language
  if word[1] == 3: # 13
      return true
...
return false

Unutmayın bütün sonlu dilleri düzenli, ancak tüm düzenli diller sonlu; bizim çift 0 dili içeren sonsuz sayıda kelime (007, 008, ama aynı zamanda 004242 0012345), ama olabilir test ile sabit bellek: test edip bir kelime ait olduğu, kontrol edip ilk sembolü 0 ya da ikinci sembol 0. Eğer durum buysa, kabul et. İki sözcüğü daha kısa, ya da 00 ile başlamazsa MI6 kod adı değil.

Resmen finite-state machine regular grammar düzenli bir dil olduğunu kanıtlamak için kullanılan bir yapı. Bu if-yukarıdaki açıklamalara benzer, ama keyfi Uzun kelime için izin verir. Eğer sonlu bir makine varsa, o da düzenli bir dilbilgisi vardır, ve tersi, yani ya göstermek için yeterli. Örneğin, çift-0 dilimizi için sonlu durum makinesi

start state:  if input = 0 then goto state 2
start state:  if input = 1 then fail
start state:  if input = 2 then fail
...
state 2: if input = 0 then accept
state 2: if input != 0 then fail
accept: for any input, accept

37 ** eşittir:

start → 0 B
B → 0 accept
accept → 0 accept
accept → 1 accept
...

38 ** eşittir:

00[0-9]*

Bazı diller vardırdeğilnormal. Örneğin, 1, 2 1 . (genellikle yazılı aynı sayıda ardından herhangi bir sayı dili ^sup>n2nbir keyfi içinndeğil normal ihtiyacın daha sürekli bir bellek miktarı(= sabit bir sayı Birleşik Devletleri) mağaza sayısı 1s olup olmadığına karar verirler bir kelimedir dili.

Bu genellikle teorik bilgisayar bilimleri dersinde anlatılmalıdır. Neyse ki, Wikipedia oldukça güzel formal regular languages hem de açıklar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • audivila

    audivila

    5 HAZİRAN 2009
  • Curso Online Gratuito

    Curso Online

    4 Aralık 2011
  • inovationgmbh

    inovationgmb

    28 EYLÜL 2010