- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个组合问题,可以将其视为网络搜索问题。为了可视化和使用已经实现的功能,我决定使用 networkx 包(我实际上没有足够的时间以其他方式实现它)。
不幸的是,我的问题非常复杂。但是,我会尝试通过解释最简单的事情来简化理解。通常,我需要找出组合以到达树结束的节点。
下图显示了一个简单的例子:
在这种情况下,B
、D
、F
、H
是终端节点,而起点是用 O
表示。因此,路径组合可以是:
OAB
OCD
OED
OEF
OH
OGH
但是,我实际上是在搜索到达终端节点的“最短”或“最有利”路径。该图(或边缘)没有提供有关路径“成本”的任何信息。成本评估将根据找到的组合结果进行。评估找到的组合的“实际”成本在计算上非常昂贵。虽然图表没有提供太多信息,但有一点很清楚:为了达到H
,OH
在任何时候都是比OGH
更好的选择>。因此,可以从可能的组合列表中删除组合 OGH
。它本质上类似于距离度量。
还有一点,其实D
和F
对应的是等价的点(虽然是不同的节点,但对我的应用意义相同)。然而,只有两个节点才能获得这样的信息
- see each other
- see exactly the same nodes
如果仔细看图,也可以看出C
和E
是等价节点。因此,更具体地说:OCD
和 OED
的组合实际上是相同的。一旦将 OCD
添加到组合列表中,就不需要添加 OED
。从图中也可以看出,由于D和F是一样的,一旦将OCD
添加到列表中,就不需要再添加OCF
。
总而言之,这种情况下的解决方案是:
OAB
anyone of OCD, OED, OCF, OEF
OH
为了绘制该图,我遵循了 networkx 的教程,然后创建了以下代码:
import networkx as nx
import matplotlib.pyplot as plt
graph = [('O', 'A'), ('O', 'C'), ('O', 'E'), ('O', 'G'), ('O', 'H'),
('A', 'B'), ('A', 'O'),
('B', 'A'),
('C', 'D'), ('C', 'E'), ('C', 'F'), ('C', 'O'),
('D', 'E'), ('D', 'C'), ('D', 'F'),
('E', 'C'), ('E', 'D'), ('E', 'F'), ('E', 'O'),
('F', 'C'), ('F', 'D'), ('F', 'E'),
('G', 'H'), ('G', 'O'),
('H', 'G'), ('H', 'O')]
G=nx.DiGraph()
for edge in graph:
G.add_edge(edge[0], edge[1])
pos=nx.graphviz_layout(G,prog='dot')
nx.draw(G, pos)
plt.show()
因此,我的问题是使用任何工具箱列出此类序列,但最好使用 networkx。要做的第一步可能是在创建图形对象之前简化(或减少)图形。获得简化图后,使用 nx.all_simple_path
命令,可以列出所有替代路径。我需要你的帮助来进行这样的图形缩减。
我的图表并不深,它们通常与示例中给出的大小大致相同。
最佳答案
我已阅读完整的模块手册并尝试了不同的搜索算法,但我找不到现有的实现,也找不到针对此类特定情况的任何解决方法。
因此,根据从评论中获得的建议,我编写了自己的简化器并在创建图形之前删除了所有“冗余”节点。我只是通过将列表转换为集合然后比较它们是否相同来做到这一点。之后,我创建了图表并使用 nx.all_simple_paths
命令列出了所有解决方案。一旦我得到了路径,这次我搜索是否有任何路径(如 OGH
)当最后一个字母之前的字母(即索引 [-2])被删除时结果路径( OH
) 也在 nx.all_simple_paths
列表中。如果是,那么我删除了该解决方案。
我编写的脚本非常杂乱无章,不涉及特殊技术。因此,我选择编写解决方法论。
关于python - 列出所有可能的 'Shortest' 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24866048/
BufferedImage image = ImageIO.read(SpriteSheet.class.getResource(path)); BufferedImage image = Image
希望有人能够帮助我解决将我的 React 应用程序推送到 Heroku 时遇到的问题。 heroku 日志反复显示以下错误。 at=error code=H10 desc="App crashed"
我是 Kotlin 的新手,我正在经历这样的例子。 . . package com.example.lambda1 import spark.Spark.get fun main(args: Arra
如果您已经安装了 32 位 JDK,请在中定义一个 JAVA_HOME 变量 Computer>System Properties>System Setting>Enviorment VAriable
我正在开发一个独立于平台的应用程序。我收到一个文件 URL*。在 Windows 上,这些是: file:///Z:/folder%20to%20file/file.txt file://host/f
我在 OSX、Objective-C 上。 我有一个像 这样的路径/NSURL /Users/xxx/Desktop/image2.png 但我将它传递给第三方应用程序,该应用程序会像 excpect
我已经安装了 Android studio 和插件的 DART,FLUTTER 来启动 flutter,但是因为我在创建我的第一个 flutter 项目时无法提供 sdk 路径。 最佳答案 我试图找出
127.0.0.1:8000/api/仅包含来自第二个应用程序的 url,但我将两个 url 模块链接到相同的模式。甚至有可能做到这一点吗? 第一个应用程序: from django.urls imp
对于大量图像(大约 1k,加上相同数量的拇指,在大约 500 个文件夹中),我们要求网站上使用的所有图像 URI 都必须具有 SEO 优化路径。它们已经准备好并提供完整的路径结构(每个文件夹包含一个具
为什么 f 不是一个文件?什么可能导致这种情况? String currentPhotoPath = "file:/storage/sdcard0/Pictures/someFileName.
Gradle 中的项目名称或路径中允许使用哪些字符? 它是否与特定操作系统的目录名称中允许的字符相同(例如: http://en.wikipedia.org/wiki/Filename#Reserve
我有一个包含文件夹路径的表格。我需要找到层次结构中这些文件夹之间的所有“差距”。我的意思是,如果表格包含这 3 个文件夹: 'A' 'A\B\C' 'A\B\C\D\E\F\G' 我需要在层次结构中找
我在 Linux 服务器上的/home/subversion 中安装了 svn - 那里有一个 ROOT 文件夹,其中包含 db 和 conf 等文件夹。没有映射到项目名称的文件夹,请有人告诉我如何列
对于我的图像位置:/src/assets/bitmap/sample.jpg 给出了关键配置: context: resolve('src') output: { path: resolve('b
我需要创建带有圆角的 SVG 路径,以将它们导出到 DXF 进行切割。我的问题是角应该是圆弧,而不是贝塞尔曲线。 使用 arc 命令相对容易处理直角,因为半径也是从拐角到圆弧起点的距离。对于其他角度,
大家好,我正在玩 Airflow,我正在阅读这篇很有帮助的 tutorial .我正在寻求帮助以更好地了解 Admin->Connection 如何在 Conn Type: File (path) 方
我的目标是定义R将用于安装和搜索库的单个路径。我read可以通过更改Rprofile.site安装路径中的R文件来完成。我在那里尝试了两个命令: .libPaths("D:/RLibrary") .L
我有一个问题:当我在一个页面中时,我想返回到上一页。我使用 $routeProvider。如何读取之前的 url? 我尝试在我的 Controller 中使用此代码但不起作用... angular.m
我正在尝试将一个文件从我的主干合并到一个分支(wc),并且对于看起来位于当前合并操作中不涉及的分支上的路径出现奇怪的未找到路径错误。 例如,在我们的 svn 项目中,我们有: 分行 分支 0 分支 1
我有一个树数据序列化如下: 关系:P到C是“一对多”,C到P是“一对一”。所以列 P 可能有重复的值,但列 C 有唯一的值。 P, C 1, 2 1, 3 3, 4 2, 5 4, 6 # in da
我是一名优秀的程序员,十分优秀!