以下是消费税:
以下是我得到的:
>
我不得不假设权重是正负混合的。只有这两种重量的混合才有意义。
我会先对边进行排序,所以负边会在先。
我会考虑使用克鲁斯卡尔的算法,但应该有一些修改
因为我欢迎负边,所以我会尝试添加尽可能多的负边。
此外,一些正边可能被添加到只是在不是所有负边都连接的情况下,他们可能需要一些正边作为桥。
{0,1}的权重为-20
{2,3}的重量为-10
如果{1,3}的权重为11,那么我当然不想要{1,3}
这意味着仍然需要包括所有顶点。
而且它不仅仅是一个MST。假设一个顶点有两条边,一条是-1,另一条是-2。在一个普通的MST算法中,只有边-2将被采取。但在这个消费税中,都需要采取-1和-2以进一步减少整体重量。
我认为你的算法基本上已经是正确的了,但是只要稍加修改,实现起来就变得微不足道了。
首先,每一个负边必须包括,以最小化产生的权重。接下来,计算连接组件的数量C
。如果c=1
,就完成了。否则,您需要额外的C-1
正边。
现在,当你添加负边时,把这看作是一个Kruskal的算法过程。每一个负边都可以把克鲁斯卡尔森林里的几棵树结合在一起。然而,即使负边的两端属于克鲁斯卡尔森林中的同一棵树,也要添加负边--不像通常的克鲁斯卡尔算法,在那里只添加联合两棵不同树的边。
以下是一些伪代码:
sort(edges);
c := n;
for edge in edges:
if edge.weight < 0:
if find(edge.firstEnd) != find(edge.secondEnd):
--c;
unite(edge.firstEnd, edge.secondEnd);
else:
if c == 1: break;
if find(edge.firstEnd) != find(edge.secondEnd):
unite(edge.firstEnd, edge.secondEnd);
--c;
这里unite
和find
是不相交集数据结构的函数。
这是我的算法。 我做了一个。每次当我找到时,我都知道我得到了一个有向循环。 然后我将暂时沿着向后(直到我在循环中遍历所有顶点),并计算。 我的算法正确吗? 如果我的算法正确,时间复杂度是多少? 这个问题有没有更好的算法?
这是我的doubht List chars=new ArrayList(); 上述列表中包含的值是[A, A, B, B, C, D, E]; 我想得到一个作为输出,因为这是根据ascii的最小值。如何在java中获取此值。
问题内容: 我正在使用Windows 10,Python 3.5和tensorflow 1.1.0。我有以下脚本: 我得到错误: 问题答案: 如果您写: 然后不是图层,而是图层的输出。该层是 所以看来您的意思是: 这是完整的代码段:
考虑一个不连通的有向图的例子,其中顶点和边其中顶点是孤立的。 根据这里的答案:(对强连通图的最小加法),保证这个图所需的最小边数结果是3。 如何找到将这些边添加到哪里,即图中一条边的起始点和终止点?
问题内容: 我正在处理高度不平衡的数据集,我的想法是从我的 libSVM 模型中获取特征权重的值。到目前为止,我对线性内核还可以,我可以在其中获得特征权重,但是当我使用或时,我无法达到目标。 在这里,我正在使用我的模型,并且可以使用轻松获得线性核的特征权重。谁能帮助我可以做同样的事情还是?到目前为止,我已尝试执行以下操作: 问题答案: 正如文档中所述,这不仅是不可能的: 权重分配给特征(原始问题的
问题内容: 我想检索用户的所有权限作为权限ID的列表,但是: 给我权限名称列表。怎么做? 问题答案: 关键是获取这样的权限对象: 在这里您可以像这样访问属性: 如果您想要该列表,请执行以下操作: 希望能帮助到你!