ภาษาของค่าของฟังก์ชันเลียนแบบ


10

เขียนสำหรับการขยายทศนิยมของ (โดยไม่นำหน้า) ให้และเป็นจำนวนเต็มกับ0 พิจารณาภาษาของการขยายทศนิยมของทวีคูณของบวกค่าคงที่:ˉ nn¯ nn0aabba>0a>0aa

M = { ¯ ax + bxN}

M={ax+b¯¯¯¯¯¯¯¯¯¯¯¯¯¯xN}

คือปกติ? บริบทฟรีหรือไม่MM

(ตรงกันข้ามกับภาษาของกราฟของฟังก์ชันเลียนแบบ )

ฉันคิดว่านี่จะเป็นคำถามทำการบ้านที่ดีดังนั้นคำตอบที่เริ่มต้นด้วยคำใบ้หรือสองและอธิบายไม่เพียง แต่วิธีการแก้ปัญหา แต่ยังรวมถึงวิธีการตัดสินใจว่าจะใช้เทคนิคใดในการใช้งาน


เพิ่งทราบว่าฉันได้ตอบกรณีเฉพาะของมันแล้วตามแนวคิดของ @vonbrand DFA ที่รับการแทนทศนิยมของจำนวนธรรมชาติหารด้วย 43
Hendrik Jan

คำตอบ:



8

เป็นเรื่องปกติ ก่อนอื่นมาทำงานในระบบเลขฐานสองซึ่งจะสรุปกับฐานใด ๆ > 1 ให้M a , bMa,bเป็นภาษาที่สงสัย สำหรับ a = 1, b = 0 เราได้รับ

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

ซึ่งเป็นสตริงทั้งหมดที่อยู่เหนือ{ 0 , 1 }{0,1}โดยไม่มีศูนย์นำหน้าซึ่งเป็นปกติ (สร้างนิพจน์ทั่วไปสำหรับมัน)

ทีนี้สำหรับaใด ๆaด้วย b นิ่ง 0 เราจะได้จากโดยการคูณตัวเลขด้วย a นั่นคือทำการแปลงในแต่ละสตริงของ0} ที่สามารถเป็นบิตทำโดยลำดับของการเปลี่ยนแปลงและเพิ่มเติมของที่ขึ้นอยู่กับบิตของสตริงคงที่บาร์ การแปลงสองอย่างที่เราต้องการคือ:M , 0 M 1 , 0 ˉ x¯ x M , 0 x ˉMa,0M1,0x¯ax¯¯¯¯¯¯Ma,0xa¯

ˉ x ¯ 2 x ˉ x ˉ x 0x¯2x¯¯¯¯¯ซึ่งคือx¯x¯0

และ

ˉx¯2x+xx¯2 x + x¯¯¯¯¯¯¯¯¯¯¯¯¯¯

การต่อ 0 ทางด้านขวาให้ชัดเจนจะคงความเป็นระเบียบ เราจึงต้องพิสูจน์ว่าการผ่าตัดครั้งที่สองนั้นคงความสม่ำเสมอ วิธีที่จะทำคือกับตัวแปลงสัญญาณสถานะ จำกัด ทำงานบนจากขวาไปซ้าย นั่นเป็นขั้นตอนที่ยากที่สุด ฉันขอแนะนำให้ทำด้วยโปรแกรมโค้ดหลอกและหน่วยความจำ จำกัด บางอย่าง (เช่นตัวแปรบิต) แทนที่จะใช้สถานะ ตราบใดที่หน่วยความจำมีขนาดคงที่สำหรับอินพุตทั้งหมดและคุณสแกนจากขวาไปซ้ายอย่างเคร่งครัดมันเป็นการแปลงสถานะแบบ จำกัด และรักษาความสม่ำเสมอˉxx¯

สุดท้ายที่จะได้รับจากเราจำเป็นต้องเพิ่มตัวเลขแต่ละสตริง แต่ที่ทำได้ด้วยตัวแปลงสัญญาณที่คล้ายกันซึ่งขึ้นอยู่กับจำนวนคงที่ขMa,bMa , bMa,0Ma , 0bTbT

จะทำเช่นเดียวกันในฐานใด ๆ นอกจากนี้แสดงวิธีการดำเนินการคูณด้วยตัวเลขหลักเดียวในฐานที่ใช้ตัวแปลงสัญญาณที่ขึ้นอยู่กับ d ด้วยเหตุนี้เราสามารถคูณด้วยตัวเลขหลายหลักและยังคงอยู่ในภาษาปกติ หรือเราสามารถกลเม็ดนี้โดยบอกว่าการคูณด้วยเป็นการเติมซ้ำd S d ddSdd

คุณต้องการเพียงคำใบ้ แต่ละขั้นตอนเหล่านั้นขึ้นอยู่กับทฤษฎี / เทคนิคที่ซับซ้อนพอสมควรดังนั้นการพิสูจน์ว่าการพิสูจน์ที่สมบูรณ์นั้นจะเป็นงานพิเศษ


FA ของคุณไม่ได้รับˉ xเป็นข้อมูลป้อนเข้าดังนั้นฉันไม่เห็นว่าสิ่งที่คุณเขียนแสดงให้เห็นว่าภาษาในมือเป็นเรื่องปกติ โปรดทราบว่าไม่ใช่ทุกโปรแกรมที่ใช้หน่วยความจำ จำกัด ที่ตรงกับ FA: มันเป็นสิ่งสำคัญที่สามารถไปได้เพียงครั้งเดียวและจากซ้ายไปขวาเหนืออินพุตโดยพิจารณาทุกสัญลักษณ์อินพุตหนึ่งครั้ง x¯
กราฟิลส์

@ ราฟาเอลคุณสามารถไปจากขวาไปซ้ายหากคุณต้องการสิ่งที่สอดคล้องกัน ฉันไม่สามารถหาข้อบกพร่องในร่างของดาวิดได้ การเรียกใช้ทรานสดิวเซอร์เป็นระดับเบื้องต้นน้อยกว่าที่ฉันคาดไว้ แต่มันก็ใช้ได้จริง
Gilles 'หยุดความชั่วร้าย'

@Gilles: ครั้งแรกของทั้งหมดที่เขาไม่ได้อธิบายวิธีการคูณแทรกโดยและการเพิ่มของเพื่อผลในหนึ่งผ่าน ; เขายังลดการคูณด้วยaถึง "ลำดับของการเลื่อนและการเพิ่มของx " ทุกการกะและการเพิ่มนั้นทำได้ดี แต่ทำลำดับอย่างไร ประการที่สองและที่สำคัญเขาแสดงให้เห็นถึงวิธีการสร้างพลังที่คำนวณˉ x¯ x + ; ที่ไม่ให้ FA ทันทีที่ยอมรับMaax x¯a x + b¯¯¯¯¯¯¯¯¯¯¯¯¯¯ M. ตัวอย่างเช่นการคูณตัวเลขนั้นง่าย แต่การแยกตัวประกอบนั้นไม่ใช่ (ที่ถูกกล่าวหา) ดังนั้นคุณต้องการอาร์กิวเมนต์เพิ่มเติมอย่างน้อย
Raphael

ฉันไม่ได้สร้าง FSA ฉันเริ่มต้นด้วยชุดที่แสดงให้เห็นได้อย่างง่ายดายว่าเป็นเรื่องปกติ ( M 1 , 0 ) จากนั้นเปลี่ยนสตริงทั้งหมดที่อยู่ในนั้นด้วยชุดปฏิบัติการที่มี จำกัด ซึ่งแต่ละชุดจะคงความเป็นระเบียบ สิ่งนี้ต้องการจำนวนครั้งที่ผ่าน (ทรานสดิวเซอร์) แต่ก็ไม่เป็นไรเนื่องจากลำดับของตัวแปลงสัญญาณและโครงสร้างของแต่ละตัวได้รับการแก้ไขล่วงหน้าโดยอิงจากaและbเท่านั้น แต่ละรอบ (ตัวแปลงสัญญาณ) รักษาความสม่ำเสมอดังนั้นจึงไม่จำเป็นต้องสอดแทรกพวกเขาในครั้งเดียว ใช่ไม่ใช่ "ระดับต้น" แต่การสร้าง FSA ในครั้งเดียวโดยผ่านครั้งเดียวจะซับซ้อนมาก M1 , 0a
David Lewis

1
@ ราฟาเอล - ใช่มันมีประสิทธิภาพมาก ในความเป็นจริงแล้วครอบครัวที่ไม่ได้อยู่ในครอบครัวหลายแห่งก็ปิดตัวเองภายใต้ตัวแปลงสัญญาณสถานะอัน จำกัด และคุณสามารถใช้ทรานสดิวเซอร์เป็นกลไกการลดรับทฤษฎีทั้งหมดของความซับซ้อน "โครงสร้าง" ของภาษาที่ไม่ปกติ
เดวิดเลวิสมี. ค.

8

คำแนะนำ # 1 : ก่อนอื่นแก้ปัญหาที่เป็นที่นิยมมากขึ้น "เขียนหุ่นยนต์ที่รับรู้การแทนทศนิยม / ไบนารีของตัวเลขหารด้วย 3" เมื่อบิตที่สำคัญน้อยที่สุดปรากฏขึ้นก่อน

คำถามระดับกลาง: พิสูจน์ว่า{ ¯ ax + bax + b 0x Z }เป็นเรื่องปกติ{ ax + b¯¯¯¯¯¯¯¯¯¯¯¯¯¯|x + b 0x Z }

คำแนะนำ # 2 : กราฟของฟังก์ชั่น( n 10 n + d ) "โมดูโลa " นั้น จำกัด คุณสามารถคำนวณมันสำหรับแต่ละdใน{ 0 , , 9 }ซึ่งเป็นทั้งชุดของตัวเลขและภาษาของหุ่นยนต์ของคุณ(n10n+d)ad{0,,9}

แบะท่า # 3 : ตอนนี้แทนที่x Zกับx N การเปลี่ยนแปลงนี้คืออะไร? พยายามที่จะใช้ความจริงที่ว่าภาษาปกติมีเสถียรภาพจากการตัดกันแทนการสร้างAd-hocหุ่นยนต์xZxN

แบะท่า # 4 : ตอนนี้คิดว่าเป็นจำนวนเฉพาะ (เพื่อให้Z / Zเป็นเขต) และที่เรายังคงอยู่ในกรณีที่x Z ขณะนี้เราใช้การแสดงที่บิตแรกเป็นที่สำคัญที่สุดบิต คุณสามารถสร้างหุ่นยนต์ด้วยวิธีเดียวกันได้หรือไม่?aZ/aZxZ

คำแนะนำ # 5 : คุณไม่จำเป็นต้องสร้างหุ่นยนต์เพื่อพิสูจน์ภาษาเป็นประจำ คุณสามารถใช้ผลลัพธ์ก่อนหน้าเพื่อพิสูจน์ว่าMเป็นปกติได้อย่างไร (ด้วยบิตที่สำคัญที่สุดก่อน)M


อย่าลังเลที่จะแสดงความคิดเห็นหากคุณรู้สึกว่าสิ่งนี้ไม่เหมาะสม
jmad

คำแนะนำ # 1 เป็นขั้นตอนใหญ่ ในคำใบ้ # 4 จึงเป็นสิ่งสำคัญที่จะตระหนักว่า{ 2 , 5 }และ10จะแตกต่างกัน เมื่อผ่านZจะรู้สึกเหมือนอ้อมคุณต้องจัดการตัวละคร: ทำไมไม่อยู่ในN ? a{2,5}a10ZN
Gilles 'หยุดความชั่วร้าย'

@Gilles: ผมอยากจะบอกว่า¯ x + Bเมื่อx + 0และx Zเพราะ3 x + 1234เป็นที่น่าเบื่อที่จะรับรู้ ax+b¯¯¯¯¯¯¯¯¯¯¯¯¯¯ax+b0xZ3x+1234
jmad

@Gilles: ฉันคิดว่าคำแนะนำ # 1 เจ๋งเกินไปที่จะถูกทำลาย คุณอาจถูกต้องเกี่ยวกับคำแนะนำ # 4
jmad

5

ฉันกำลังติดตามแนวคิดของ @vonbrand:

คำแนะนำ 1:

แก้ไขครั้งแรกสำหรับ= 0 คุณอาจใช้ทฤษฎีบทMyhill-Nerodeb=0

เรากำหนดความสัมพันธ์ต่อไปˉ xˉ Y :x yพอควร . เห็นได้ชัดว่านี่คือความสัมพันธ์ที่เท่าเทียมกัน นอกจากนี้มันเป็นสิทธิที่สอดคล้องกันเพราะถ้าเราผนวกหลัก dเราได้รับ ˉ xˉ Yx¯y¯:xymodad10 x + d 10 y + dพอควรaˉ x d ˉ Y d ในที่สุดมันก็อิ่มตัวLตั้งแต่Lเป็นชั้นสมมูล[0] เนื่องจากมีคลาสจำนวน จำกัด ที่เรามีโดยทฤษฎีบท Myhill-Nerode ว่าเป็นเรื่องปกติ FSA ที่เกี่ยวข้องน้อยที่สุดและมีรัฐx¯y¯10x+d10y+dmodax¯dy¯dLL[0]a

คำแนะนำ 2:

แก้ปัญหากรณีทั่วไปนำมาใช้หุ่นยนต์เหนี่ยวนำโดย= 0กรณีb=0

เรารู้ว่าภาษาเป็นปกติสำหรับ= 0 ดังนั้นเพียงแค่ใช้รัฐ FSA Mสำหรับ= 0ภาษา ตอนนี้เราสร้าง FSA สำหรับL สมมติว่าbมีkหลัก แล้วสาขา FSA เหมือนต้น 10 Ary ของความลึกkและมีทุกเส้นทางไปยังหมายเลขที่มีkตัวเลข รัฐทั้งหมดที่สามารถเข้าถึงได้ด้วยจำนวนที่ไม่ได้อยู่ในรูปแบบx + ปฏิเสธมิฉะนั้นการยอมรับ ในที่สุดเราก็เชื่อมต่อส่วนที่เป็นต้นไม้ของ FSA กับหุ่นยนต์Mb=0aMb=0Lbkkkax+bMตามที่เหลือโดยการหารโดย .a


ฉันเข้าใจเทคนิค แต่ไม่ใช่รายละเอียด คำใบ้ 1 ยังไม่ได้ใส่เคสa = 1หรือไม่ นอกจากนี้สำหรับ mod 10 ผมจะคาดหวัง 10 รัฐ (ไม่)? a=1a
Hendrik Jan

3

ภาษาเป็นปกติ

คำแนะนำ: ขับไล่เก้า


พิสูจน์ความคิด

สำหรับ= 9และ< 9 ,a=9b<9

สร้างหุ่นยนต์ที่มี9รัฐที่มีป้ายกำกับ0ผ่าน8 0เป็นรัฐที่เริ่มต้นและรัฐสุดท้ายหนึ่งข จากสถานะsบนหลักdเปลี่ยนไปสู่สถานะ( s + d )9080bsdm o d9 .(s+d)mod9

เพื่อจัดการกับค่าอื่น ๆ ของที่ coprime กับ10 ,a10

กลุ่มหลักในแพ็กเก็ตเพื่อค้นหาบางkดังกล่าวว่าแบ่ง10 k - 1 (เช่นใช้k = 3ถ้า= 37เพราะ999 = 27 × 37 )ka10k1k=3a=37999=27×37

เพื่อจัดการกับค่านิยมของมีเพียงปัจจัยสำคัญอยู่ที่2และ5 ,a25

โปรดทราบว่ามันคือทั้งหมดที่เกี่ยวกับจำนวน จำกัด ของตัวเลขในตอนท้าย

ที่จะพูดคุยกับค่าทั้งหมดของและ ,ab

ใช้ความจริงที่ว่าสหภาพและจุดตัดของภาษาปกติปกติที่ภาษา จำกัด เป็นปกติและที่หลายของ12จะตรงหลายรายการทั้งเมื่อ1และ2มี coprimea1a2a1a2

โปรดทราบว่าเราใช้เทคนิคใดก็ได้ที่สะดวก เทคนิคเบื้องต้นทั้งสามหลัก (นิพจน์ทั่วไป, ขอบเขต จำกัด ออโตมาตะ, คุณสมบัติเซตเชิงทฤษฎี) ล้วนแสดงในการพิสูจน์นี้


หลักฐานรายละเอียด

ให้= 2 หน้า5 Q 'กับ' coprime กับ10 ให้M = { ¯ a a=2p5qaa10x + bxZax + b 0 }และ M = { ¯ 2 p 5 qM={ax+b¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯xZax+b0}x + bxZ2p5qx+b0}M′′={2p5qx+b¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯xZ2p5qx+b0}. By elementary arithmetic, the numbers equal to bb modulo aa are exactly the numbers equal to bb modulo aa and to bb modulo 2p5q2p5q, so M{¯xxb}=MM{¯xxb}M{x¯¯¯xb}=MM′′{x¯¯¯xb}. Since the intersection of regular languages is regular, and { ¯ xx b }เป็นประจำเพราะมันเป็นส่วนประกอบของภาษาที่ จำกัด (เพราะฉะนั้นปกติ) ภาษาถ้า m และ M ยังเป็นปกติแล้ว M { ¯ xx b }เป็นปกติ; และ Mจึงเป็นปกติเนื่องจากเป็นกลุ่มของภาษานั้นที่มีขอบเขต จำกัด ดังนั้นเพื่อสรุปหลักฐานมันพอเพียงที่จะพิสูจน์ว่า M และ M เป็นปกติ{x¯¯¯xb}MM′′M{x¯¯¯xb}MMM′′

ขอให้เราเริ่มต้นด้วยM "ตัวเลขเช่นโมดูโล2 หน้า5 Q จำนวนเต็มมีทศนิยมขยายตัวอยู่ในเอ็ม"ที่โดดเด่นด้วยสุดท้ายของพวกเขาเมตรx ( P , Q )ตัวเลขตั้งแต่การเปลี่ยนแปลงตัวเลขอีกวิธีที่เหลือเพิ่มหลายของ10 เมตรx ( P , Q )ซึ่งมีหลาย2 หน้า5คิว ดังนั้น0 * M " = * Fที่M′′2p5qM′′max(p,q)10max(p,q)2p5q0M′′=Fเป็นตัวอักษรของตัวเลขทั้งหมดและ FFเป็นชุด จำกัด ของคำที่มีความยาวm a x ( p , q )และM = ( F ) ( ( { 0 } ) )เป็นปกติ ภาษา.max(p,q)

ตอนนี้เราหันไปM 'ตัวเลขเช่นโมดูโล'ที่'เป็น coprime กับ10 หาก' = 1แล้วM 'เป็นชุดของการขยายทศนิยมของธรรมชาติทั้งหมดเช่นM ' = { 0 } ( ( { 0 } ) * )ซึ่งเป็นภาษาประจำ ตอนนี้เราคิด' > 1 ให้k = a -1 โดยทฤษฎีบทเล็ก ๆ ของแฟร์มาต์ 10 a' - 11พอควร'ซึ่งก็คือการบอกว่า 'แบ่ง 10 k - 1 เราสร้างออโตเมติกอัน จำกัด ที่กำหนดได้ซึ่งจะรับรู้ 0 M ดังนี้:

  • รัฐเป็น[ 0 , k - 1 ] × [ 0 , 10 k - 2 ] ส่วนแรกแสดงถึงตำแหน่งหลักและส่วนที่สองหมายถึงจำนวนโมดูโล10 k - 1
  • สถานะเริ่มต้นคือ ( 0 , 0 )
  • มีการเปลี่ยนชื่อdจาก( i , u )ถึง( j , v ) iff v d 10 i + uพอควร10 k - 1และ j i + 1พอควรเค .
  • รัฐ( ฉัน, U )เป็นที่สิ้นสุด IFF ยูพอควร' (ทราบว่า 'แบ่ง 10 k - 1 )

สถานะ( i , u )ถึงจากคำ¯ x เป็นไปตามความต้องการของฉัน| ¯ x |พอควรkและคุณxพอควร10 k - 1 สิ่งนี้สามารถพิสูจน์ได้โดยอุปนัยเหนือคำหลังจากการเปลี่ยนแปลงบนหุ่นยนต์ การเปลี่ยนจะถูกคำนวณสำหรับสิ่งนี้โดยใช้ข้อเท็จจริงที่ว่า 10 k 1พอควร10 k - 1 ดังนั้นหุ่นยนต์รับรู้การขยายทศนิยม (อนุญาตให้ศูนย์เริ่มต้น) ของตัวเลขของรูปแบบ u + y 10 kกับ u พอควรa ; ตั้งแต่ 10 k 1พอควร'หุ่นยนต์ตระหนักถึงการขยายทศนิยมของตัวเลขเท่ากับ bโมดูโล 'ช่วยให้เลขเริ่มต้นซึ่งเป็น 0 * M ' ภาษานี้ได้รับการพิสูจน์แล้วเป็นปกติ ในที่สุด M = ( 0 M ) ( ( { 0 } ) )เป็นภาษาปกติ

ในการทำให้เป็นฐานทั่วไปที่ไม่ใช่10ให้แทนที่2และ5ข้างต้นด้วยปัจจัยสำคัญทั้งหมดของฐาน

หลักฐานทางการ

Left as an exercise for the reader, in your favorite theorem prover.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.