Board logo

标题: 学informatik的人进来 [打印本页]

作者: laopo    时间: 2004-12-15 14:58     标题: 学informatik的人进来

变态一下,考考大家

关于 成语接龙 的 最长解法 的 问题:

给出一个集合 P, 定义它为 一个包含 n 个 成语的 集合,并且假定 其所有 n 个 成语 互不相同。

试 给出一个有效的算法,能决定这 n 个成语的 最长接龙 S(P).


谁能给出?biggrin.gi
作者: 班超    时间: 2004-12-15 21:27     标题: 算法,瞎弄,别笑

提示: 作者被禁止或删除 内容自动屏蔽
作者: laopo    时间: 2004-12-16 11:20

第1步,明白。
第2步,每个 成语为树根, 初始化n棵树,是什么意思?

第四步输出时,为什么是整棵树?
作者: 班超    时间: 2004-12-16 12:38     标题: 不好意思

提示: 作者被禁止或删除 内容自动屏蔽
作者: laopo    时间: 2004-12-16 13:54

第2步是核心的一步

你所说“按此原  则不断向下延伸,直到没有可能后停止”
的“没有可能” 具体是什么情况

因为有可能,部分成语组成若干个环状

A**D -> D**N -> N**Q -> Q**A
作者: 班超    时间: 2004-12-16 14:55     标题: 对,

提示: 作者被禁止或删除 内容自动屏蔽
作者: laopo    时间: 2004-12-20 10:26

这个问题 我觉得是个 spanning tree 的问题,应该可以在polynomial time内解决
即,1个含有n个节点的Graph,对其任意2个节点 进行:
  1.建立从 节点i 到 节点j 的路径:如果 节点1的尾=节点2的首,for all i ,j =1..n and i<>j
  2.不建立路径:反之

然后,在此Graph上寻找一条路径,尽可能多地包含节点,并且不重复。

p.s.这个问题我是从生物计算机里的Superstring 问题想到的。

[ Last edited by laopo on 2004-12-20 at 11:37 ]
作者: 班超    时间: 2004-12-20 12:15     标题: 好啊,

提示: 作者被禁止或删除 内容自动屏蔽
作者: laopo    时间: 2004-12-20 13:12

然后,
深度优先,遍历整个Graph

假定 n = 所有节点的数量 , V = 所有路径数量
遍历整个Graph 应该是 O(n*ld(V))




欢迎光临 人在德国 社区 (http://rs238848.rs.hosteurope.de/bbs/) Powered by Discuz! 7.2