- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有一些带有节点和无向边的图(这些边可能有一个与之相关联的权重)。
我想找到所有(或至少一个)连通子图,在加权边之和为
最佳答案
一次快速的搜索把我带到了this description of degree centrality。结果表明,顶点的“度中心度”只是它的度(邻域计数)。
不幸的是,你的问题是“AA>”,所以不太可能存在任何能够快速解决每个实例的算法。首先注意,假设边权重为正,任何最优解中的边必然形成一棵树,因为在任何非树中,您可以删除至少一条边而不破坏连接性,这样做将降低子图的总边权重。(因此,作为一个积极的衍生:如果计算输入图的最小生成树,发现它的总权重
这里是np-hard
NP-hard问题的一个简化,我们得到了一个图g=(v,e)的边上有正的权重,它的顶点的子集s,和一个数字k,任务是确定是否可以使用总权重最大为k的边子集连接s中的顶点(如我上面所示,如果g中的所有度数之和都是d,那么我们需要做的就是将g转换为问题的输入:对于s中的每个顶点,我们添加足够多的新的“压载”顶点,每个顶点通过权重x+1的边仅连接到s_i,以使s_i的度数达到d+1。我们把X设为k,把Y设为| S |(d+1)。
现在,假设Steiner树问题的解决方案是肯定的,也就是说,存在一个具有总权重的边集k=k,它连接了S.中的所有顶点,在这种情况下,很清楚,在上面构造的问题的实例中,相同的子图(可能是其他的)连接了s中的所有顶点,因为s中的每个顶点都有d+1阶,所以总的阶数至少是s(d+1),所以你的决策问题的答案也是肯定的。
在另一个方向上,假设你的决策问题的答案是肯定的,也就是说,存在一个具有总权重<=x(=k)的边的子集,它连接一组具有至少约为s(d+1)的顶点的集合。我们需要证明,这意味着对原始steiner树问题的肯定回答。显然,只要证明满足上述条件(即边的总权重<=k,顶点的总度>=| S |(d+1))的任何子图的顶点集V'包含S(可能在其他顶点中)因此,让V'是这样一个解的顶点集,并相反地假设S中有一些顶点u不在V中但是,我们所能做的最大程度的和就是把图中所有其他的非压舱顶点都包括在v'中,这将给出至多(s-1)(d+1)+d的度的总和(第一项是s中其他顶点的度和;第二项是g中所有非s顶点的度和的上界;请注意,我们添加的压舱顶点都不能在子图中,因为包含它们的唯一方法是使用权重X+1的边,这显然是我们做不到的)但很明显(| S |-1)(d+1)+d=| S |(d+1)-1,严格小于| S |(d+1),这与我们的假设相矛盾,即V'的学位总数至少为| S |(d+1)因此,s是v'的子集,因此可以使用相同的边子集来连接s中的顶点,总权重不超过k,也就是说,steiner树问题的答案也是肯定的。
因此,对任何一个问题的肯定回答意味着对另一个问题的肯定回答,反过来又意味着对任何一个问题的否定回答意味着对另一个问题的否定回答。因此,如果能够在多项式时间内解决问题的决策版本,则意味着图问题中NP-hard Steiner树的多项式时间解这意味着问题的决策版本本身是np难的,优化版本也是np难的(正如我上面所说的,优化版本至少是np难的)。(决策表也
Steiner Tree in Graphs,因为可以在多项式时间内轻松验证是的答案。)
旁注:一开始我认为我从n p难背包问题中得到了一个非常直接的简化:给定一个n个权重w_1,…,w_n和一个n个利润p_1,…,p_n的列表,使一个中心顶点c和n个其他顶点v_1,…,v_n。对于每个v_i,用一个权重w_i的边将其附加到c,并添加p_i其他叶顶点,每一个都只有一个重量X+1的边缘连接到v_i然而,这种减少实际上不起作用,因为利润在输入大小n中是指数的,这意味着问题的构造实例可能需要指数数量的顶点,这是多项式时间减少所不允许的。
关于algorithm - 最大化子图中心度的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37370463/
给定一个包含 n 个非负整数的数组:A1、A2、...、AN。如何找到一对整数 Au, Av (1 ≤ u ans) { ans=arr[i] & arr[j
有人知道这段代码的正确解决方案吗? BOOL maximized = [myWindow isMaximized]; 最佳答案 也许看看 isZoomed 关于cocoa - NSWindow 最大化
当前有一个 MySQL 数据库,但遇到 MySQL 以 600% CPU 使用率运行的问题。 规范: 2.3 GHz Intel Xeon® E5-2686 v4 (Broadwell) 处理器或 2
我已将 Skype 配置为在 Windows 启动时最小化启动。 现在我需要通过全屏应用程序按钮中的一个按钮将 Skype 置于最前面。我有这段代码: For Each p As Proces
我已经有一段时间没有做任何生疏的程序了。我正在研究代码以最大化和最小化其他应用程序。所以我找到了一些基本的东西,这就是我所拥有的,对原来的东西稍作修改。它希望我生成一些我所做的 FindWindow
我有一个 Windows CE 应用程序,它记录移动设备的击键。有一个用于初始化录制功能的按钮,它通过调用强制主窗口最小化: ShowWindow (hWnd, SW_MINIMIZE); 在最小化窗
我想显示一个占据尽可能多屏幕空间的对话框。 所以,这是一个示例: AlertDialog dialog = new AlertDialog.Builder(ctx)......create(); Wi
对Wndows用户来说,最小化/最大化/关闭按钮放在系统窗口的右上角是肯定的。而大多数朋友都是成为Wndows用户之后才成为Ubuntu用户的,因此Ubuntu程序窗口中将这些按键放在左上角使用起来
1.Ctrl+Alt+T调出终端 2.首先安装gconf-editor: sudo apt-get install gconf-editor 会提示叫你安装 gconf-editor 安装完成
Width最大化窗口时,屏幕的属性似乎没有更新到完全最大化的宽度。如果我调整它的大小,一切正常,但在最大化时就不行。 我的代码如下: private void Window_SizeChanged(o
我正在这个 fiddle 中使用指令和 = 绑定(bind)。我收到以下错误: Uncaught Error: 10 $digest() iterations reached. Aborting! W
是否有任何快捷方式可以最大化您在 Eclipse 中使用的选项卡?假设我正在处理代码的一部分,并且我想最大化选项卡而不是使用鼠标双击它,有人知道一种方法吗? 最佳答案 CtrlM 将最大化/恢复编辑器
在 Glassdoor 评论中遇到这个问题,觉得很有趣。 Given an integer consisting of 4 digits, we need to maximize it in 24 h
在 VB6 中,我创建了一个带有一些文本框、列表框和命令按钮的表单。我使用类似 的方法设置所有这些控件的 X-Y 位置 control2.Top = form.Height * 0.50 'set
到处都有人告诉我使用这个: frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 但问题是我的 JMenuBar 时断时续地消失(发生在我身上的奇怪错误),并且
我有一个 JDesktopPane 和一个 JInternalFrame。我希望 JInternalFrame 在创建后自动最大化。如何对“最大化窗口”事件进行硬编码? 最佳答案 使用JInterna
这个问题已经有答案了: JFrame doesn't take the actual screen size (2 个回答) 已关闭 3 年前。 我想最大化我的 JFrame,就像按下“关闭”旁边的按
我正在使用 vim 和 python 编程,并使用 tpope's vim-dispatch通过运行当前文件 :Dispatch python main.py 程序的打印输出被定向到quickfix窗
假设我们有一个名为 total 的 NSDecimal 常量,它包含 3.33333333 除以 10/3 的值。 10 和 3 都是NSDecimalNumber。我们希望 Swift 中的 NSD
有谁知道如何在发生特定操作后最大化 JFrame?我将在下面发布我的代码,我是一个不评论我的代码的恶魔(我会在某个时候这样做)但它应该是相当 self 解释的。我试图做的是在从菜单中选择选项后使框架最
我是一名优秀的程序员,十分优秀!