เราสามารถพูดได้ว่า DFA มีประสิทธิภาพมากกว่า NFA หรือไม่


13

ฉันเพิ่งเริ่มอ่านเกี่ยวกับทฤษฎีการคำนวณ ถ้าเราเปรียบเทียบว่าอันไหนมีพลังมากกว่า (ในการรับสาย) ทั้งคู่ก็เหมือนกัน แต่สิ่งที่เกี่ยวกับประสิทธิภาพ DFA จะถูกเปรียบเทียบอย่างรวดเร็วกับ NFA เนื่องจากมีเพียงหนึ่งขอบขาออกและจะไม่มีความคลุมเครือ แต่ในกรณีของ NFA เราต้องตรวจสอบทุกกรณีที่เป็นไปได้ & นั่นต้องใช้เวลาแน่นอน ดังนั้นเราสามารถพูดได้ว่า DFA มีประสิทธิภาพมากกว่า NFA หรือไม่

แต่สมองอีกส่วนหนึ่งของฉันก็กำลังคิดว่า NFA มีอยู่ในทางทฤษฎีเท่านั้นดังนั้นเราจึงไม่สามารถเปรียบเทียบประสิทธิภาพกับ DFA ได้

คำตอบ:


16

มีสองคำตอบขึ้นอยู่กับวิธีที่คุณกำหนดประสิทธิภาพ

ความกะทัดรัดของการเป็นตัวแทน

บอกได้มากขึ้นโดยใช้น้อย : NFA นั้นมีประสิทธิภาพมากกว่า

การแปลง DFA เป็น NFA นั้นตรงไปตรงมาและไม่เพิ่มขนาดของการแสดง

อย่างไรก็ตามมีภาษาปกติที่ DFA ที่เล็กที่สุดมีขนาดใหญ่กว่า exponential NFA ที่เล็กที่สุด ตัวอย่างทั่วไปคือสำหรับรับการแก้ไข k(a|b)b(a|b)kk

การคำนวณ

วิ่งเร็ว : DFA นั้นมีประสิทธิภาพมากกว่า

คอมพิวเตอร์ที่เราใช้กันทุกวันนี้นั้นถูกกำหนดไว้ตามธรรมชาติ ที่ทำให้พวกเขาไม่ดีในการจัดการกับไม่ใช่ระดับ มีวิธีการทั่วไปสองวิธีในการจัดการกับ NFA อย่างไม่แน่นอน: การย้อนรอยด้านหนึ่งซึ่งค่อนข้างมีราคาแพงหรือการติดตามสถานะที่ใช้งานอยู่ซึ่งหมายความว่าการเปลี่ยนแต่ละครั้งจะใช้เวลานานกว่าครั้ง (โดยคือขนาดของ NFA) .NNN


เกี่ยวกับความกะทัดรัด NFA ไม่ได้มีประสิทธิภาพมากขึ้นเสมอไป! เป็นความจริงหรือไม่ว่ามีภาษาที่ DFA ขนาดเล็กที่สุดมีขนาดใหญ่กว่า NFA ขนาดกะทัดรัดที่สุด แต่สิ่งที่เป็นเศษส่วนของภาษาดังกล่าวในชุดของทุกภาษาคืออะไร
saadtaame

2
@ saadtaame มันอาจดูแปลก แต่ในความหมายที่เข้มงวดที่สุด NFA ไม่จำเป็นต้องกำหนดขึ้น DFA เป็น NFA ชนิดพิเศษคือ NFA ที่มีซิงเกิลตันเป็นชุดเริ่มต้นและฟังก์ชั่นการเปลี่ยนแปลงเป็นเช่นนั้นมีเพียงสถานะเดียวเท่านั้นที่เปิดใช้งานในเวลาใดก็ตาม
Khaur

2
-1 "การเพิ่มขนาด (อาจมาก)" การจำลองชุดของรัฐ NFA โดยการรักษาพื้นที่ต้นทุนรายการที่เชื่อมโยงที่มากที่สุดในจำนวนของรัฐ NFA เทียบเท่า DFA บนมืออื่น ๆ ที่อาจมีรัฐ O ( 2 N )O(N)O(2N)
หลงทางตรรกะ

@WanderingLogic คุณถูกต้องการแปลงไม่จำเป็นต้องชัดเจน (คุณยังคงใช้ DFA เทียบเท่า แต่ไม่ใช่ในรูปแบบที่ครอบคลุม) อย่างไรก็ตามประเด็นหลักยังคงอยู่เนื่องจากต้องใช้เวลาในการคำนวณมากกว่าเวลาที่เรียกใช้ DFA ที่มีขนาดเท่ากัน ฉันจะแก้ไขย่อหน้าสุดท้ายเพื่อบัญชีสำหรับสิ่งนั้น O(N)
Khaur

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

4

ในแง่ของพลังงานพวกมันเทียบเท่ากับที่คุณพูดและมีอัลกอริทึม (การสร้างชุดย่อย) สำหรับการแปลง NFA เป็น DFA ที่เทียบเท่า อย่างที่คุณอาจบอกได้จากชื่อของอัลกอริทึมมันจะสร้างชุดย่อยของสถานะของ NFA หาก NFA ของคุณมีสถานะอัลกอริทึมอาจแสดงผล DFA ด้วยสถานะแต่นั่นเป็นขอบเขตสูงสุด บางครั้งจำนวนสถานะไม่เปลี่ยนแปลงเลยแม้แต่น้อย ดังนั้นในทางปฏิบัติมันมีความสำคัญน้อยกว่าการใช้งานแบบใด2 nn2n

การจับคู่ DFA เป็นเส้นตรงในขนาดของสตริงป้อนเข้า การจับคู่ NFA เกี่ยวข้องกับการย้อนรอยเพื่อให้ NFA ทำงานได้มากขึ้น ดังนั้น DFA จึงมีประสิทธิภาพมากกว่า


แต่เราสามารถพูดได้ว่า DFA มีประสิทธิภาพมากกว่าหรือไม่
avi

1
@avi ฉันแก้ไขคำถาม! และโดยวิธีการของ NFA ไม่ได้มีอยู่ในทฤษฎีเท่านั้น: ตรวจสอบนี้: swtch.com/~rsc/regexp/regexp1.html
saadtaame

@avi ปัญหาที่นี่คือ DFA ซึ่งเทียบเท่ากับ NFA จะ (มัก) จะมีขนาดใหญ่กว่ามาก ดังนั้นแม้ว่าคุณจะสามารถตรวจสอบ DFA ได้เร็วขึ้น แต่คุณจะต้องตรวจสอบ DFA ที่ใหญ่ขึ้น
ปีเตอร์

@Peter ว่า DFA ใหญ่กว่าไม่สำคัญ: หมายความว่าอาร์เรย์ที่ให้ฟังก์ชันการเปลี่ยนแปลงมีขนาดใหญ่ขึ้น
vonbrand

1
@ Khaur จริง แต่ถ้าคุณได้รับในที่ชนิดของปัญหาคุณมี humongous DFA
vonbrand

2

เพียงเพิ่มคำตอบด้านบน:

NFAs สามารถคำนวณได้มีประสิทธิภาพมากกว่า DFA ในแง่ที่ว่าพวกเขาสามารถจำลองในตัวประมวลผลแบบขนาน

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


1
ทั้ง DFAs และ NFA ไม่มีอยู่จริงทั้งคู่เป็นเพียงความสัมพันธ์ทางคณิตศาสตร์และทั้งคู่สามารถถูกจำลองด้วยอัลกอริทึม
jmite

1

ϵ


ϵ

1
ϵ

แต่ DFA นั้นไม่ว่างจากการเปลี่ยน trans
avi

@avi ใช่ อย่าลังเลที่จะแก้ไขคำตอบหากยังไม่ชัดเจน
vonbrand

ไม่ฉันขอให้คุณ ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้
avi

1

ดังที่คนอื่น ๆ ได้กล่าวไว้คุณต้องกำหนดความหมายของ "ประสิทธิภาพ" เพื่ออธิบายสิ่งนี้ฉันให้แบบจำลองที่สมเหตุสมผลพร้อมคำตอบที่ต่างออกไป

ดูเฉพาะรุ่นหุ่นยนต์ที่ไม่สนใจว่าคุณจะนำไปใช้กับเครื่องจักรจริงอย่างไรการวัดประสิทธิภาพที่เห็นได้ชัดคือ "จำนวนช่วงการเปลี่ยนภาพในระยะสั้นที่สุด

ε


1

ในทางเทคนิคแล้วการพูด NFA นั้นเป็นแนวคิดที่กว้างกว่า DFA เนื่องจากไม่จำเป็นต้องใช้ nondeterminism ในคำอื่น ๆ : DFA ทุกคนเป็น NFA จากมุมมองนี้มี NFA สำหรับทุกภาษาอย่างน้อยก็มีประสิทธิภาพเท่ากับ DFA ที่มีประสิทธิภาพมากที่สุดสำหรับสิ่งที่คุณต้องการวัดประสิทธิภาพ

นอกเหนือจากนี้ฉันเห็นด้วยกับราฟาเอลว่ามันขึ้นอยู่กับว่าคุณหมายถึงประสิทธิภาพและการนำไปปฏิบัติมากน้อยแค่ไหน


-4

ดังที่เราทราบเกี่ยวกับ Automata ie เครื่องจักรที่สามารถดำเนินการใด ๆ โดยไม่มีกำลังคนหรือไม่มีส่วนร่วมของมนุษย์โดยตรง เช่นเครื่องซักผ้า Finite Automata หมายถึงเรารู้ว่าป้อยอของการปฏิบัติงานโดยเครื่องจักรเช่น 1 กด ON 2 กดปิดดังนั้นจึงมีเพียง 2 สถานะคือเรียกว่า finite automata ตอนนี้มาถึง DFA นั่นคือกำหนดอัตโนมัติ จำกัด หมายถึงอย่างเป็นทางการว่าเราสามารถกำหนดสถานะได้อย่างง่ายดายว่าไม่มีความกำกวมและไม่เป็นทางการซึ่งต้องการการเปลี่ยนเพียง 1 ครั้งที่ได้รับอนุญาตบน 1 สัญลักษณ์ NFA: ออโตมาตา จำกัด แบบไม่แน่นอน ไม่จำเป็นต้องใช้เวลามากขึ้นในการคำนวณสถานะที่แท้จริงและมีความกำกวมและไม่เป็นทางการบอกว่ามีการเปลี่ยนแปลงหลายอย่างใน 1 สัญลักษณ์ ในกรณีที่ถึงเวลาปลายทาง NFA ใช้เวลามากกว่า DFA แต่ NFA สามารถโหลดข้อมูลได้มากกว่า DFA * DFA และ NFA มีอำนาจเดียวกันในการรับรู้สตริง ขอบคุณ .. Deepali kaushik


1
ออโต้ จำกัด ไม่มีอะไรเกี่ยวข้องกับเครื่องซักผ้า
David Richerby

2
@DavidRicherby บางทีวลีที่ว่า "ไม่มีอะไรเลย" ก็ค่อนข้างจะแรง หลังจากทั้งหมดเราอาจจะบอกว่าเครื่องซักผ้ามีระบุพร้อม , ล้าง , ล้างและสปินที่มีการเปลี่ยนที่เหมาะสมระหว่างรัฐ คำอุปมาที่ดีกว่าคือเครื่องหยอดเหรียญโซดา
Rick Decker

1
@RickDecker เห็นด้วย แต่ใช้เวลาพูดคุยเกี่ยวกับความเกี่ยวข้องเล็ก ๆ น้อย ๆ จะเป็นตัวอย่างของสิ่งที่ Wikipedia เรียกว่า " น้ำหนักไม่ควรเกิน " และไม่ว่าในกรณีใดส่วนหนึ่งของคำตอบที่ฉันกำลังพูดถึงคือพูดคุยเกี่ยวกับออโตมาตาเป็นเครื่องจักรที่ขับเคลื่อนด้วยตัวเองไม่ใช่อุปกรณ์การคำนวณ
David Richerby

1
ฉันไม่คิดว่าคำตอบนี้จะเพิ่มสิ่งที่คุ้มค่าต่อคำถาม โดยเฉพาะอย่างยิ่งคุณไม่ชัดเจนเกี่ยวกับการวัดประสิทธิภาพของคุณและดูเหมือนจะมีข้อกังวลหลายประการ
ราฟาเอล

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