- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试对图进行边收缩。n 是图中的顶点数。包含表示边的顶点对的 vector f 包含要收缩的边。
该图不包含任何自环。
如果代码中有任何逻辑错误,请指出。如果方法完全错误,请告诉我正确的算法。
void modify(vector<pair<int, int> > &f)
{
// sorting elements of each pair
for(vector<pair<int, int> >::iterator it = f.begin(); it != f.end(); it++)
{
if(it->first > it->second)
swap(it->first, it->second);
}
// sorting elements of set f
sort(f.begin(), f.end());
reverse(f.begin(), f.end());
for(vector<pair<int, int> >::iterator it = f.begin(); it != f.end(); it++)
{
int x, y;
x = it->first;
y = it->second;
for(int i = 0; i < n; i++)
if(x != i)
{
graph[x][i] = graph[y][i] = graph[x][i] + graph[y][i];
graph[i][x] = graph[i][y] = graph[i][x] + graph[i][y];
}
}
vector<bool> pos(n, false); // array of positions to be deleted
for(vector<pair<int, int> >::iterator it = f.begin(); it != f.end(); it++)
pos[it->second] = true;
// deleting rows
int count = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
graph[i-count][j] = graph[i][j];
if(pos[i])
count++;
}
// deleting columns
count = 0;
for(int j = 0; j < n; j++)
{
for(int i = 0; i < n; i++)
graph[i][j-count] = graph[i][j];
if(pos[j])
count++;
}
// finally dimension of the matrix becomes n - count
n = n - count;
}
提前致谢。
最佳答案
给定以下示例图:
a d
\ /
b---e
/ \
c f
“收缩”边 {b, e} 会导致以下结果吗?:
a d
\ /
g
/ \
c f
“是的,就是这样” - 阿米特。谢谢,在回答您的问题之前,我想获得正确的规范。进一步的假设是:
graph
中,graph[x][y]
为边(x, y)的权值; 0表示从x到y没有边让我们尝试一些伪代码:
void contractEdge(int v1, int v2) {
for (int i = 0; i < n; i++) {
if (graph[v2][i] > 0) {
graph[v1][i] = graph[v1][i] > 0 ? min(graph[v1][i], graph[v2][i]) :
graph[v2][i];
graph[v2][i] = 0;
}
if (graph[i][v2] > 0) {
graph[i][v1] = graph[i][v1] > 0 ? min(graph[i][v1], graph[i][v2]) :
graph[i][v2];
graph[i][v2] = 0;
}
graph[v1][v2] = graph[v2][v1] = 0;
}
}
代码是这样工作的:给定边 {v1, v2},v1 成为“收缩”顶点。这意味着,不是插入一个新的顶点(在我的第一个例子中是“g”),v1 保留在图中,v2 从中删除(通过将边上的权重分配给所有其他顶点,实际的顶点数不会改变).此外,所有包含 v2 的边都会弯曲以包含 v1。
现在可以为一组边调用此方法。运行时间将为 O(n * #edges_to_contract)。我希望这是您想要的行为。
重要提示:如果您对边权重使用不同的表示,即 0 表示权重为 0 的边,∞(无限)表示没有边,那么您的问题就变得微不足道了,因为所有你要做的是:
图[v1][v2] = 图[v2][v1] = 0
这有效地收缩了边缘 {v1, v2},因为现在在 v1 和 v2 之间移动不需要任何成本
关于c++ - 对图执行边收缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173012/
我对 ScalaCheck(以及整个 Scala)相当陌生,所以这可能是一个相当简单的解决方案 我正在使用 ScalaCheck 为 AST 生成测试并验证编写器/解析器是否工作。我有这些文件 AST
我首先创建一个特定大小的 JTextArea。用户可以在其中添加文本,但如果它变得太长(垂直或水平),它将被截断。我希望 JTextArea 自动扩展或收缩(用于删除文本)。 我将来可能会允许用户更改
我正在学习如何在浏览器更改大小时调整 div 元素的大小。我希望我的 slider (参见 Fiddle)始终显示 10 张幻灯片,即使浏览器变小(参见下图)也是如此。 目标: 我能想到的实现这一点的
嗨,我在使用 css 面板时遇到了一些问题,我有点想寻求帮助,我的代码运行良好,但是如果用户让浏览器缩小尺寸,面板就会出现在文本下面,这就是我的意思意思是: 这是正常浏览器大小下的样子: 如果用户将浏
我正在研究和实现事件轮廓的贪婪算法,如 Donna Williams 的论文 - 事件轮廓和曲率估计的快速算法中所述。 与另一种实现(Kass 等人的实现)相比的优势之一应该是沿等高线曲线的点均匀分布
在 PHP 中,如何复制 tinyurls 的扩展/收缩功能,就像在 search.twitter.com 上一样? 最佳答案 如果你想找出一个 tinyurl 的去向,使用 fsockopen 在端
有java.io.ZipInputStream膨胀和java.io.ZipOutputStream这会泄气。 但有时我不希望这样。有时,当使用接受 InputStream 的第三方 API 时,我想要
我试图做到这一点,以便在选择文件后,显示文件路径的文本字段会自动收缩/扩展以适合路径。 JFileChooser fileChooser = new JFileChooser(); if (fileC
我有两个 flexbox,它们在高度变化时收缩,嵌套内容重叠。 如何防止这种情况? 最佳答案 just add flex-shrink:0 to your element and the flexbo
想要逐渐“打开”和“关闭”表格中的行,适本地向下推或拉起下面的行。 我能够通过使用 transition 进行计时和使用 transform 进行大小调整来使 div 扩展/收缩(无法使用 heigh
我有一个10列24行的表,可以存储一个值,也可以是=0。它们被称为msg1,msg2...直到msg10。我正在编写一个查询,用 0 而不是任何字段中的特定值来更新此表。 所以我写了(59是一个测试值
有谁知道缩小/压缩 db4o 数据库的方法吗? 最佳答案 压缩/收缩是什么意思?缩小现有数据库?还是要压缩数据库? 其中一个角色是 defragmentation .这将释放数据库中未使用的空间。删除
我正在使用 flexbox 来布局页面,因为 growing 行为很有用。但我想完全防止收缩行为。 无论如何要管理这个? 示例代码: This one should gr
我是 jQuery/Javascript 的新手,甚至是通过缩小的 jQuery/Javascript 进行搜索的新手。 我正在尝试重新创建我在 Materialize 框架的表单组件中找到的一些功能
我有一个对象表及其类型,如下所示: objectType | object 107 Boeing 107 Airbus 323 Audi 323
我正在尝试使用以编程方式构建的 TableLayout 将 20x20 表格放入 View 中。 setStretchAllColumns/setShrinkAllColumns 方法非常适合压缩所有
我有一个 QDialog 和一个 QVBoxLayout 控制它的高度。 这个主要的 QVBoxLayout 由一个或多个 QVBoxLayout child 组成,后面是一些其他小部件。当我添加额外
如何缩小任意(未指定)宽度的居中图像周围的 anchor (绿色边框)?换句话说,我想要绿色边框居中的秒框,就像第一个一样。没有 float ,没有绝对定位。 移除行 (A) 中心,但 anchor
我正在制作一款安卓游戏。我在 Galaxy sII 上测试我的应用程序。我取得了很大进步。不幸的是,我忽略了对其他设备进行测试。我知道我会遇到不同类型设备的不同分辨率问题。但我认为我可以通过安排我的坐
如果 GUI 设计人员使用特定设备屏幕尺寸作为引用点提供 iOS 设计,那么如果应用程序在不同设备上运行,如何使字体扩展或收缩? 即假设设计者提供了一个以 iPhone 8 屏幕尺寸为引用的单一设计,
我是一名优秀的程序员,十分优秀!