簡體   English   中英

為什么將 NFA 轉換為 DFA 很有用?

[英]Why the conversion of an NFA to DFA is useful?

有人能告訴我為什么將 NFA 轉換為 DFA 有用嗎? 到目前為止,我發現了以下原因(我不確定):

  1. DFA 比 NFA 更快
  2. DFA 更易於實施

有誰知道此轉換有用的另一個原因?

DFA 比 NFA 更快

是和不是。

一方面,給定的 DFA 當然比給定的 NFA 運行得“更快”,因為運行 NFA 的算法需要以某種方式解決非確定性問題(例如,通過在運行時構建冪集)。

另一方面,不:等同於 NFA 的 DFA 也可能比 NFA 大很多,尤其是當 NFA 使用冪集構造派生時。 這樣兩者的運行時間將幾乎相同。

但我認為這幾乎不是這里的重點。 我們正在談論我們用來解決理論問題的計算抽象。 我們從不在“真實”計算機上實施 DFA,所以真的不需要擔心速度。

DFA 更易於實施

這有點令人困惑。 你的意思是想出做 X 的 DFA 比做 X 的 NFA 更容易嗎? 我非常不同意這一點,有時 NFA 是比 DFA 更好的解決問題的工具,有時 DFA 就足夠了。

如果您的意思是實現運行那些自動機的算法更容易,那么您是對的,對於 DFA,您只需遵循轉換 function。


回到你的主要問題。 為什么轉換?

簡而言之:如果你想運行一個 NFA,你必須去除非確定性,否則確定性算法無法執行它。 問題是誰做的。 可以運行 NFA 的算法會為您做到這一點,如果您手邊沒有該工具,則需要事先進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM