อัลกอริทึมที่ดีสำหรับการสร้าง DFA แบบสุ่มคืออะไร


9

ฉันกำลังสร้าง DFA แบบสุ่มเพื่อทดสอบอัลกอริทึมการลด DFA กับพวกเขา

อัลกอริทึมที่ฉันใช้ตอนนี้มีดังนี้: สำหรับแต่ละรัฐ qสำหรับแต่ละสัญลักษณ์ในตัวอักษร cเพิ่ม δ(q,c)เพื่อบางรัฐสุ่ม แต่ละรัฐมีความน่าจะเป็นเหมือนกันในการเป็นรัฐสุดท้าย

นี่เป็นวิธีที่ดีในการสร้าง DFA ที่เป็นกลางหรือไม่? นอกจากนี้อัลกอริทึมนี้ไม่ได้สร้างการตัดแต่ง DFA (DFA ที่ไม่มีสถานะล้าสมัย) ดังนั้นฉันสงสัยว่าถ้ามีวิธีที่ดีกว่าในการสร้างการสุ่ม DFAs ที่สามารถมั่นใจได้ว่าการตัดแต่งนั้นเป็นอย่างไร


2
ไม่มีการกระจาย DFA แบบสุ่มตามธรรมชาติดังนั้นมันขึ้นอยู่กับคุณ คุณต้องการทำอะไรให้สำเร็จ
Yuval Filmus

ฉันกำลังสร้าง DFA แบบสุ่มเพื่อทดสอบอัลกอริทึมการลด DFA กับพวกเขา
Duncan

บางทีคุณต้องการเริ่มต้นจาก DFA ขนาดเล็กชุดเล็ก ๆ ด้วยวิธีนี้คุณจะรู้ว่าการย่อเล็กสุดมาถึงผลลัพธ์ที่ถูกต้อง
adrianN

สงสัยหรือไม่ว่าคุณกำลังทดสอบอัลกอริทึมการลดแบบ nonoptimal หรือไม่หรือกำลังหา DFA ที่เหมาะสมที่สุดที่ไม่เหมือนใคร
vzn

2
หากคุณกำลังสร้างโครงสร้างข้อมูลสำหรับการทดสอบแบบไม่เอนเอียงไม่สำคัญ สิ่งสำคัญคือการมีโอกาสที่ดีในการกระตุ้นพฤติกรรมที่น่าสนใจ ในการเปรียบเทียบเมื่อคุณทดสอบอัลกอริธึมเรขาคณิตคุณจำเป็นต้องตรวจสอบให้แน่ใจว่าการทดสอบบางอย่างของคุณจะมีการจัดตำแหน่งสามจุดและสิ่งอื่น ๆ ที่จะไม่เกิดขึ้นในการกระจายแบบสุ่ม
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


6

ตรวจสอบ [1] และการสนทนาในส่วนที่ 4 การสร้างออโตมาตาแบบสุ่ม มาตรฐานกระดาษขั้นตอนวิธีการลดขนาดต่าง ๆ ของ DFA เครื่องกำเนิดไฟฟ้าแบบสุ่มถูกนำมาใช้ที่สร้างสายอักขระบัญญัติของ DFA ที่สมบูรณ์ด้วยn รัฐและ kสัญลักษณ์ พวกเขายังหารือเกี่ยวกับวิธีการอื่น


[1] Almeida, M. , Moreira, N. , & Reis, R. (2007) เกี่ยวกับประสิทธิภาพของอัลกอริธึมการลดขนาดอัตโนมัติ ลอจิกและทฤษฎีของอัลกอริทึม, 3.


"การรับรองสตริงที่ยอมรับได้" หมายถึงอะไร
Duncan

@drowse คำสั่ง canonical ถูกกำหนดเหนือชุดสถานะโดยการข้ามออโตมาตาในวิธีที่กว้างที่สุดในการเลือกที่แต่ละโหนดการส่งออกโดยใช้คำสั่ง (ทั้งหมด) ของ Σ. ตรวจสอบข้อมูลอ้างอิงในกระดาษ
Juho

4

คุณควรดูที่หน้าแรกของไซริล Nicaud ของ โดยเฉพาะการอ้างอิงต่อไปนี้เกี่ยวข้องกับคำถามของคุณ:

F. Bassino, J. David และ C. Nicaud, การแจงนับและการสุ่มของออโตมาตาที่กำหนดไม่สมบูรณ์, คณิตศาสตร์และการประยุกต์บริสุทธิ์ 19 (2-3) (2009) 1-16

F. Bassino และ C. Nicaud การแจงนับและการสร้าง Automata ที่สามารถเข้าถึงได้แบบสุ่ม theor คอมพ์ Sc . 381 (2007) 86-104


3

มีขั้นตอนวิธีการสุ่มสร้าง DFAs ได้ถึงการเปลี่ยนแปลงที่มีhttp://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gz

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

แต่จากมุมมองของฉันหากคุณต้องการทดสอบความรวดเร็วในการใช้งานของคุณให้ตรวจสอบกับสิ่งที่คุณต้องการใช้สำหรับ: ด้วยชุดคำที่สุ่มหรือ REGEX แบบสุ่มสร้าง NFA หรือ DFA แล้วลด DFA ที่เกิดขึ้น .


2

หนึ่งในกลยุทธ์ของธรรมชาติคือการถือว่า DFA เป็นกราฟแล้วมีจำนวนมาก "ธรรมชาติ" และการศึกษาสูงกระจายแบบสุ่มของกราฟที่ง่ายที่สุดน่าจะเป็นErdos-Renyi ในกรณีดังกล่าวคุณปฏิบัติต่อสถานะทั้งหมดของ DFA เป็นโหนดของกราฟและเปอร์เซ็นต์คงที่ของขอบที่เป็นไปได้ทั้งหมด (DFA transitions) ถูกเลือก การแจกแจงที่ซับซ้อนมากขึ้นซึ่งมีการศึกษากันมากในยุคปัจจุบันคือกราฟโลกเล็ก สำหรับกลยุทธ์ที่คุณพูดถึงในคำถามของคุณคุณเห็นได้ชัดว่าเลือกกรณีพิเศษp=1/n ที่ไหน nคือจำนวนโหนดในกราฟ อย่างไรก็ตามกลยุทธ์ของคุณหรือ Erdos-Renyi ไม่รับประกันว่าทุกรัฐใน DFA เชื่อมต่อ [ข้อ จำกัด ตามธรรมชาติที่จะเพิ่ม]



การแก้ไขอีกวิธีหนึ่งในการดู DFAs คือชุดของการกำหนดขอบอเนกประสงค์ (v1,b,v2) ที่ไหน v1 คือจุดยอด 1, v2 จุดสุดยอด 2 และ bคือสัญลักษณ์การเปลี่ยนแปลงและชุดย่อยใด ๆ เหล่านี้สามารถเลือกได้เพื่อกำหนด DFA
vzn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.