我有一个大的、非循环的有向图。
每个节点都有一些键/值对。其中一些键可以按范围搜索。
假设所有节点都具有这些键:
- 颜色 - 红色、蓝色、绿色等
- 价格 - 一个整数
- 大小 - 一个整数
我想从我的图中选择一个节点列表,使得:
- 所有节点的颜色都是红色
- 所有节点的价格都在10到20之间
- 列表按大小递增排序
- 符合颜色和价格条件并且没有出链(没有边从该节点开始)的任何节点都在列表中
- 列表中没有两个节点共享一条边
理想情况下,列表将具有最多的节点来满足所有这些约束条件。
我需要能够非常快速地搜索这个图。
什么样的数据存储(图形或其他)最适合解决这个问题?有关如何实现模式和查询以获得最佳性能的任何提示吗?