- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是一个消费税:
Let G be a weighted directed graph with n vertices and m edges, where all edges have positive weight. A directed cycle is a directed path that starts and ends at the same vertex and contains at least one edge. Give an O(n^3) algorithm to find a directed cycle in G of minimum total weight. Partial credit will be given for an O((n^2)*m) algorithm.
这是我的算法。
我做了一个DFS
。每次当我找到一个 back edge
时,我就知道我有一个定向循环。
然后我会暂时沿着父数组
倒退(直到我遍历循环中的所有顶点)并计算总权重
。
然后我将这个循环的总重量
与min
进行比较。 min
总是取最小的总权重。 DFS完成后,我们的最小有向环也找到了。
好吧,接下来是时间复杂度。
老实说,我不知道我的算法的时间复杂度。
对于 DFS,遍历需要 O(m+n)(如果 m 是边数,n 是顶点数)。对于每个顶点,它可能指向其祖先之一,从而形成一个循环。当找到一个循环时,需要 O(n) 来汇总总权重。
所以我认为总时间是O(m+n*n)。但显然是错误的,因为excise中说最佳时间是O(n^3),正常时间是O(m*n^2)。
谁能帮我:
最佳答案
您可以使用 Floyd-Warshall算法在这里。
Floyd-Warshall 算法寻找所有顶点对之间的最短路径。
算法非常简单,遍历所有对 (u,v)
,找到最小化 dist(u,v)+dist(v, u)
,因为这对表示从 u
到 u
的循环,权重为 dist(u,v)+dist( v,u)
。如果图形还允许自循环(边 (u,u)
),您还需要单独检查它们,因为算法未检查这些循环(并且只有它们)。
伪代码:
run Floyd Warshall on the graph
min <- infinity
vertex <- None
for each pair of vertices u,v
if (dist(u,v) + dist(v,u) < min):
min <- dist(u,v) + dist(v,u)
pair <- (u,v)
return path(u,v) + path(v,u)
path(u,v) + path(v,u)
其实就是找到从u到v再从v到u的路径,这是一个循环。
算法运行时间为 O(n^3)
,因为 floyd-warshall 是瓶颈,因为循环需要 O(n^2)
时间。
我认为这里的正确性微不足道,但如果您不同意我的观点,请告诉我,我会尽力解释得更好。
关于algorithm - graph - 如何找到最小有向循环(最小总重量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456935/
小程序加载后如何启动 GWT 应用程序?换句话说,onModuleLoad 方法必须在小程序下载后启动。 最佳答案 根据项目的具体情况,一种可能的选择是在小程序加载之前不要将 *.nocache.js
如何阻止用户打开披露面板?我想以编程方式打开和关闭它。 最佳答案 您可以使用disclosurePanel.setOpen(true/false); 参见api 但我认为不允许用户自己打开/关闭面板是
即使标签不可见,如何使标签占用空间(在面板上)? 最佳答案 您需要将Label的样式设置为隐藏,可以通过CSS visibility property来完成此操作。如何应用此样式取决于您如何创建标签。
有件事我无法理解。我的 GWT 代码中有几个 RPC 调用,例如: private final PravformServiceAsync getPravformService = GWT.create
我正在尝试使用 GWT 编写我的第一个项目。而且我不明白GWT应用程序与UiBinder国际化的原理。我以前用过JSP。我清楚地了解技术的国际化: 在 GWT 中,类似的标签可以包含一些内容: My
Channel API 是 GAE 的功能还是 GWT 的功能?我可以将 Channel API 与简单的 GWT RemoteServiceServlet 一起使用吗? (我的应用程序不使用 GAE
我遇到了下一个问题。我有产品列表,每个产品都有打开其 QuickLook PopUp 的按钮。我为此按钮创建了特殊事件,将其注册到 EventBus 中并触发它们。一切看起来都很好,但是当我单击一个按
我在使用 GWT 方法 Window.Open 时遇到问题。当我想打开一个窗口时它可以正常工作。但是,当我需要在新窗口中打开两个或多个 URL 时,它只会打开一个。并且在新窗口中始终显示列表中的最后一
GWT 的 RPC 调用的 onFailure() 方法中是否可以抛出异常?因为这个方法稍后会在服务器响应后被调用,我很抱歉这里可能会发生一些不好的事情.. 例如: public void metho
使用 MVP 范例时注册事件处理程序的最佳位置在哪里?我知道应用程序范围的事件必须在“AppController”中注册,但我需要从一个演示者引发事件,第二个演示者必须处理它。那么是在 AppCont
我有一个 Maven 多模块项目。其中一个模块(编译为 .jar )仅包含域对象,这些对象将在客户端和服务器端使用(我将此 .jar 添加为我的其他模块的依赖项)。 我知道 GWT 模块,将在哪里使用
我是一名优秀的程序员,十分优秀!