今天我在这个学期进行了算法测验,我无法弄清楚这两个问题,他们整天都在困扰着我。我已经阅读了笔记和讲义,但我还是不确定。如果有人可以看看并提供一些有关这些问题的见解,我将不胜感激。这些不是作业,我已经参加了测验。
真或假的问题
1)[Paraphrased]具有n个顶点的二分图中的最大边数为n(n-1)/ 2.
我认为这是假的,我的逻辑是n个verticies意味着我们有两个n / 2行。第一个节点与第二行有n / 2个连接,第二个节点与第二行有n / 2个连接......等等......
因此,我计算了具有n个顶点的二分图中的最大边数(n ^ 2/4)。
2)[转述]是否有可能进行切割,这不一定是定向流图(Ford-Fulkerson算法)中的最小s-t切割,使得流量大于s-t切割能力?
我说错了,但我不明白这个问题......是否有可能采取s-t切割以使流量更大?我知道弱对偶定理和'最大流量=最小切割'所以我放下了假,但我不知道。
简答题:
1)解释测试图表连接天气的有效方法。
我建议进行广度优先搜索,如果图中的BFS算法找不到节点,则表示没有连接。我记下运行时间是O(m + n),因此它是一种有效的算法。它值得两分,这是最后一个问题,但我现在担心这是一个棘手的问题。
2)在图表中:
列出展示最小顶点覆盖的顶点集[释义]
我的答案是{A,D},{A,E},{B,C},{B,D},{C,E},但现在我担心它只是{A},{ B},{C},{D},{E} ......
感谢您花时间阅读! :)
答案 0 :(得分:1)
我现在只有第一张图的答案,但你是对的。
在二分图中,必须有两组节点 - 比如第一组中的x和第二组中的(n - x)。
此图中的最大边数将为x(n-x)或nx - x ^ 2.
nx-x ^ 2的最大值是x =(n / 2)
所以图中的最大边数是(n / 2)*(n - (n / 2))=(n ^ 2)/ 4,正如你所指出的那样。
答案 1 :(得分:0)
图表连接:
你使用BFS是正确的。在BFS的一次迭代之后,如果访问了所有节点,那么我们可以得出结论图是连接的。
或者,也可以使用DFS完成此操作。方法保持不变。
答案 2 :(得分:0)
1)已经回答,我同意你是对的。
2):这个问题似乎含糊不清。
such that the flow capacity is greater than the s-t cut capacity
流量是什么?整个网络?或削减?
如果是后者,似乎可以问A> A,这显然是假的。 如果是前者,那么很明显答案是错误的。如果有可能找到这样的切割,则max-flow = min-cut将不成立:网络的最大流量将大于s-t切割的最小容量。
然而, 可以进行切割,使得切割的流量大于网络的最小切割容量。你不认为那是他们的意思吗?例如,在example at the top of this article中,如果在s和网络的其余部分之间切换,则切割容量大于网络的最小s-t切割容量。
但即使这种解释似乎也不太可能,因为它非常微不足道......“最小”的含义是可能有更大的价值。
也许有必要看到确切的原始措辞。
简短回答:
1)已被回答,虽然我不明白m是什么(在O(m + n)中),除非你在讨论二分图?
2)我同意@glebm说你弄错了...抱歉。 “Vertex cover图形是一组顶点”,但你似乎写了一个边列表?后面跟着一组单例顶点?
图表的Vertex cover是一组 顶点的每个边缘 图表至少有一个事件 集合的顶点。
由于这是一个完整的图形,因此所有顶点都是可互换的。所以我们并不关心哪个顶点,而只是我们需要多少个顶点才能触及所有边缘。答案不难发现。如果我们选择任意三个顶点,则连接其他两个顶点的边缘不会被“覆盖”。 QED。
事实上,我们可以证明,对于n个顶点的任何完整图形,最小顶点覆盖需要n-1个顶点。