回答
你NFA圖形是正確的。它將匹配正則表達式ab*((b|d)|c*)
而沒有別的。然而,它可能更簡單,例如像這樣:
我不認爲這是完全正確的,分支部分'((b | d)| c *)'是兩個分支,而不是三個,它是(b | d)或c *節點將它表示爲一個完全獨立的路徑,然後分支到'b'或'd'中是否更準確? –
我敢肯定,上面的一個不使用湯普森建設。它比較短,但我的演講者給了我一種如何去做的風格。 – unleashed
@unleashed我會說湯普森是一種創建NFA的算法(一種程序),而不是一種NFA。你可以看到我的NFA是由湯普森創建的,然後進行了優化。 (bw:問題是你的NFA是否等同於你的正則表達式,Thomspon沒有:-)) –
- 1. 模擬Java中的延遲
- 2. Java中的物理模擬
- 3. 的Java:在模擬
- 4. java模擬
- 5. Java中,模擬瀏覽器
- 6. 在Java中模擬Oracle SPOOL
- 7. C#中的NFA/DFA實現
- 8. 模擬app.config for Java?
- 9. 模擬問題Java
- 10. 模擬HTTPS在Java
- 11. Java模擬鍵盤
- 12. Java mockito模擬集
- 13. 模擬Java的Netty中的對象 -
- 14. java中的靜態類的模擬
- 15. Qt中的Java Form Layout的模擬
- 16. 的Java模擬,從集合
- 17. Java ScheduledExecutorService的Ruby模擬
- 18. Java中的電梯模擬器幫助
- 19. 抽象類Java中的模擬異常
- 20. Java中的最大流圖模擬
- 21. 在Java中的遊戲模擬
- 22. 在C++中模擬Java的線程類
- 23. 模擬Java中的低精度硬件
- 24. 模擬在Java中按住的按鍵
- 25. Java中的捲曲語法模擬
- 26. 模擬在使用Java
- 27. Java模擬FTP會話
- 28. 模擬時鐘java作業
- 29. org.powermock.reflect.exceptions.MethodNotFoundException: - 當模擬java sql類
- 30. java:如何模擬Calendar.getInstance()?
節點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'。除此之外,我認爲其餘部分似乎是合適的。最終的結果是一樣的,只有一個節點。 –