NFA轉化DFA

NFA轉化DFANFA既然和DFA等價,那麼,它們之間就存在對應關係,DFA到NFA的轉化是自明的:沒有空轉移,把返回的單個state編程僅包含一個state的集合,就是一個形式上的NFA。但是,NFA到DFA的轉化就不是那麼簡單了,實際上,在計算理論中,它屬於ExpSpace問題,是一類比NP問題更難的問題。往簡單了說,因為NFA的轉移函數的傳回值是個state集合,如果NFA的state數目為n,那麼這個state集合的集合,就是整數[0,n)的冪集,這個冪集的元素數目是 2^n

原地排序與鏈表翻轉

有這樣一個問題:有個長度為 n 的 (key,val) 數組 a,其中 key 是 int 類型,並且其值在 [0, n) 之間(前閉後開,包括 0 不包括 n),該數組按 key 是亂序的,但沒有重複 key。要求:對 a 原地按 key

Trie, Hash, MinADFA

Trie的搜尋複雜度是 O(length(strkey))Hash表,計算Hash的複雜度也是O(length(strkey))1. Trie因為每讀一個字元,要做一次狀態轉移,就有一次(隨機)訪存操作,計算 strkey 的 Hash 不需要每個字元都隨機訪存,從這一點看,Hash勝出2. Hash 可能會有衝突,而 Trie 沒有衝突,這一點,Trie 勝出3. 可以在 Trie 上應用 DFA Minimization 演算法,產生一個 Minimum Acyclic

李德剛剛來到部隊,提出…希望有個中國女戰士陪他睡覺

《一生緊隨毛:回憶我的父親...陳士榘》裡記載,“李德剛剛來到部隊,提出...希望有個中國女戰士陪他睡覺。” 康...說:“當時女同志都不願意嫁給一個不會說中國話的外國人,所以一直找不到合適的對象。”後來找到個“大個子,長得不錯的前童養媳。”蕭月華1910年8月出生於廣東大埔縣一個農民家庭。 “當組織上動員她給李德做老婆時,她起先表示堅決不幹。過了幾天,通知她說:“李德是...國際派來協助......領導幹部,給他做老婆,是革命工作的需要,組織已決定你同他結婚。” 她勉強服從了這個“組織決定”。

實現了一個壓縮演算法,在資料高度壓縮的前提下,還可以快速尋找 key

最近寫了一個演算法,可用於 (key,value) 儲存,key 當然是 string 類型。用一個 2.3G 的 url 集合做測試,如果不計 value 佔用的空間,key 集合的儲存空間可以被壓縮70倍!壓縮後整個資料結構僅佔31M記憶體!壓縮率比 bzip2 還要高。本質性的不同於: gzip, bzip2 等壓縮演算法僅僅是壓縮而已,無法快速地從壓縮資料中尋找。我實現的這個演算法能高效地支援對 key 的尋找,並且尋找的時間複雜度僅與 key

QString的中文初步

source:http://blog.csdn.net/fldx/article/details/6262172        初接觸Qt的程式員,肯定為Qt不能正常輸出中文感到鬱悶,萬能的Qt啊,你為什麼連個中文都輸出不好呢? 其實,Qt當初的設計有很好的前瞻性,QString內部的儲存均是用unicode編碼儲存的。unicode為什麼還不能輸出正常的中文呢?     

gold_hash_map abstract++

目前的gold_hash_map 實現中,index和data是耦合在一起的。今天在思考 onfly MinADFA 的進一步最佳化時,想到了一點:在MinADFA_onfly 中,equivalence_register是一個gold_hash_tab,它以 state_id 為 elem,以StateContent 為key,再深入思考,其實這個state_id 沒有存在的必要,equivalence_register中儲存 state_id 的數組只要和state 數組平行,這個

原地排序-更簡潔的演算法

在我以前的這篇文章中:原地排序與鏈表翻轉解決這個問題是先把鏈表翻轉,然後再迴圈左移,原理是清楚了,可是稍顯繁瑣。今天得知該問題的另一個解法:void rearrange(KeyVal* a, int n) { for (int i = 0; i < n; ++i) { int j = a[i].key; if (j != i) swap(a[i], a[j]); }}甚至可以更簡單:void rearrange(KeyVal* a, int n)

避免臨時對象的字串加法

之前我有一篇文章《 C++ 中讓對象的拷貝成為 顯式 的》,使用類似的技巧,可以避免字串加法中的臨時對象,也許是因為惰性,這個想法一直沒有訴諸實現,今天有空把它寫了出來。先看看這段代碼:std::string a = "A";std::string b = a + "B" + "C" + "D" + "E" + "F";在C++11之前的標準 C++1998/2003 中,為了計算 b,這段代碼一共建立了 5 個臨時 std::string 對象。實現代碼非常簡單:#include

自動機的思維導圖

自動機有很多用途,不光是編譯器會用到,眾所周知的還有Regex。其他,簡單的如字串搜尋,儲存等,複雜點的如模型驗證,定理證明……最簡單的自動機應該算是DFA了,再往簡單了說,一個DFA就是一個 map<int,map<char,int>>, 其中 int 是 state id,char是轉移標號;如果有人還嫌不夠簡單,最最簡單的那就是 int [][256]

crontab命令使用

crontab命令使用名稱 : crontab使用許可權 : 所有使用者使用方式 :crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }說明 :crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user

MyEclipse使用SVN外掛程式報Failed to load JavaHL Library.錯誤

最近在使用MyEclipse的SVN外掛程式時總是彈出一個大大的對話方塊,報一個Failed to load JavaHL Library.錯誤Failed to load JavaHL Library.These are the errors that were encountered:D:\Genuitec\Common\plugins\org.tigris.subversion.clientadapter.javahl.win32_1.6.17\ssleay32.dll:

自動機的一些演算法和應用

幾個月前實現了一個自動相關的演算法,在一個比較樂觀的測試中,將一個2.3G的url集合壓縮到了27M,同時,key尋找的時間複雜度是O(strlen(key))。當然,還有其它一些自動機相關的演算法的最佳化實現,比如Aho-Corasick多模匹配。 自動機的實現,這裡說的自動機,指確定性有窮狀態自動機(DFA: Deterministic Finite Automata)。關於非確定性有窮狀態自動機(NFA:Non-deterministic Finite Automata),不會做過多介紹。

關於hadoop namenode -format不成功的問題

初識hadoop,配置hadoop叢集就一番七葷八素,但是再大的坎都過了卻往往陰溝翻船。每次執行hadoop namenode

Context 終於進 boost 了

Version 1.51.0New Libraries: ContextBoost.Contextis a foundational library that provides a sort of cooperative multitasking on a single thread. By providing an abstraction of the current execution state in the current thread, including the stack

VIPS:基於視覺的Web頁面分頁演算法

VIPS:基於視覺的Web頁面分頁演算法目前,隨著互連網的高速發展,Web已經成為這個世界上最大的資訊來源。Web

在終端使用zhcon解決中文亂碼

我的機器環境是opensuse 11.1 ,每次進入X環境都覺得很慢,希望直接在終端下工作,但是發現終端不支援中文 找到zhcon 編譯會有一些問題,比如memset未定義,相應檔案增加 #include<string.h>還有free等幾個函數未定義,如果不清楚可以man 看下標頭檔,引用即可;主要是缺少string.h和stdlib.h兩個標頭檔 另外還會提示一些變數未定義,可參考這裡:-#define TF_MASK0x00000100-#define IF_MASK0x000

DW和VSS互動

由於Web項目程式碼非常分散不集中,大的Web項目程式碼源檔案多達上百個甚至更多,小的也有數十個,怎樣合理地管理這些原始碼還是一個問題,本文提出一種針對Web項目開發過程中代碼控制的解決方案。我們將利用Dreamweaver MX和Visual SourceSafe來實現Web項目代碼開發的全程式控制制。這2種軟體大家都比較熟悉,但為了保持本文的完整性我還是分別簡要介紹一下這2種軟體。   Dreamweaver MX(以下簡稱DW MX)是Macromedia公司網頁製作三劍客之一,其強大功能

Lua5.1.1的一個隱藏BUG

在最近的lua maillist上,三巨頭之一的Roberto Ierusalimschy報告了一個5.1.1版本的bug:當一個函數裡用到了超過 255個不同的全域變數和常量時,由數字常量和訪問table的運算式組成的複合運算式(比如"2*a.x")就有可能產生很奇怪的結果。比如 下面這段程式: kkk = 2;v1=2;  v2=2;  v3=2;  v4=2;  v5=2;  v6=2;  v7=2;  v8=2;v9=2; v10=2; v11=2; v12=2; v13=2; v14=

h標頭檔 .lib庫檔案 .dll動態連結程式庫檔案關係

      .h標頭檔是編譯時間必須的,lib是連結時需要的,dll是運行時需要的。       附加依賴項的是.lib不是.dll,若產生了DLL,則肯定也產生 LIB檔案。如果要完成原始碼的編譯和連結,有標頭檔和lib就夠了。如果也使動態串連的程式運行起來,有dll就夠了。在開發和調試階段,當然最好都有。       .h .lib .dll三者的關係是:       H檔案作用是:聲明函數介面       DLL檔案作用是:

總頁數: 61357 1 .... 19798 19799 19800 19801 19802 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.