Afin fonksiyonun değerlerinin dili


10

Yaz n¯ ondalık genişlemesi için n (hayır lider ile 0). Let a ve b ile tamsayılar olmak a>0 . a artı sabitinin katlarının ondalık genişlemelerinin dilini düşünün :

M={ax+b¯xN}

M düzenli? bağlamdan bağımsız?

( Afin fonksiyon grafiğinin dili ile kontrast )

Bunun iyi bir ödev sorusu olacağını düşünüyorum, bu yüzden bir veya iki ipucu ile başlayan ve sadece sorunun nasıl çözüleceğini değil, aynı zamanda hangi tekniklerin kullanılacağına nasıl karar verileceğini açıklayan cevaplar takdir edilecektir.


Şimdi, @vonbrand fikrini takip ederek, belirli bir vakayı yanıtladığımı anlıyorum. 43'e bölünebilen doğal sayının ondalık temsilini kabul eden DFA
Hendrik

Yanıtlar:


9

aa1qdb mod a b > a(10q+d)modabmodab>a


1
Çok güzel - benimkinden çok daha iyi!
David Lewis

8

Düzenlidir. İlk önce herhangi bir tabanda genelleme yapacak olan ikili olarak çalışalım> 1. söz konusu dil olsun. A = 1, b = 0 için elde ederizMa,b

M1,0={1,10,11,100,101,...}

bu, üzerindeki tüm dizelerdir ve bunların önünde sıfır yoktur, bu da normaldir (bunun için düzenli bir ifade oluşturun).{0,1}

Şimdi herhangi biri için , hala b 0 ile aldığımız dan olan bir tarafından sayısal olarak çarparak, dönüşümü gerçekleştirerek her dizesi . Bu, sabit dizge a'nın bitlerine bağlı olan bir dizi kaydırma ve ekleme ile bitsel olarak yapılabilir . İhtiyacımız olan iki dönüşüm:M a , 0 M 1 , 0 ˉ x¯ a x M a , 0aMa,0M1,0x¯ax¯Ma,0ˉ axa¯

ˉ x ˉ x 0x¯2x¯ ,x¯x¯0

ve

x¯2x+x¯

Sağda 0'ı birleştirmek düzenliliği açıkça korur. Bu nedenle, sadece ikinci operasyonun düzenliliği koruduğunu kanıtlamamız gerekir. Bunu yapmanın yolu , sağdan sola üzerinde çalışan bir sonlu durum dönüştürücüsüdür . Bu en zor adım. Durumları kullanmak yerine, sözde kod programı ve bazı sınırlı yardımcı bellek (bazı bit değişkenleri gibi) ile yapmayı öneririm. Bellek tüm girişler üzerinde sabit bir boyutta olduğu ve kesinlikle sağdan sola taradığınız sürece, sonlu bir durum aktarımıdır ve düzenliliği korur.x¯

Son olarak, dan elde etmek için her dizeye sayısal olarak eklememiz gerekir , ancak bu , sabit sayı b'ye bağlı olan benzer bir dönüştürücü ile yapılır . M a , 0 b T bMa,bMa,0bTb

Herhangi bir tabanda aynısını yapmak için, ek olarak d'ye bağlı bir dönüştürücü kullanarak, bu tabanda tek bir basamak çarpma işleminin nasıl yapılacağını gösterin . Bununla, çok basamaklı sayılarla çarpabilir ve yine de normal dillerde kalabiliriz. Veya, ile çarpmanın sadece tekrarlanan bir ekleme olduğunu söyleyerek bu durumdan keyif alabiliriz .S d ddSdd

Sadece ipuçları istedin. Bu adımların her biri oldukça karmaşık bir teorem / tekniğe bağlıdır, bu yüzden tam bir kanıt elde etmenin kanıtlanması ekstra çalışma olacaktır.


FA'nız giriş olarak almaz , bu yüzden yazdıklarınızın eldeki dilin normal olduğunu nasıl gösterdiğini göremiyorum. Sonlu bellek kullanan her programın FA'ya karşılık gelmediğine dikkat edin: her giriş sembolünü tam olarak bir kez dikkate alarak girişin üzerine yalnızca bir kez ve soldan sağa gidebilir . x¯
Raphael

@ Raphael İsterseniz sağdan sola gidebilirsiniz, önemli olan şey tutarlı olmaktır. David'in kanıt taslağında bir kusur bulamıyorum; dönüştürücüler çağırmak düşündüğümden biraz daha az basittir, ancak geçerli görünüyor.
Gilles 'SO

@Gilles: Her şeyden önce, çarpma işleminin ile nasıl serpiştirileceğini ve tek geçişte sonuca eklenmesini açıklamaz ; hatta çarpmayı ile "bir dizi kaydırma ve eklemesi" olarak azaltır . Her bir vardiya ve ekleme iyidir, ancak sıra nasıl yapılır? İkincisi ve daha da önemlisi, hesaplayan bir dönüştürücünün nasıl oluşturulacağını gösterir ; O mu değil hemen size FA vermek kabul . Örneğin, sayıları çarpmak kolaydır ancak çarpanlara ayırma işlemi (iddia edildiği gibi) değildir. Bu yüzden en azından ek bir tartışmaya ihtiyacınız var. b a x ˉ x¯ a x + b Mabax x¯ax+b¯ M
Raphael

Ben bir ÖSO inşa etmiyorum. Kolayca düzenli ( ) olarak gösterilen bir başlıyorum ve daha sonra içindeki tüm dizeleri, her biri düzenliliği koruyan sonlu bir dizi işlemle dönüştürüyorum. Bu, bir dizi geçişi gerektirir (dönüştürücü). Ancak her şeyden önce transdüserlerin ve yapının dizisi sadece ve dayanarak önceden sabitlendiğinden sorun yok . Her geçiş (dönüştürücü) düzenliliği korur, bu yüzden bunları bir geçişte serpiştirmeye gerek yoktur. Evet, "temel" değil. Ancak bir seferde, bir geçişte bir FSA oluşturmak çok karmaşık olacaktır. a bM1,0ab
David Lewis

1
@ Raphael - evet, bu çok güçlü. Aslında, düzenli olmayan birçok aile de sonlu durumlu transdüserler altında kapalıdır. Ayrıca, transdüserleri indirgeme mekanizması olarak kullanabilirsiniz ve normal olmayan dillerin "yapısal" karmaşıklığı teorisini elde edebilirsiniz.
David Lewis

8

İpucu # 1 : önce en popüler sorunu ilk önce " en küçük bit biti belirdiğinde " 3 ile bölünebilen sayıların ondalık / ikili gösterimlerini tanıyan bir otomat yazın " .

Ara soru: düzenli olduğunu .{ax+b¯ax+b0xZ}

İpucu # 2 : "modulo " fonksiyonunun grafiği sonludur. Her için hesaplayabilir içinde basamak seti ve otomat dili hem de.a d { 0 , , 9 }(n10n+d)ad{0,,9}

3. ipucu : Şimdi, yerine ile . Bu ne değişir? Geçici bir otomasyon oluşturmak yerine, düzenli dillerin kesişme ile sabit olduğu gerçeğini kullanmaya çalışın . x NxZxN

4. İpucu : şimdi varsayalım asal sayıdır (böylece nereye durumda hala bir alandır) ve . Şimdi ilk bitin en önemli bit olduğu bir gösterim kullanıyoruz . Otomatı aynı şekilde kurabilir misiniz?Z / a Z x ZaZ/aZxZ

İpucu # 5 : Bir dilin düzenli olduğunu kanıtlamak için her zaman bir otomasyon oluşturmanız gerekmez. düzenli olduğunu kanıtlamak için önceki sonuçları nasıl kullanabilirsiniz ? (önce en önemli bit ile)M


Bunun uygun olmadığını düşünüyorsanız yorum yapmaktan çekinmeyin.
jmad

İpucu # 1 büyük bir adımdır. 4. ipucunda, ve farklı olduğunu fark etmek önemlidir . üzerinden gitmek dolambaçlı yol gibi geliyor, işaret karakterini yönetmelisiniz: neden kalmıyorsunuz ? a 10 Z Na{2,5}a10ZN
Gilles 'SO- kötü olmayı bırak'

@Gilles: ve olduğunda demek istedim , çünkü tanımak sıkıcı. birx+b0xZ3x+1234ax+b¯ax+b0xZ3x+1234
jmad

@Gilles: Bence 1. İpucu şımartılamayacak kadar havalı. Muhtemelen 4 numaralı İpucu konusunda haklısınız.
jmad

5

@Vonbrand fikrini takip ediyorum:

İpucu 1:

Önce için çözün . Sen kullanabilir Myhill-Nerode Teoremi.b=0

Aşağıdaki ilişkiyi tanımlarız . Bu açıkça bir denklik ilişkisidir. Ayrıca biz ekleme çünkü eğer sağ uygun bir şekilde, bir basamaklı aldığımız . Son olarak eşittir , çünkü denklik sınıfıdır . Yana düzenli olduğunu biz Myhill-Nerode Teoremi tarafından sahip sınıfların sınırlı sayıda vardır. İlişkili ÖSO minimaldir ve durumu vardır.d ˉ xˉ yx¯y¯:xymodadLL[0]ax¯y¯10x+d10y+dmodax¯dy¯dLL[0]a

İpucu 2:

Genel durumu çözün, vakasının neden olduğu otomatı tekrar kullanın .b=0

Dilin için normal olduğunu biliyoruz . Bu nedenle dili için basitçe FSA durumu alın . Şimdi için bir FSA inşa ediyoruz . Varsayın sahiptir basamak. Daha sonra FSA, 10 ary derinlikli bir ağacı gibi dallanır ve basamaklı sayılara giden tüm yolları içerir . biçiminde olmayan bir sayı ile ulaşılabilen tüm durumlar, başka türlü kabul etmiyor. Son olarak, FSA'nın ağaç kısmını, bölümünün geri kalanına göre, otomasyonuna bağlarız .a M b = 0 L b k k k a x + b M ab=0aMb=0Lbkkkax+bMa


Tekniği anlıyorum ama detayları değil. İpucu 1, örneğine de bakmıyor mu? Dahası, mod 10 için ben 10 devletleri (beklediğinizPowerPoint )? aa=1a
Hendrik Ocak

3

Dil düzenli.

İpucu: Dokuz oyuncu


İspat fikri

İçin ve ,b < 9a=9b<9

ile etiketlenmiş durumlu bir otomat oluşturun . başlangıç ​​durumudur ve son durum . Durum , rakamında , duruma geçiş .0 8 0 b s d ( s + d )9080bsd(s+d)mod9

Diğer değerlerini işlemek için ile aralarında asal olan ,10a10

paketler grup rakam bazı bulmak için , öyle ki bölme (örneğin, çekme ise için ).ka10k1k=3a=37999=27×37

Sadece asal faktörleri ve olan değerleri ele almak ,a25

her şeyin sonunda sınırlı sayıda basamak olduğunu unutmayın.

ve tüm değerlerine genelleme yapmak için ,ab

Sendika ve düzenli dillerin kesiştiği sonlu dilleri düzenli olması, düzenli olduğu gerçeğini kullanın ve katları olduğu ikisinin tam katları olan ve aralarında asal bulunmaktadır.a1a2a1a2

Hangi tekniğin uygun olduğunu kullandığımızı unutmayın; üç temel temel tekniğin (düzenli ifadeler, sonlu otomata, set-teorik özellikler) hepsi bu kanıtta temsil edilmektedir.


Ayrıntılı kanıt

Let ile ile asal . Bırakın ve . Temel aritmetik olarak, sayılar için eşit modülo tam sayı eşittir modülo ve modülo , yani . Normal dillerin kesişimi düzenli olduğundan vea=2p5qaa10M={ax+b¯xZax+b0}M={2p5qx+b¯xZ2p5qx+b0}babab2p5qM{x¯xb}=MM{x¯xb}{x¯xb}düzenli olduğu için sonlu (dolayısıyla düzenli) bir dilin tamamlayıcısıdır, eğer ve de düzenli ise, normaldir; ve bu nedenle , bu dilin sonlu kümeyle birleşmesi olduğu için düzenlidir. Bu nedenle kanıtı sonuçlandırmak için ve nin düzenli olduğunu kanıtlamak yeterlidir .MMM{x¯xb}MMM

ile başlayalım , yani modulo numaraları . Ondalık genişlemesi olan tamsayılar son basamaklarıyla karakterize edilir , çünkü basamakları sola değiştirmek ki bu değerinin katıdır . Bu nedenle tamamen rakamlardan alfabe ve uzunlukta bir kelime sonlu dizi , ve normal bir dildir.M2p5qMmax(p,q)10max(p,q)2p5q0M=FFmax(p,q)M=(F)(({0}))

Şimdi dönüp yani sayılar modulo, ile aralarında asal . Eğer daha sonra her doğalarından örneğin, ondalık açılımları dizi a,, normal dil. Şimdi varsayıyoruz . Let . Fermat'ın küçük teoremi ile, , yani böler . tanıyacak deterministik bir sonlu otomat üretiyoruz :Maa10a=1MM={0}(({0}))a>1k=a110a11modaa10k10M

  • Durumlar . Birinci kısım, bir rakamın konumunu temsil eder ve ikinci kısım bir sayı modulo temsil .[0,k1]×[0,10k2]10k1
  • Başlangıç ​​durumu dır .(0,0)
  • Etiketli bir geçiş vardır dan için ancak ve ancak ve .d(i,u)(j,v)vd10i+umod10k1ji+1modk
  • Bir durum son olarak dır ( böler ).(i,u)ubmodaa10k1

Durumu bir kelime ulaşılabilir tatmin ve . Bu, otomattaki geçişleri takiben sözcük üzerinde indüksiyonla kanıtlanabilir; bunun için geçişler, gerçeği kullanılarak hesaplanır . Böylece otomasyon , ile biçimindeki sayıların ondalık genişlemelerini (başlangıç ​​sıfırlarına izin vererek) tanır ; çünkü'otomat sayıların ondalık açılımları için eşit tanır modülo olan, ilk sıfır izin(i,u)x¯i|x¯|modkuxmod10k110k1mod10k1u+y10kubmoda b a 0 M M = ( 0 M ) ( ( { 0 } ) )10k1modaba0M . Dolayısıyla bu dil düzenli olarak kanıtlanmıştır. Son olarak, normal bir dildir.M=(0M)(({0}))

dışındaki bazlara genelleme yapmak için , yukarıdaki ve tabanın tüm ana faktörleriyle değiştirin.2 51025

Resmi kanıt

En sevdiğiniz teorem uzmanında okuyucu için bir egzersiz olarak bırakıldı.

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.