当前位置: 首页 > news >正文

社交网站 设计正规电商培训班

社交网站 设计,正规电商培训班,霞山手机网站建设公司,丝绸之路网站建设neo4j图形界面上周#xff0c; 我写了关于中间性中心算法以及我尝试使用graphstream 理解它的尝试 #xff0c;在阅读源代码的同时#xff0c;我意识到我可以使用neo4j的所有最短路径算法将某些东西放在一起。 概括地说#xff0c;中间性中心度算法用于确定图中节点的负载… neo4j图形界面 上周 我写了关于中间性中心算法以及我尝试使用graphstream 理解它的尝试 在阅读源代码的同时我意识到我可以使用neo4j的所有最短路径算法将某些东西放在一起。 概括地说中间性中心度算法用于确定图中节点的负载和重要性。 在与Jen讨论这一点时她指出计算整个图中节点的中间性中心性通常是没有意义的。 但是了解在您感兴趣的较小子图中哪个节点最重要可能很有用。 在这种情况下我有兴趣在一个非常小的有向图中确定节点的中间性 让我们简要回顾一下算法 [中间性中心]等于从所有顶点到经过该节点的所有其他顶点的最短路径数。 这意味着我们排除了直接在两个节点之间而不经过任何其他节点的任何路径这是我最初没有掌握的。 如果我们手工确定适用的路径我们将得到以下结果 A - B: Direct Path Exists A - C: B A - D: E A - E: Direct Path Exists B - A: No Path Exists B - C: Direct Path Exists B - D: E or C B - E: Direct Path Exists C - A: No Path Exists C - B: No Path Exists C - D: Direct Path Exists C - E: No Path Exists D - A: No Path Exists D - B: No Path Exists D - C: No Path Exists D - E: No Path Exists E - A: No Path Exists E - B: No Path Exists E - C: No Path Exists E - D: Direct Path Exists 给出以下中间性中心值 A: 0 B: 1 C: 0.5 D: 0 E: 1.5 我们可以针对最新版本的graphstream 考虑了方向编写测试以确认我们的手动算法 Testpublic void calculateBetweennessCentralityOfMySimpleGraph() {Graph graph new SingleGraph(Tutorial 1);Node A graph.addNode(A);Node B graph.addNode(B);Node E graph.addNode(E);Node C graph.addNode(C);Node D graph.addNode(D);graph.addEdge(AB, A, B, true);graph.addEdge(BE, B, E, true);graph.addEdge(BC, B, C, true);graph.addEdge(ED, E, D, true);graph.addEdge(CD, C, D, true);graph.addEdge(AE, A, E, true);BetweennessCentrality bcb new BetweennessCentrality();bcb.computeEdgeCentrality(false);bcb.betweennessCentrality(graph);System.out.println(A A.getAttribute(Cb));System.out.println(B B.getAttribute(Cb));System.out.println(C C.getAttribute(Cb));System.out.println(D D.getAttribute(Cb));System.out.println(E E.getAttribute(Cb));} 输出是预期的 A0.0 B1.0 C0.5 D0.0 E1.5 我想看看是否可以使用neo4j做同样的事情所以我使用以下cypher语句在空白数据库中创建了图形 CREATE (A {name: A}) CREATE (B {name: B}) CREATE (C {name: C}) CREATE (D {name: D}) CREATE (E {name: E})CREATE A-[:TO]-E CREATE A-[:TO]-B CREATE B-[:TO]-C CREATE B-[:TO]-E CREATE C-[:TO]-D CREATE E-[:TO]-D 然后我编写了一个查询该查询找到了图中所有节点集之间的最短路径 MATCH p allShortestPaths(source-[r:TO*]-destination) WHERE source destination RETURN NODES(p) 如果运行它将返回以下内容 ---------------------------------------------------------| NODES(p) |---------------------------------------------------------| [Node[1]{name:A},Node[2]{name:B}] || [Node[1]{name:A},Node[2]{name:B},Node[3]{name:C}] || [Node[1]{name:A},Node[5]{name:E},Node[4]{name:D}] || [Node[1]{name:A},Node[5]{name:E}] || [Node[2]{name:B},Node[3]{name:C}] || [Node[2]{name:B},Node[3]{name:C},Node[4]{name:D}] || [Node[2]{name:B},Node[5]{name:E},Node[4]{name:D}] || [Node[2]{name:B},Node[5]{name:E}] || [Node[3]{name:C},Node[4]{name:D}] || [Node[5]{name:E},Node[4]{name:D}] |---------------------------------------------------------10 rows 我们仍在返回节点之间的直接链接但是通过基于路径中节点的数量过滤结果可以很容易地纠正这一点 MATCH p allShortestPaths(source-[r:TO*]-destination) WHERE source destination AND LENGTH(NODES(p)) 2 RETURN EXTRACT(n IN NODES(p): n.name) --------------------------------| EXTRACT(n IN NODES(p): n.name) |--------------------------------| [A,B,C] || [A,E,D] || [B,C,D] || [B,E,D] |--------------------------------4 rows 如果稍微调整密码查询我们可以获得每个源/目标的最短路径的集合 MATCH p allShortestPaths(source-[r:TO*]-destination) WHERE source destination AND LENGTH(NODES(p)) 2 WITH EXTRACT(n IN NODES(p): n.name) AS nodes RETURN HEAD(nodes) AS source, HEAD(TAIL(TAIL(nodes))) AS destination, COLLECT(nodes) AS paths ------------------------------------------------------| source | destination | paths |------------------------------------------------------| A | D | [[A,E,D]] || A | C | [[A,B,C]] || B | D | [[B,C,D],[B,E,D]] |------------------------------------------------------3 rows 当我们有一种使用cypher来对集合进行切片的方法时从这里获得节点的中间性中心评分并不难但是现在使用通用的编程语言要容易得多。 在这种情况下我使用了Ruby并提出了以下代码 require neography neo Neography::Rest.newquery MATCH p allShortestPaths(source-[r:TO*]-destination) query WHERE source destination AND LENGTH(NODES(p)) 2 query WITH EXTRACT(n IN NODES(p): n.name) AS nodes query RETURN HEAD(nodes) AS source, HEAD(TAIL(TAIL(nodes))) AS destination, COLLECT(nodes) AS pathsbetweenness_centrality { A 0, B 0, C 0, D 0, E 0 }neo.execute_query(query)[data].map { |row| row[2].map { |path| path[1..-2] } }.each do |potential_central_nodes| number_of_central_nodes potential_central_nodes.sizepotential_central_nodes.each do |nodes|nodes.each { |node| betweenness_centrality[node] (1.0 / number_of_central_nodes) }end endp betweenness_centrality 输出以下内容 $ bundle exec ruby centrality.rb {A0, B1.0, C0.5, D0, E1.5} 它似乎可以完成任务但是我敢肯定在某些情况下它无法处理成熟的库需要处理的问题。 作为一个实验看看有什么可能我认为还算不错 该图位于neo4j控制台上 以防有人感兴趣。 参考 图处理betweens中心性–来自Mark Needham博客博客上我们JCG合作伙伴 Mark Needham的neo4j密码与图流 。 翻译自: https://www.javacodegeeks.com/2013/08/graph-processing-betweeness-centrality-neo4js-cypher-vs-graphstream.htmlneo4j图形界面
http://www.zqtcl.cn/news/392955/

相关文章:

  • 境外企业网站推广大冶市建设局网站
  • 户网站建设的不全.阿里巴巴国际站
  • 定制手机壳的网站能在家做的兼职的网站
  • 温州营销型网站建设郴州网络推广公司
  • asp.net 做网站源代码网站怎么做配置文件夹
  • 网站建设云尚网络wordpress首页flash
  • 北京优化网站宁波网络营销策划公司
  • 网站建设项目前分析电商运营一般要学多久
  • 哪个网站可以做卖房网站菜单模板
  • 网站推广渠道特点郑州百度推广外包
  • 合肥高端网站建设设计公司wordpress 多语言主题
  • 北京工程工程建设交易信息网站wordpress 角色 功能
  • 做购物网站有什么要求吗wordpress查看访问量
  • 多城市网站设计阿里云网站访问不了怎么办
  • 南岗哈尔滨网站建设开发小程序多少费用
  • 百度网站入口特效词品牌企业网站建设公司
  • wordpress找回管理员密码网站关键词排名优化工具
  • 望城建设局网站网站建设与维护可行性报告
  • 免费php网站模板下载手机端网站如何优化
  • 自己做的网站 打开了没有图片注册工程公司名称大全
  • 做网站的团队业绩怎么写WordPress 去掉副标题
  • 学校网页网站模板wordpress更换域名还是之前链接
  • 市面上有什么搭建网站工作室石家庄做网站和宣传的
  • 视频图站主题 wordpress快速收录提交入口
  • 外贸视频网站投资理财网站开发
  • 专业建设网站多少钱铜川网站seo
  • 海外网站seo优化wordpress的代码逻辑
  • 怎样帮别人做网站哪有网站给光头强做面
  • 聊城营销网站建设价格网站设计论文框架
  • 成都哪家网站建设做得好介绍自己的家乡遵义网站建设