依赖算法 - 找到要安装的最小软件包集

2023-12-25

我正在研究一种算法,其目标是找到安装包“X”的最小包集。

我将通过一个例子更好地解释:

X depends on A and (E or C)
A depends on E and (H or Y)
E depends on B and (Z or Y)
C depends on (A or K)
H depends on nothing
Y depends on nothing
Z depends on nothing
K depends on nothing

解决方案是安装:A E B Y。

Here is an image to describe the example:

是否有一种算法可以在不使用暴力的情况下解决问题?

我已经阅读了很多关于 DFS、BFS、Dijkstra 等算法的文章... 问题是这些算法无法处理“OR”条件。

UPDATE

我不想使用外部库。

该算法不必处理循环依赖。

UPDATE

一种可能的解决方案是计算每个顶点的所有可能路径,并且对于可能路径中的每个顶点执行相同的操作。 因此,X 的可能路径为 (A E),(A C)。现在,对于这两个可能路径中的每个元素,我们可以执行相同的操作:A = (E H),(E Y) / E = (B Z),(B Y),依此类推... 最后,我们可以将集合中每个顶点的可能路径组合起来,并选择长度最小的路径。

你怎么认为?


不幸的是,考虑到问题实际上是,找到一种比暴力破解更好的算法的希望不大。NP-hard http://en.wikipedia.org/wiki/NP-hard(但甚至不NP完全 http://en.wikipedia.org/wiki/NP-complete).

该问题的 NP 难度证明是最小顶点覆盖 http://en.wikipedia.org/wiki/Vertex_cover问题(众所周知是 NP 困难而非 NP 完全)很容易简化为:

Given a graph. Let's create package Pv for each vertex v of the graph. Also create package X what "and"-requires (Pu or Pv) for each edge (u, v) of the graph. Find a minimum set of packages to be installed in order to satisfy X. Then v is in the minimum vertex cover of the graph iff http://en.wikipedia.org/wiki/If_and_only_if the corresponding package Pv is in the installation set.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

依赖算法 - 找到要安装的最小软件包集 的相关文章

  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 返回上个月的日期时间对象

    如果 timedelta 在它的构造函数中有一个月份参数就好了 那么最简单的方法是什么 EDIT 正如下面指出的那样 我并没有认真考虑这一点 我真正想要的是上个月的任何一天 因为最终我只会获取年份和月份 因此 给定一个日期时间对象 返回的最
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • PyArmor - 打包为一个可执行文件

    当我执行此命令时 您好 使用 PyArmor pyarmor pack main py 它将它打包到一个名为的文件夹中dist里面包含我的 exe 以及许多 Python 扩展文件 据我所知 PyArmor 使用 PyInstaller 来
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • 为什么 __instancecheck__ 没有被调用?

    我有以下 python3 代码 class BaseTypeClass type def new cls name bases namespace kwd result type new cls name bases namespace p
  • 用于多个窗口的 Tkinter 示例代码,为什么按钮无法正确加载?

    我正在编写一个程序 应该 按一下按钮即可打开一个窗口 按另一个按钮关闭新打开的窗口 我使用类 以便稍后可以将代码插入到更大的程序中 但是 我无法正确加载按钮 import tkinter as tk class Demo1 tk Frame
  • 在seaborn中对箱线图x轴进行排序

    我的数据框round data看起来像这样 error username task path 0 0 02 n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w 39 png 1 0 10 n49vq
  • 使用 HtmlUnit 定位弹出窗口

    我正在构建一个登录网站并抓取一些数据的程序 登录表单是一个弹出窗口 所以我需要访问这个www betexplorer com网站 在页面的右上角有一个登录链接 写着 登录 我单击该链接 然后出现登录弹出表单 我能够找到顶部的登录链接 但找不
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 在python中读取PASCAL VOC注释

    我在 xml 文件中有注释 例如这个 它遵循 PASCAL VOC 约定
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • 如何使用 Python 3 正确显示倒计时日期

    我正在尝试获取将显示的倒计时 基本上就像一个世界末日时钟哈哈 有人可以帮忙吗 import os import sys import time import datetime def timer endTime datetime datet
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO
  • 在python中对列表列表执行行总和和列总和

    我想用python计算矩阵的行和和列和 但是 由于信息安全要求 我无法使用任何外部库 因此 为了创建矩阵 我使用了列表列表 如下所示 matrix 0 for x in range 5 for y in range 5 for pos in
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code

随机推荐

  • 获取 .NET 方法返回值的属性数据

    我可以在 MemberInfo 上调用 GetCustomAttributesData 这很好 因为我知道调用了哪个构造函数来初始化属性以及使用了哪些命名参数 如果我将 return 放在方法上以赋予返回值属性 则无法访问 GetCusto
  • Excel:在“kx + m”文本字符串中查找 k 和 m

    有没有一种巧妙的方法使用VBA或查找 a 中的 k 和 m 变量的公式kx m string kx m 字符串的外观有多种情况 例如 312 x 12 12 x 2 4 x 等等 我很确定我可以通过在 Excel 中编写非常复杂的公式来解决
  • Selenium 应用程序在 Heroku 上托管时重定向到 Cloudflare 页面

    我制作了一个不和谐的机器人 它使用 selenium 访问网站并获取信息 当我在本地运行代码时 我没有任何问题 但是当我部署到 Heroku 时 我得到的第一个 URL 将我重定向到该页面Attention Required Cloudfl
  • 根据单选按钮单击显示和隐藏 div [重复]

    这个问题在这里已经有答案了 我希望能够使用单选按钮和 jQuery HTML 动态更改显示的 div div 2 Cars div
  • Linq 风格“For Each”[重复]

    这个问题在这里已经有答案了 是否有用于 Foreach 操作的 Linq 风格语法 例如 将基于一个集合的值添加到另一个已存在的集合中 IEnumerable
  • Pycharm 中的远程开发 - 无需本地副本

    我知道如何在 Pycharm 中设置远程解释器 到目前为止远程开发进展顺利 但在某些情况下 我无法在我处理商业问题的计算机上保存文件的本地副本 有没有办法在 Pycharm 中远程开发WITHOUT有脚本和其他项目文件的本地副本吗 我刚刚遇
  • IE 中的 JavaScript 分析器

    有谁知道在 IE 中分析 JavaScript 的工具吗 可用列表 IE8 http blogs msdn com ie archive 2008 09 11 introducing the ie8 developer tools jscr
  • 录制直播音频

    我实际上正在制作一个应用程序 它必须在 iPad 上播放和录制来自互联网的流媒体音频 音频流已经完成 我很快就要进入录音部分 我不知道如何继续 你能给我一个提示吗 主意 它必须在播放的同时录制为 AAC 或 MP3 Thanks 您需要使用
  • 如何在 TypeScript 中通过 AMD 请求 jquery

    我的 TypeScript 模块如何需要 jquery AMD 模块 例如 假设脚本的目录结构如下所示 jquery 1 8 2 js jquery d ts module ts require js 我希望从 module ts 生成的
  • 为什么它不是尾递归?

    我有以下代码 我不明白为什么它不是尾递归 override fun drop n Int List a if n 0 this else tail drop n 1 而这是尾递归 fun drop n Int List a tailrec
  • 如何在 Python 中比较数组中的值 - 找出两个值是否相同

    我基本上有一个包含 50 个整数的数组 我需要找出这 50 个整数是否相等 如果相等 我需要执行一个操作 我该怎么做呢 据我所知 Python 中目前没有一个函数可以做到这一点 如果你的意思是你有一个列表并且你想知道是否有重复的值 那么从列
  • 并发、并行和异步方法有什么区别?

    并发是指两个任务在不同的线程上并行运行 但是 异步方法并行运行 但在同一个线程上 这是如何实现的 另外 并行性怎么样 这3个概念有什么区别 并发和并行实际上与您正确推测的原理相同 两者都与同时执行的任务有关 尽管我想说并行任务应该是真正的多
  • Wpf:在多个控件上应用自定义样式的工具提示

    我正在使用 WPF 应用程序 我创建了一个自定义控件库 在其中自定义了所有控件 这意味着添加了一些功能并重新设计了它们的样式 我也以同样的方式重新设计了工具提示 我在其他项目中使用这个自定义库 除了工具提示之外 一切都工作正常 工具提示样式
  • 如何使用两个按钮从 api 制作日期和时间列表水平视图,以通过颤动滚动列表视图

    我在颤振日期和时间页面视图中 当用户单击时间时 将单击的时间设置为灰色 并将其他时间设置为透明颜色 在此图片中您可以看到所选日期 https i stack imgur com jQ8dd jpg请注意 用户可以再次重新选择 以便旧的选择设
  • 如何转换 JToken

    我有一个值为 1234 的 JToken 如何将其转换为整数值 如 var totalDatas 1234 var tData jObject totalDatas int totalDatas 0 if tData null totalD
  • Pandas 中的plot 和iplot 有什么区别?

    在 Jupyter Notebook 中显示图形时 plot 和 iplot 有什么区别 我刚刚开始在 Python 3 6 6 中使用 iplot 我认为它使用了 Cufflinks 包装器来运行 Matplotlib 这似乎是我用简单的
  • MongoDB 数组 - 原子更新或推送元素

    我在 MongoDB 中有以下文档 id ObjectId 521aff65e4b06121b688fabc user abc servers name server1 cpu 4 memory 4 name server2 cpu 6 m
  • 如何在MVC单元测试类中模拟Request.Files[]?

    我想在 MVC 单元测试中测试控制器方法 为了测试我的控制器方法 我需要一个长度为 1 的 Request Files 集合 我想模拟 Request Files 因为我在控制器方法渲染的视图上使用了文件上传控件 任何人都可以建议我如何在单
  • 如何使用GD检查GIF是否具有透明度?

    我找到了问题如何使用GD检查图像是否具有透明度 https stackoverflow com q 5495275但答案都是针对 PNG 文件的 是否有解决方案可以使用 GD 扩展在 PHP 中检查 GIF 图像是否具有透明度 我假设 al
  • 依赖算法 - 找到要安装的最小软件包集

    我正在研究一种算法 其目标是找到安装包 X 的最小包集 我将通过一个例子更好地解释 X depends on A and E or C A depends on E and H or Y E depends on B and Z or Y