【发布时间】:2009-11-06 14:54:49
【问题描述】:
请帮我解决以下问题的算法 -
鉴于一系列事实,我们希望尽可能多地消除冗余。这个问题涉及的事实是大写字母之间传递关系的成员。因此,每个事实都是一对大写字母,例如 AB,表示 A 与 B 相关。字母可能与自身相关,也可能不相关,但传递性成立:如果 A 与 B 相关且 B 与 C 相关,那么我们可以推断 A 与 C 有关。 创建一个包含方法 minFacts 的类 FactCount ,该方法给定一个已知的 String[] 并返回最小事实集的大小,这将允许我们推断可以从包含的事实中推断出的所有内容(并且仅是那些事情)已知。
known 的每个元素将包含 1 个或多个由单个空格分隔的事实。最小的事实集可能包含可以从已知中推断出但不包含在其中的事实。
例如:
{"AB AC CA AA BC", "AD"}
返回:4
AB、CA、BC 和 AD 允许我们同时推断 AA(AB、BC、CA 通过传递性给出 AA)和 AC(AB、BC 通过传递性给出 AC),并且没有更小的子集可以让我们推断所有已知的事实。
P.S - 这不是家庭作业。只是我在网上找到的一个问题,几个小时都无法解决......
【问题讨论】: