输入:
问题:
k
个子树/分区(显然是通过删除 k-1
边缘);W(p)
是根植于节点 p
的子树中所有节点的权重;最小(W(p))
和最大值(W(p))之间的差异
应尽可能小。 我还没有找到合适的算法。我应该从哪里开始?提示、说明和伪代码。
假设除了删除边以创建子树之外,您不能修改树。
首先要了解,您不能保证通过简单地删除边,您将在任意边界内拥有子树。您可以创建一棵树,当您拆分它们时,无法在目标边界内创建子树。例如:
a(b(c,d,e,f),g)
你不能把它分成两个平衡的部分。最好的方法是将边从a移到b:
a(g)和b(c,d,e,f)
此外,当k时,这个标准有点定义不足
但你可以想出一种方法,以尽可能平衡的方式将树拆分。
实现您的树,使每个节点拥有其所有子节点的计数。您可以非常有效地将其添加到任何树中。(例如,当您添加一个节点时,您必须通过递增计数向上迭代父节点链。删除一个节点,然后从计数中向上迭代)
然后从根开始向下迭代,以广度优先的方式,直到找到一组以最平衡的方式支配子节点的节点。我没有现成的算法,但我认为你可以很容易地找到一个。
我认为当你想划分成k个子树时,你会创建一个k个树根的数组。这些节点中的一个必须始终是当前树的根,然后向下迭代,查找要替换的k-1个候选节点,以改进分区。您将需要某种终止条件,在这种条件下,您不会向下交互到每个叶节点。E、 g.用最大的候选节点细分任何东西都没有意义。
我试图通过DP找到所有子数组的加权平均值,然后按列排序,找到长度相同的2。但我无法继续下去,我的方法似乎太模糊/太粗暴了。我将非常感谢任何帮助。提前谢了。
问题内容: 我有一张事件表,另一个是评分表。每个事件可以有许多评级。我需要能够通过评分从数据库中提取前三名事件,但是当然,需要对评分进行平均,因此具有五颗星评分的事件的评分不会比具有四颗平均值和100评分的事件更高。 谁能指导我如何在SQL中创建它? 谢谢 更新谢谢大家,我想我应该对事情的加权方式更加清楚(尽管我认为我需要更多地思考我希望它如何工作)。提供的SQL虽然有很大的帮助 问题答案: 对列
我如何将与此等价的东西传递给scikit-learn分类器,如随机森林或SVM分类器?
假设我得到的是范围内的随机数,使用: 假设它给出的数字小于或等于25,你就赢了,如果它给出的数字大于25,我就赢了。然后我有75%的机会赢。 我该如何加权这个数字大于25的概率的某个百分比,比如说1%。 所以,基本上,我试图将我获胜的几率再提高1%,而不是仅仅说“你赢24分或更少” 如果不清楚,请告诉我。
我目前已经部署了一个swagger项目,但是我在添加一些基本的授权时遇到了麻烦。当你点击“试试看!”按钮,您需要登录帐户才能访问结果。我有一个帐户,我想在每次有人试图访问api时自动使用它。贝娄是我这个项目的index.html: 我正在尝试确定信息应该去往何处,以允许基本授权。我知道它涉及到下面几行代码,但是有人能向我解释得更详细一点吗?我意识到GitHub上的swagger文档不是很清晰或者很
问题内容: 有没有办法使用numpy.percentile函数来计算加权百分位数?还是有人知道替代的python函数来计算加权百分位数? 谢谢! 问题答案: 不幸的是,numpy并没有为所有功能内置加权函数,但是,您始终可以将某些东西放在一起。