不是更接近:
n * (n - 1) / 2
上面的公式是这个中学数学小组问题的答案:
“你有n个人在一个房间里,他们都和其他人握手。握手了多少次?”
这不也适用于在软件项目中交流的人数吗?
免责声明
我还没有读过这本书(还),但我已经看到了n^2
其他地方引用的公式。
不是更接近:
n * (n - 1) / 2
上面的公式是这个中学数学小组问题的答案:
“你有n个人在一个房间里,他们都和其他人握手。握手了多少次?”
这不也适用于在软件项目中交流的人数吗?
免责声明
我还没有读过这本书(还),但我已经看到了n^2
其他地方引用的公式。
如果你读过这本书,你就不会问这个问题。它实际上是这样说的:
如果一个项目有n 个工作人员,则可能有(n^2-n)/2 个接口可以进行通信,并且可能有近 2^n 个团队必须在其中进行协调。
对于那些玩家庭游戏的人,这在第 7 章,在大型编程项目中的组织标题下。
所以答案是你是对的,但这本书也是这么说的。
神话般的人月指的是整体算法效率,以接近无穷大的行为来衡量。
n*(n-1)/2 = O(n^2)
你是对的。然而,虽然我自己没有读过这本书,但听起来他们试图给出一个增长顺序,而不是一个确切的数字。n * (n-1) / 2 是一个增长为 O(n^2) 的函数。请参阅大 O 表示法。
我认为不同之处在于握手发生一次并且对两个人都很重要。可以从任何一个人发起与队友的通信,因此您最终会计算两次路径,每个发起者一次。
以我个人的经验,有一些人(我刚刚决定称他们为 UberCommunicators)仅仅因为与他们沟通的内在成本,就可以将这个因素增加另一个数量级。它们往往非常冗长,无法简明扼要,而且通常难以继续完成任务。获得有用的对话需要在很长一段时间内反复努力。
我认为你过度分析了这一点。神话般的人月不是一本像《21 天学习如何编程 Ruby》这样的计算机书籍。这是一本关于团队如何互动的商业书籍。因此,它将人视为人,而不是机器。这意味着近似和启发式是一天的顺序,而不是算法和精度。
请(请,请,请)记住将您的队友视为人类,而不仅仅是另一台计算机。它将创造一个更愉快的工作环境和一个更好的项目。
我不记得这本书到底说了些什么,所以把我的副本从书架上拿下来。您可能会很高兴地了解到,在第 2 章(这也是这本书的名称的文章)中,布鲁克斯确实说过通信路径的数量是 n(n - 1)/2,与您所说的相符。因此,正如其他人所说,我怀疑 n^2 “引用”只是 O(n) 表示法的简化。