回答
你NFA圖形是正確的。它將匹配正則表達式ab*((b|d)|c*)
而沒有別的。然而,它可能更簡單,例如像這樣:
我不認爲這是完全正確的,分支部分'((b | d)| c *)'是兩個分支,而不是三個,它是(b | d)或c *節點將它表示爲一個完全獨立的路徑,然後分支到'b'或'd'中是否更準確? –
我敢肯定,上面的一個不使用湯普森建設。它比較短,但我的演講者給了我一種如何去做的風格。 – unleashed
@unleashed我會說湯普森是一種創建NFA的算法(一種程序),而不是一種NFA。你可以看到我的NFA是由湯普森創建的,然後進行了優化。 (bw:問題是你的NFA是否等同於你的正則表達式,Thomspon沒有:-)) –
- 1. 在java中的sendmail模擬?
- 2. 模擬Java中的延遲
- 3. Java中的物理模擬
- 4. java中的用戶模擬
- 5. 的Java:在模擬
- 6. java模擬
- 7. Java lotto模擬
- 8. 在Java中模擬Oracle SPOOL
- 9. 在java中模擬Android SystemClock.uptimeMillis
- 10. Java中,模擬瀏覽器
- 11. C#中的NFA/DFA實現
- 12. 如何將NFA/DFA轉換爲java?
- 13. 模擬退火模板java
- 14. 模擬問題Java
- 15. 模擬app.config for Java?
- 16. Java模擬組件
- 17. 行人模擬Java
- 18. Java mockito模擬集
- 19. Java方法模擬
- 20. 模擬C++ - 用Java
- 21. Java模擬鍵盤
- 22. 模擬HTTPS在Java
- 23. 模擬汽車(Java)
- 24. 模擬Java的Netty中的對象 -
- 25. Qt中的Java Form Layout的模擬
- 26. java中的靜態類的模擬
- 27. Java ScheduledExecutorService的Ruby模擬
- 28. 骰子模擬java的
- 29. 的Java模擬,從集合
- 30. winapi模擬java的synchronized/wait()
節點10,11,12和13可能會被壓縮成兩個節點? –
這就是我最初的想法,但演講者希望這種風格能夠重複使用並使用湯普森建構來創建NFA。我只是懷疑2到3 e的過渡,3到4 e的過渡和4到5或4到7 e的過渡。 – unleashed
那麼,2-3可以減少,在'b *'的情況下導致沒有'b's,你會有一個從'1-2'轉換的'e'。除此之外,我認爲其餘部分似乎是合適的。最終的結果是一樣的,只有一個節點。 –