2019第十二屆“認證杯”數學建模(第一階段)


選的B題

第一階段賽題下載:https://www.lanzous.com/i3vnsvg

 建立了兩個模型,一個字典搜尋算法選擇模型,一個算法優化模型。

問題假設

  • 1.假設文本隨機生成
  • 2.假設構成文字的20個字母為a~t
  • 3.假設替換錯誤只出現片段的首尾,因此我們搜尋的片段長度就為11~21之間

 

模型准備

  1. 使用C++隨機數引擎與分布類型生成文本,每段長度隨機5000~8000。
  2. 調整文本(隨機生成的文本找到11~21個字母相同的基本沒有)

 

選擇模型

  1. 使用了BF,動態規划,KMP三種方法,直接跑程序搜尋相同字符串,搜尋結果保存為txt文件,同時記錄運行時間,占用內存,資源使用量,初步比較效率。
  2. 選擇改變每段文本長度,再次記錄上面三個記錄,統計制表做附件,繪圖插論文,使用MATLAB擬合數據,得到方程式,繪制方程式相關三維圖像。
  3. 比較得出KMP為最優算法。

 

優化模型

  1. 優化KMP的next數組,字符不匹配時,next數組會出現character[i]=character[next[i-1]];的迭代查詢,使用next[i]=next[next[i-1]];歸並相同數據。
  2. 再次選擇第一個模型的測試文本,測試程序的運行時間與占用內存,與傳統KMP算法比較。

 

程序時間大概也就是100秒~200秒左右,占用內存好像是150MB~300MB左右。

方法很簡單,思路也比較清晰,但這道題難點在於模型和相關方程式的建立,這道題附件我們給的倒是挺多,附錄就給了核心代碼。

 

 

第一階段代碼下載:點擊下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM