我可以使用以下代码在图中找到最紧密连接的组件:
import sys
import pygame
def run_game():
#initialize game and create a screen object
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("Alien Invasion")
# Start the mai loop for the game.
while True:
# Watch for keyboard and mouse events
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# Make the most recently drawn screen visible.
pygame.display.flip()
run_game()
但是它不能帮助我可视化最密集连接的组件(子图),因为它发出的输出图是不相交的节点。是否可以可视化密集连接的组件。如果是,那么如何
答案 0 :(得分:0)
我尝试了此查询,但结果却有所不同。
我还没有使用这些算法,对此我也不了解,但是我认为您在查询中添加了一个额外的字符(冒号)。
您可以使用 pnHours 代替:pnHours 进行检查。
我从查询中删除了冒号(:),并且得到了正确的结果(我也能获得关系,因为Neo4j浏览器会获取它,尽管查询中未指定)。
如果仍然找不到,请检查以下查询:
CALL algo.unionFind.stream('', 'pnHours', {})
YIELD nodeId,setId
// groupBy setId, storing all node ids of the same set id into a list
MATCH (node) where id(node) = nodeId
WITH setId, collect(node) as nodes
// order by the size of nodes list descending
ORDER BY size(nodes) DESC
LIMIT 1 // limiting to 3
WITH nodes
UNWIND nodes AS node
MATCH (node)-[r:pnHours]-()
RETURN node,r;
答案 1 :(得分:0)
如果要可视化,请在Neo4j浏览器中使用:
CALL algo.unionFind.stream('', ':pnHours', {})
YIELD nodeId,setId
// groupBy setId, storing all node ids of the same set id into a list
MATCH p=(node)-->() where id(node) = nodeId
WITH setId, collect(p) as paths
// order by the size of nodes list descending
ORDER BY size(paths) DESC
LIMIT 1 // limiting to 3
// Maybe you need to unwind paths to be able to visualize in Neo4j browser
RETURN paths;
这不是最优化的查询,但在小型数据集上应该做得很好。
答案 2 :(得分:0)
以下查询应返回最大的pnHours
连接的组件(即节点数最多的组件)中的所有单步路径。它只获取最大组件的路径。
CALL algo.unionFind.stream(null, 'pnHours', {}) YIELD nodeId, setId
WITH setId, COLLECT(nodeId) as nodeIds
ORDER BY SIZE(nodeIds) DESC
LIMIT 1
UNWIND nodeIds AS nodeId
MATCH path = (n)-[:pnHours]->()
WHERE ID(n) = nodeId
RETURN path
neo4j浏览器的图形化结果可视化将显示组件中的所有节点及其的关系。