我们如何在Ruby中进行图形表示

3

如何在Ruby中表示图数据结构是一个真正的问题(一些示例代码可能会帮助我理解)。

目前,我有一个表示图的想法。即每个节点都有一个邻居节点数组,这些邻居节点是节点对象的object_id。是否有更好的解决方案?我能否轻松地使用某个库来实现这一点?我已经看过GRATRRGL,但它们都已过时(至少我认为是这样)。无论如何,在tuby 2.0.0上的任何工作示例都将对我有很大帮助。

我有Busstops组成的RoutesRoutes是一系列Busstops。如何为所有Routes表示图形。我想使用Dijkstra算法在两个公交车站之间找到最短路径(这些站点可能位于同一Route上或不在同一Route上。这意味着你必须在路上换乘公交车)。


1
你可以使用图形数据库,例如专为图形工作而设计的Neo4j。 - Sam
1
这要看情况。我仍然认为Neo4j现在对你来说是更好的选择,因为它已经内置了Dijkstra算法,并且可以对节点进行索引。http://docs.neo4j.org/chunked/milestone/rest-api-graph-algos.html - Sam
而且,如果一个带有索引(内存中)的数据库都无法处理你的数据集,那么Ruby肯定也不能。 - Sam
谢谢你的帮助,我很感激。我在这个项目上已经没有时间了,而且我真的不想涉足学习Neo4j(只是因为时间不够)。虽然我很想学,但时间有限制。那么除此之外,有没有快速解决这个问题的方法? - Saad Masood
目前我所能想到的唯一方法是使用POSTGIS,如果您有公交车站的纬度和经度信息。POSTGIS相对容易上手,因为它使用SQL并且是Postgres的扩展。 - Sam
显示剩余4条评论
3个回答

5
这个问题很模糊,所以你应该预计到会得到模糊的答案。以下是我的回答:

这都是数据

当你想做一些视觉方面的东西时,所有的一切都始于数据

你的busstopsroutes-- 这对Rails或您的图形系统意义不大。重要的是数字和数据; 特别是地理位置数据(适用于公交站和其他地理位置数据)

我们从未涉及地图或路线; 因此,我不知道如何绘制路线并找到最近的公交站。但是,我知道为了使其正常工作,您肯定需要从数据库中提取正确的数据


我的处理方式

我将从在数据库中存储所有所需数据开始:

  • 每个公交车站都需要一个位置(经度和纬度值)
  • 每个公交车站的路线需要被映射出来(可能是使用位置数据的顺序航点
  • 您需要一个“参考”点(经度和纬度值进行比较)

一旦您将所有这些值放置好,就可以得到某种过程来在图表上显示数据


是的,我有公交车站的经纬度。我不需要连续的途经点。 - Saad Masood
你如何设置路由呢? - Richard Peck
1
我希望你能解释一下图的构建,或者如何在Ruby语言中表示图。 - Saad Masood
好的 - 图表将使用Javascript完成 - 您可以使用类似于gon的工具将数据传递给图表。希望这有所帮助? - Richard Peck
无论如何,这是一个“图形”数据结构,而不是具有条形和线条等可视化图形。 - Saad Masood
显示剩余4条评论

1

如评论中所述,由于您不想使用新的数据存储(如Neo4j),最好的选择是使用PostGISpgRouting。它们相对容易实现,因为它们使用SQL并且是PostgreSQL的扩展。


0

自从我在Ruby中要求一个图形表示,我想到了这个想法,即每个节点都连接到一些其他称为“边缘”的节点。 在Ruby中,我创建一个节点对象,然后将其他节点的object_id推送到此节点。

newNode.neighbours << otherNode.object_id

可能还有其他方法,但我首先想到的是这个。如果有更好的方法,请务必告诉我。
暂时我正在使用这个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接