ใช่คุณเป็นคอมพิวเตอร์ที่ถูกต้องจะถูกกำหนดโดยอัตโนมัติ แบบจำลองที่ไม่ได้กำหนดค่าจะมีประโยชน์มากกว่าสำหรับวัตถุประสงค์ทางทฤษฎีบางครั้งวิธีการแก้ปัญหาที่กำหนดขึ้นนั้นไม่ชัดเจนต่อคำนิยาม จากนั้นวิธีการหนึ่งก็คือการออกแบบแบบจำลองที่ไม่ได้กำหนดรูปแบบซึ่งอาจจะค่อนข้างง่ายต่อการออกแบบและลองเปลี่ยนเป็นรูปแบบหนึ่ง ด้านล่างนี้ฉันพยายามแสดงให้เห็นว่าฉันหมายถึงอะไรด้วยตัวอย่าง พิจารณาการแสดงออกปกติ:
(01)*01(0 + 1)*
ทีนี้สมมติว่าถ้าคุณถูกขอให้วาด DFA สำหรับภาษาที่สร้างโดย RE ข้างต้น
ด้วยความรู้ของฉันของการออกแบบ FAs ฉันรู้ว่า(1)เมื่อ*
อยู่ในการแสดงออกปกติระบุฉันต้องห่วงในเอฟเอที่สอดคล้องกัน (2)การดำเนินงาน concatenate เช่นหมายถึงสิ่งที่ชอบ:a.b
(q0)─a→(q1)─b→(q2)
ดังนั้นในความพยายามของฉันฉันจะวาด NFA เช่น:
คิดว่านี่ไม่ใช่วิธีแก้ปัญหาที่กำหนดได้ แต่มีลักษณะ FA ที่ง่ายมากที่สามารถออกแบบได้อย่างง่ายดายโดยใช้นิพจน์ปกติที่กำหนด การเปรียบเทียบที่คล้ายคลึงกันของฉันเพื่อแสดงความคล้ายคลึงกันระหว่างนิพจน์ทั่วไปด้านบนและ NFA ของฉันมีดังต่อไปนี้:
- การวนซ้ำที่สถานะ q 0ควรใช้สำหรับ
(01)*
01
(หลังจาก(01)*
) ให้(q0)─0→(q1)─1→(q2)
(0 + 1)*
ให้ลูปตัวเองที่สถานะ q 2สำหรับเลเบล 0, 1
จากการเปรียบเทียบของฉันฉันคิดว่า FA ที่ฉันวาดด้านบนนั้นค่อนข้างง่ายที่จะดึงจาก RE ที่ให้มา และโชคดีที่ในคลาสออโตไฟไนต์ จำกัด โมเดลทุกรูปแบบที่ไม่ได้กำหนดค่าสามารถแปลงเป็นรูปแบบที่กำหนดขึ้นได้ เรามีวิธีการขั้นตอนการแปลง NFA เข้า DFA ดังนั้นฉันสามารถแปลง NFA ข้างต้นให้เป็น DFA ได้อย่างง่ายดาย:
ส่วนอื่น ๆ โชคไม่ดีที่ไม่สามารถแปลงโมเดลที่ไม่ได้กำหนดค่าเป็นแบบกำหนดได้เสมอไปตัวอย่างเช่นคลาสสำหรับการกำหนดค่าลงโดยอัตโนมัติเป็นส่วนย่อยของคลาสของการกำหนดค่ากดลงอัตโนมัติ "ตรวจสอบvenn diagram " และคุณไม่สามารถแปลงได้เสมอ NPDA ลงใน PDA
โดยปกติเมื่อมันเป็นไปไม่ได้ที่จะแปลงโซลูชันที่ไม่ได้กำหนดค่าเป็นหนึ่งที่กำหนดขึ้นแล้วด้วยความช่วยเหลือของวิธีการแก้ปัญหาที่ไม่ได้กำหนดเรากำหนดโซลูชั่นที่กำหนดในโดเมนย่อย (หรือพูดบางส่วนโดเมน) แทนโดเมนที่สมบูรณ์ หรือที่เรากำหนดวิธีการแก้ปัญหาในรูปแบบอื่น ๆ บางอย่าง (เช่นวิธีโลภ) ของหลักสูตรไม่อาจให้ทางออกที่ดีที่สุด
บางครั้งไม่ใช่ชะตาเป็นกลไกที่มีประสิทธิภาพสำหรับการอธิบายบางปัญหาที่ซับซ้อน / วิธีการแก้ปัญหาได้อย่างแม่นยำและมีประสิทธิภาพเช่นเครื่องไม่กำหนดสามารถใช้เป็นรูปแบบของวิธีการค้นหาและ BACKTRACK (อ่าน: วิธีกระบวนการสตริงในรูปแบบที่ไม่ได้กำหนดขึ้นโดยใช้ BACKTRACK ) โมเดลที่กำหนดค่าทางตรงข้ามได้ดีกว่าแสดงถึงโซลูชันที่มีประสิทธิภาพลดและลดซ้ำซ้อน
ที่นี่ฉันอยากจะอ้างจาก Wikipedia การใช้อัลกอริทึม Nondeterministic :
ในการออกแบบอัลกอริธึมอัลกอริธึม nondeterministic มักใช้เมื่อมีการแก้ไขปัญหาโดยอัลกอริธึมช่วยให้ผลลัพธ์หลายอย่างโดยเนื้อแท้ (หรือเมื่อมีผลลัพธ์เดียวที่มีหลายเส้นทางซึ่งผลลัพธ์อาจถูกค้นพบ ทุกผลลัพธ์ที่อัลกอริธึม nondeterministic สร้างนั้นถูกต้องไม่ว่าตัวเลือกใดที่อัลกอริทึมจะทำในขณะทำงาน
ปัญหาจำนวนมากสามารถกำหนดแนวคิดผ่านอัลกอริธึม nondeterministic รวมถึงคำถามที่ไม่ได้รับการแก้ไขที่มีชื่อเสียงที่สุดในทฤษฎีการคำนวณ P vs NP
ในฐานะที่เป็น@keshlamยังกล่าวถึงเขาในการแสดงความคิดเห็น : "ไม่นิยม" คือในทางปฏิบัติใช้ในการอ้างถึงการคาดการณ์ใด ๆ ในผลของกระบวนการบางอย่าง ตัวอย่างเช่นโปรแกรมที่เกิดขึ้นพร้อมกันแสดงพฤติกรรมที่ไม่ได้กำหนดไว้ - การประมวลผลสองโปรแกรมที่มีอินพุตเดียวกันสามารถสร้างผลลัพธ์ที่แตกต่างกันได้ (หากไม่ใช้กลไกการควบคุมพร้อมกัน ) อ่านข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ใน"ประโยชน์ขององค์กรไม่แสวงหาโชคชะตา"
ฉันขอแนะนำให้คุณอ่านลิงก์ต่อไปนี้:
1. อะไรคือความแตกต่างระหว่างการไม่กำหนดและการสุ่ม?
2. 9.2.2 แบบจำลอง Nondeterministic กับแบบจำลองความน่าจะเป็น: (a) Nondeterministic:ฉันไม่รู้ว่าธรรมชาติจะทำอะไร (ข) ความน่าจะเป็น:ฉันสังเกตธรรมชาติและรวบรวมสถิติ
3. การเขียนโปรแกรม Nondeterministic