将图数据结构应用于有关组合元素的游戏中的食谱

问题描述 投票:0回答:1

我正在设计一款游戏,玩家可以将两种成分组合起来创建一个新元素,然后可以将其用作成分来创建更多成分。看起来图形结构确实是与菜谱交互和分析菜谱的好方法,但是我想不出一种编码所有信息的结构。

关于我设计的食谱的一些注释: 他们总是涉及两种成分来创造产品。 两种基本成分可能是同一种成分两次 一个产品可以有很多配方 一些食谱有不止一种产品

一些示例食谱来说明规则:

bird + bird = egg
metal + bird = airplane
metal + air = airplane
metal + sky = airplane
bird + engine = airplane
**but** sky + bird =/= airplane

我的第一个想法是给定成分的产品将定向连接到父节点,但这忽略了其他父节点中的哪一个是组合起来创建产品的特定节点。

data-structures combinations graph-theory combinatorics
1个回答
0
投票

由于每种产品都需要两种成分,因此明显的数据结构是矩阵。

由于成分的顺序并不重要,因此您只需要上三角形,包括前导对角线。

您需要添加一个名为“nothing”的产品。

沿着列头和行头排列所有成分。

用列成分和行成分的乘积填充单元格,根据需要包括“无”。

X 金属 空气 天空 发动机
金属 N 飞机 飞机 飞机 N
鸡蛋 N N 飞机
空气 N N N
天空 N N
发动机 N

问题仍然是这是否是“最佳”数据结构。您的问题没有足够的细节来回答。这取决于您想要对数据结构提出什么查询。

矩阵可以解释为无向图的邻接矩阵。仅当您想问以下问题时,这才有用:从鸡蛋到飞机的最短路径是什么。我发现很难想象这样的问题意味着什么,所以我不认为图数据结构是正确的选择。

© www.soinside.com 2019 - 2024. All rights reserved.