在使用思维导图时,您可以根据您认为最适合的方式对其进行排序。
例如(tab表示子树)
requirements
dinner
food
forks
spoons
breakfast
food
forks这可以使用以下命令来编写
food
requirements at
dinner
breakfast
forks
requirements at
dinner
breakfast
spoons
requirements at
dinner以描述的方式找到最佳排序的算法会是什么样子的?最好的方法,最少的重复次数?
第二个示例可能不会减少重复,但它显示了排序/重新排序的含义。
进一步阐述:当在这种情况下谈论重复时,我理解不会有相同的单词/短语超过一次。在第一个示例中,食物和叉子都重复了两次。然后我们可以重新排序,如第二个示例所示。在那里,我们有三次晚餐和两次早餐的问题,但至少不是两次食物和两次叉子。目标是在给定一定的思维导图的情况下尽可能少地重复。
发布于 2014-01-16 19:16:55
当在示例中有两种对象以及它们之间的关系时,可以将其建模为weighted Vertex Cover in bipartite graphs,其中权重是度数。对于更一般的输入,我真的不确定允许使用哪些方式来编写它们,以及将最小化哪些内容。
发布于 2014-01-16 22:26:03
你有五种关系:
food, dinner
food, breakfast
forks, dinner
forks, breakfast
spoons, dinner您可以按项目列出,也可以按餐点列出。如果按项目列出,则有三个顶级节点和五个二级节点。如果按餐列出,则有两个顶级节点和五个二级节点。
您可以通过为关系的顶层选择具有最少唯一项的那一侧来减少明显的重复。在这种情况下,需要两顿饭和三样东西。所以最高层应该是餐饮。但是要明白,你并没有减少冗余。您正在减少明显的重复,但这完全是另一回事。
但整个讨论在很大程度上是学术的。真正重要的是你要如何处理这些数据。也就是说,你要问什么问题?如果问题是,“我需要什么才能提供晚餐?”然后,按照第一个选项中所示的方式排列数据会更好。你可以查一下“晚餐”,找到你需要的东西。
如果问题是“我有食物和汤匙,我能提供什么饭菜?”然后,另一种安排更容易处理:您查找“食物”和“汤匙”,然后合并结果。
事实上,这两个问题都可以用任何一种数据排列来回答,但对于特定的查询,一种排列比另一种排列更优。通常,您会对数据进行整理,以便能够快速回答最常见的查询。
所以“最好的”安排取决于几件事,其中最主要的是你将如何使用数据。
发布于 2014-01-16 19:25:41
在我看来,这是两个问题之一:
用户可视化
为用户提供排序选项!覆盖所有基地,让他们选择。
在我看来,您应该选择最符合逻辑的布局(每个域-可能类似于您的数据模型),这是第一个。信息中的冗余比通过优化进行模糊处理更可取。视觉关系比信息关系处理起来更快,因为信息关系需要你的眼睛在屏幕上跳来跳去。
关系数据库规范化
选择一种方法并对其进行分析。瓶颈将是检索数据所需的子句数量,这完全取决于使用情况。
从根本上讲:
如果你有两个以上的层,事情就会变得复杂;)
https://stackoverflow.com/questions/21128043
复制相似问题