存储有向图(游戏树)

storing a directed graph ( game tree )

我是图形数据库概念的新手,想知道这是否是我问题的正确解决方案,如果是,那么最好的技术是什么?

我正在开发一款游戏,其中玩家可以在 N 个状态之间转换,并且图形表示所有可能的状态(顶点)以及从一个状态转换到新状态(边)的概率。

每个顶点代表一个玩家的状态。该状态将包含指向玩家可以从该特定状态过渡到的所有可能状态的引用/指针,以及一个函数,该函数计算该玩家可以从该当前状态过渡到(边缘)的每个状态的概率。该函数将获取玩家的一些属性/状态,并将确定概率。

我可以很容易地用 Java 来编写这棵树的代码,但是我如何将这个结构存储在数据库中,以便每个上线的玩家都可以查询 API / 服务器,其中包含整个游戏树加载并可以确定如何将玩家从状态 A 移动到状态 B?图数据库?

谢谢!

几乎任何现有的图形数据库产品都将支持您提出的建议。您将简单地定义一组顶点,每个状态一个,并在每个状态上编码一组 "properties",然后在各种状态之间创建边。

通过使用存储在磁盘上的图形数据库(而不是内存驻留产品),您的数据将得到安全保存。

可以找到图数据库列表here

您可以使用我们的图数据库Nebula,它是一个开源项目。正如您所说,状态可以是顶点,状态转换可以是边,这些在 Nebula Graph 中都支持。欢迎使用和提问^^.

你的图形大小是多少(顶点和关系的数量)?如果数以千计,试试 jgrapht