2011-11-06 75 views
0

我有一本未知語言的字典。我必須找到這種未知語言的所有特徵以及它們之間的詞典關係。什麼纔是最有效的方法呢?找到未知語言中的所有不同字符以及它們之間的字典關係

注:
1.有可能開始由沒有出現在字典
2字你不能假設字符的ASCII值將是有序的字符
3.可能存在是一些其中你找不到任何關係的字符

例如

假設有人不知道英語和我們的字典是:

B 
GA 
GAS 
GBS 
GK 
SG 

然後解決方案將是:

A < B < G < S 
A < B < K 
+0

這是一個假設的情況,還是這是一種其他人可能知道的真實語言?你能舉個例子嗎? –

+0

我不認爲它會產生任何不同,因爲必須解決問題的人不知道該語言,他必須找出找到相同的方法(也不能假定ascii值字符將被排序) – r15habh

+0

我已經添加了一個例子來澄清問題 – r15habh

回答

1

我建議你的線性解決方案。 O(|字典中的所有字符串| + |字母|)。 | S | - 長度爲s

  1. 使圖G(V,E)。 V - 字母表中的字符,E = {v1,v2}其中v1小於v2。
  2. 掃描字典,比較2個序列字,並將關係信息添加到圖中。
  3. 使用topological sort以正確的順序獲取字符。 O(| V |)= O(|字母|)
+0

我也在考慮拓撲排序。但是,「掃描詞典,比較2個序列詞並添加關係信息到圖表」這一步驟... ...不會太昂貴嗎?因爲關係信息可以在垂直和水平方向上存在,所以這大概需要(n^2 * m^2)時間,其中n是總數。的單詞和m是每個單詞的長度。 – r15habh

+0

@ r15habh,你只需要比較第i個和第(i + 1)個單詞。所以,它的O(N * M) –

+0

你是對的,我在做一些不必要的比較測試用例 – r15habh

相關問題