- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Py2neo,但这可能并不重要,因为这很可能需要通过编写 Cypher 查询来完成。
本质上,我想在子图中找到一条最短路径,其中子图占整个图的大部分,但删除了很小一部分(百万分之一或更少)的边。
例如,假设我有节点 A、B 和 C,以及边 (A->B)、(A->C)、(B->C)。当然,从 A 到 C 的最短路径是通过直接连接。但是,如果我想找到不使用该边的最短路径,则必须是 A B C。
此外,这将是用户可以在多用户(网络)应用程序中指定的内容。所以我不能真正改变数据库本身......如果这不是问题,我也许可以在边上创建一个属性“允许:真/假”并将其设置为假,但这会扰乱应用程序的行为所有当前用户。
对此的一种变体是“不允许:sessionID1、sessionID230、sessionID1010”,即实际存储哪些应用程序 session 想要在边缘本身中排除该边缘,但这似乎也不理想。
当然,我实际上可以在 python 中实现 BFS,方法是根据需要从 neo4j 获取节点并将它们保存在队列中,而不是让 neo4j 进行搜索,但肯定会慢得多,对吧?
有什么想法吗?谢谢
编辑:请求查看代码。
下面是我目前如何获得我首先在索引中查找的两个节点之间的最短路径。现在图像还有一个边列表(即唯一关系),在最短路径搜索中必须忽略这些边。
from py2neo import neo4j
g = neo4j.GraphDatabaseService()
def shortest_path(a, b):
a = g.get_indexed_node("worddex", "word", a)
b = g.get_indexed_node("worddex", "word", b)
if not a and b: return None
query_string = "START beginning=node(%d), end=node(%d) MATCH p = shortestPath(beginning-[*..100]-end) RETURN p" % (a._id, b._id)
result = neo4j.CypherQuery(g, query_string).execute()
if not len(result): return None
p = result[0].p
ret = []
for node in p.nodes:
ret.append(node["word"])
return ret
编辑 2:示例控制台:http://console.neo4j.org/r/3c1rgn
在任意两个人之间找到一条最短的“友谊路径”很容易,但是如果我们想找到一条不涉及特定友谊关系(或特定的一组关系)的最短友谊路径怎么办? friendship rels),但不先修改数据库?例如,我们想要找到从 bob 到 joe 的最短友谊路径,其中我们暂时假设 bob 和 joe 本身不是 friend ,alice 和 janet 也不是。
最佳答案
你不能使用'allShortestPaths吗? ' 密码中的选项并使用它来拒绝包含某些特定 rel 类型或使用 python 的节点类型的路径?我想这将取决于您想要限制结果的方式和参数,以及是否可以仅使用以路径形式返回给 python 的密码来检测它们。
另一种方法是指示 Cypher 将所有可能的路径从一个节点返回到另一个节点(可以在此处的查询本身中应用一些智能限制)。
然后根据 Cypher 返回的路径集合,您可以运行一些 Python 代码来拒绝包含您不感兴趣的特定 rel 类型或节点类型的路径。然后您将得到一个集合符合您的接受标准的可能路径(最短条件除外)。然后,您可以使用 python 简单地计算路径的长度,并使用最小的。
其实对于所有的路径,Cypher自己都可以返回路径的长度。这已经被问过,所以here is the question供你引用。这个问题的公认答案就是我所说的。
关于python - 找到排除特定边缘的最短路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239167/
我有一个名为“members”的数据库表。分配给成员的是一个职位。 职位 来自部门。我有 Departments,然后是那些中的 Sub-Departments 和 Sub-Departments 中
我正在尝试为 Solr 搜索应用过滤器标记 Tagging_and_excluding_Filters . 挑战在于同时应用多个标记(对于单个页面上的多个选择选项)。例如 q=mainquery&fq
我知道这个问题已经被问过很多次了,我已经尝试了所有建议,并阅读了有关不同选择器等的所有内容,但没有任何对我有用 给出以下 HTML 片段: link
是否有直接的 LINQ 语法来查找集合 B 中不存在的集合 A 的成员?在 SQL 我会写这个 SELECT A.* FROM A LEFT JOIN B ON A.ID = B.ID WHERE B
我试图排除并在现有xpath中包括以下xpath,但不太确定如何做到这一点 //exclude -> //*[@id="ires"]/ol/li[6]/div/a[1]/img //include
我有 30 个站点,我需要在其中 24 个站点上回显某些内容。我怎样才能排除其他人?该代码不起作用,因为我认为它的逻辑是假的:) $currentsite = get_bloginfo('wpurl'
我需要对目标文件夹进行检查,并检查文件是否来自今天,并且超过5kb 下面的命令根据使用今天的日期存在的文件来提供bool值,但是我还要添加-gt5kb之类的排除项 我尝试使用-Exlcude,但不确定
我编入索引的Elasticsearch文档包含许多字段。我一直在使用match_all查询来获取结果。我想从match_all中排除一些字段,这可能吗? 最佳答案 在Elasticsearch中,您可
我正在为我的 DAO 编写一些测试,因为很多测试使用保存到我的数据库中的测试对象,所以我使用注释 @Before 和 @Before 创建了 setup() 和teardown() 方法@After
我编写了一个程序来解决以下问题: Implement a diffusion limited aggregation simulation on a toroid plane where seeds
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
很多时候我必须运行这个查询: select * from users where name is not null and name != '' 有没有更好的方法来做到这一点。我需要更多的性能,任何建
如果检测到某个操作系统,是否有一种简单的方法可以排除某些代码? 我设计了一个运行良好的网站(它是一个 sidescroller),当使用滚轮(向上/向下)时,它会左右滚动。但是,如果您使用的是 Mac
我应该如何排除“IN”子句中的值? $Graduates = "45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,6
很明显,如果一个 Mysql 表的全文索引包含一个出现在 50% 的数据行中的关键字,该关键字将被匹配查询忽略 因此,如果我有一个包含 50 个条目的全文索引“content”的表其中 27 个条目在
我有下面的循环。 我需要提取所有不包含字母 p 的名称 (lskey),但我的尝试不起作用。 for(var i = 0; i "); } } 如果有人能回答,我将不胜感激。 最佳答案 如此接
我正在尝试查找 FTP 服务器上根目录的总大小。但是,我无权访问根目录中的其中一个目录。 我想用这个函数对根目录的大小求和: size = 0 for filename in ftp.nlst("."
我有以下正则表达式来匹配 html 链接: 有点效果。除了不是真的。因为它在 编辑: 这将使它只抓取引号而不是 之后的所有内容 最佳答案 我认为您的正则表达式没有按照您的意愿行事。 这会非贪婪地捕
我在提出异常方面遇到困难,例如: import csv o = open('/home/foo/dummy.csv', 'r') # Empty file! reader = csv.reader(o
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我是一名优秀的程序员,十分优秀!