注:不需要正式的证明或任何东西,只是算法的一般思想,我会深入研究。
给定一个有向图:G(V,E),我希望找到最小顶点集T,这样对于T中的每个顶点t,都不存在以下边:{(t,v) | for every v outside t} in O(V+E)
换句话说,允许t从T以外的顶点获取边,但不允许发送。
(你可以把它演示为电话,它允许我从外面打电话,它是免费的,但它不允许从我身边打电话给他们)
我认为这个问题非常接近或类似于在有向图中找到所有强连通分量(scc),它的时间复杂度是O(V+E),我正在考虑构建一个新的图并运行这个算法,但不完全确定。
问题描述
给定的顶点V,它可以被称为“命题”。
给定的权重:
data W
= Requires -- ^ Denotes that a "proposition" depends on another.
| Invalidates -- ^ Denotes that a "proposition" invalidates another.
在线性序中,如果A要求B,则B必须在A之前,反之,如果A使B无效,则B必须在A之后。
给出了一个加权有向多图(多重图),它最多有2条平行边.其中一个顶点只能要求包含另一个顶点一次,并且只
我有一系列约束,每个约束由两个符号和一个比较运算符组成:<、<=、!=、==、>=或>。因此,例如:
A <= B
C >= B
A != C
C == D
D > E
我想做三件事:
首先,我要检查是否有任何不一致之处。因此,例如,如果我有A > B、B > C和A == C,就会出现不一致性,因为A必须等于C,并且大于C。
我希望能够查询任意两个符号,并得到它们之间可行的相对排序。例如,query(A, C)应该返回{<} (一个由单个元素组成的集合:小于),query(B, E)应该返回{<, =, >}。
问题:
给出N个节点和M个边的有向图(M,<=,2.N)。查找从所有其他节点可以到达的所有节点。
示例:
下图有4个节点和4个边:
答案:节点(2)和(3)可以从所有其他节点到达。
P/S:
我想出的唯一解决方案是还原图、BFS所有节点并检查它们是否到达所有其他节点。但它需要O(n^2)。
还有其他的方法需要O(n.logn)或更少吗?
下面是我对O(n^2)方法的看法:
void init(){
cin >> n >> m;
for(int i = 0; i < m; i++){
int u, v; cin >
我有一个boost adjacency_list,这是我的主要图表。在此图中,我使用create_subgraph函数添加了一些子图。
我的问题是,如何才能在不存储Graph对象的情况下获得刚刚创建的子图列表?
例如:
Graph g; // typedef for a adj. list
Graph sub_graph1 = g.create_subgraph()
Graph sub_graph2 = g.create_subgraph()
//Do some processing here
//Find all subgraphs of g - iterator/array
Graph
我正在尝试计算具有确切K条边和N个明显标记的顶点的简单连通图的数量。我已经在下面写了这段代码,但它似乎不起作用。
我们的想法是,这种图不会有孤立的顶点,所以我对N个顶点和K条边这样做。
Connected(N,K):
1) Total = all possible graphs, including disconnected ones.
2) Disconnected = Sum from i=1 to i=N-1 [(Connected(i,K)*(number of ways to
choose i vertices from all N vertices)]
3) return
我试图改进我的解决方案,使用快速查找算法在有向图中找到所有弱连通的组件。
问题陈述
给定一个DirectedGraphNode列表,查找所有岛屿(即弱连接组件)。
public class DirectedGraphNode {
String val;
List<DirectedGraphNode> neighbors;
}
因此,给出了以下有向图:
A —> B —> <— C
^
|
E <— F —> D —> G
X -> <- Y
node : neighbors
A
问题详细信息:
拉什夫是EMLand的市长。EMLand由交叉口和街道组成。从每个交叉口到其他任何一个交叉口都有一条路径。交叉口用正整数1.n表示。一家建筑公司提供拉什夫来重建EMLand的所有街道,但拉什夫可以选择at most k of them to be rebuilt.。建筑公司为每条街道提供了一个新的长度,这意味着在重建街道后,街道的长度发生了变化。现在,拉什夫作为这座城市的市长,必须做出明智的选择,以便将所有交叉路口之间的路径长度之和降到最低。救救拉什夫!
算法:
标注:旧边长度为L,新长度为L',边集为E。
长度将减少的edges(E')的计数(edges(
我有以下简单的问题。对于多个节点,我有一个距离矩阵,我希望得到这个节点的子集列表,这样在每个子集中,每两个节点都处于最小距离dmin。也就是说,最初,每两个节点都由具有关联值的边缘连接。我希望删除值小于dmin的每一条边,并列出所有由此产生的断续图。
本质上,我希望得到彼此非常接近的数据点簇,而不是使用聚类算法,而是使用距离的阈值。
我的问题是,自然地,我如何在R中完成它,考虑下面的矩阵m:
a b c d
a 1.0 0.9 0.2 0.3
b 0.9 1.0 0.4 0.1
c 0.2 0.4 1.0 0.7
d 0.3 0.1 0.7 1.0
有四个节点(a,b,c,