2011-11-06 74 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

相关问题