用于组合相似树元素的算法(php)

时间:2015-08-14 20:20:26

标签: php algorithm tree

我有一个网站,我可以在其上管理食谱。

食谱是"树"但由于我将数据存储在合作社中,因此并不像DoctrineTree那样。

$recipe is an instance of Recipe
$recipe->getSubrecipes is a collection of RecipeSubrecipe
each subRecipe is an instance of RecipeSubrecipe and has some attributes
$subrecipe->getQuantity is for instance the quantity attribute
$subRecipe->getSubrecipe is an instance of Recipe

我正在尝试编写一种算法,该算法允许组合食谱数组的类似食谱(=具有相同id的食谱)并总结其数量。只有当其他子配方与树中的其他配方不相似时,才保留最高配方。

这最后一点意味着如果我在我的数组中: 食谱C的食谱B有食谱A. 和 食谱B有食谱A

并且树中没有配方B或配方A的其他实例, 结果将只给出配方B,其属性includeSubrecipes设置为true,并且配方B +配方C出现的数量总和以及属性includeSubrecipes设置为false

这可能变得非常复杂,我只能通过循环通过食谱子项来访问子食谱。它是一个关系数据库。

recipe tree example

使用上一个树(其中数字是id)我想输出一个食谱数组及其数量(比如它们的数量是1)以及是否需要包含子食谱(因为如果我合并食谱的子食谱,我需要在我的生产中包括配方成分,但不包括其子配方):

1 - no subrecipes - 1
2 - subrecipes - 1
3 - no subrecipes - 2
4 - subrecipes - 2
5 - no subrecipes - 2
6 - no subrecipes - 2
7 - subrecipes - 1
8 - no subrecipes - 1
9 - no subrecipes 1
10 - no subrecipes - 1
11 - subrecipes - 1
12 - subrecipes - 2
13 - no subrecipes - 1

我有点挣扎,对许多循环感到困惑等等......

有什么好心的帮助我吗?

0 个答案:

没有答案