相信很多讀者都看過網上博客對 KMP 算法的講解,其中必提及的一個名詞就是:前綴。那么請問你心中理解的前綴的定義是什么呢?
對于字符串 “china”,其前綴為:
china, chin, chi, ch, c
你的想法是不是和上面一樣呢。但是我很遺憾地告訴你,KMP 之前綴不是這樣的,它是這樣的:
chin, chi, ch, c
難道是我們記錯前綴的概念了?不!不是我們記錯了,只是有人在指鹿為馬而已。下面來揭曉真像吧。
如此看來,KMP 之前綴并非前綴,而是真前綴!而大多數(幾乎所有)的博客都在以 “真前綴” 去定義“前綴”。
next 數組是 KMP 的一個核心概念,而真前綴又是 next 數組的核心。算法本屬于一個很嚴謹的領域,這種在重要概念上卻還指鹿為馬的行為,是應該需要我們注意和避免的。
不知道大家有沒有發現,你所看過的 KMP 博文無一提及真前綴的定義,除了阮一峰的字符串匹配的 KMP 算法。
哈哈,阮老師太粗心了,在文章開頭阮老師已經講過,他是閱讀了 Jake Boxer 的文章才明白 KMP 的,那原文是什么樣的呢?
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
原文標題:你被欺騙了很久:前綴和真前綴
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。
相關推薦
這是獲取帶有設備前綴終端名稱VI
發表于 11-26 21:55
問一個蠻簡單的問題,在做并行前綴加法器總是出現這個問題,到底是什么鬼,,應該怎樣解決?謝謝了!end后面是調用部分~
發表于 10-28 15:52
初學飛思卡爾的單片機,目前看到的有3個型號:S9S12G640MLH、s9s12g64f1mlc、MC9S12XEP100MAG,這些前綴比如S、MC有什么區別嗎,在群里問過說是汽車級和工業級的區分
發表于 05-25 17:15
嗨!我要進入匯編語言領域。我決定從頭開始閱讀用戶指南,我現在在1.7.5.1“英特爾十六進制格式”。兩張圖片附上。第一個是說明,第二個是例子。我不理解“每個數據記錄都以9個字符的前綴開始,以2個字符
發表于 03-10 10:26
allegro的CM里信號名稱前綴為什么會@原理圖名稱?
發表于 06-18 16:33
在logic中做元件庫,都會給元器件定義位號的首字母,后面在繪制原理圖放置元器件時,就會按這個來遞增編號,常見的元器件位號首字母定義參考章節2.36,下面講解如何修改元件的參考前綴:
第一步
發表于 04-28 17:10
國外生產廠商型號前綴互聯網網址.pdf
發表于 04-04 23:35
?0次下載
基于閱讀器發送的查詢前綴和電子標簽的響應后綴,提出一種新的射頻識別(RFID)標簽識別算法,用以解決RFID仲裁過程中的零標簽響應問題。通過實驗驗證,與Memoryless抗沖突算法相比
發表于 04-01 09:40
?10次下載
集成電路型號前綴與產地對照
AN 日本松下電器公司
BA 日本東洋電具制作所
BG 北京半導體器件三廠
BGD,BGJ 北京半導體器件研究所
發表于 02-06 15:30
?3096次閱讀
基于循環前綴的同步算法及FPGA實現
正交頻分復用(OrthogonalFrequency Division Multiplexing,OFDM)技術已經成為第四代移動通信研究的熱點,同時,OFDM同步又是OFDM的關鍵技
發表于 03-23 09:27
?1691次閱讀
一種混合前綴編碼的測試數據壓縮方法_談恩民
發表于 01-07 20:49
?0次下載
ApiBoot Logging支持指定單個或者多個路徑的前綴進行采集,也就是我們可以指定/user/**或者/order/**下的單個或者同時指定多個路徑進行...
發表于 12-10 22:20
?449次閱讀
來自GreatHorn的研究人員報告說,他們已經觀察到了犯罪分子通過構造 “畸形的URL前綴 ”來逃避安全軟件的防護,發送釣魚郵件進行攻擊的次數增加了近6000%。除非你仔細觀察URL前綴中使用的符號,要不然,它們看起來是非常合法的。
發表于 02-26 15:40
?1729次閱讀
國外生產廠商型號前綴互聯網網址
發表于 12-30 09:21
?2次下載
公共IP地址前綴是從各個區域的IP地址池中進行分配的。通過指定名稱和恰當的前綴大小,我們能在特定的區域和訂閱中創建公共IP地址前綴。這里前綴的大小直接決定了可用的地址數量。 公共IP地
發表于 08-21 14:57
?327次閱讀
評論