当前位置: 首页 > 知识库问答 >
问题:

具有边缘信息的Haskell树

李成礼
2023-03-14

Haskell库中是否存在这种数据结构?我做了一些搜索,但找不到任何有用的东西。我想使用现有的类型,而不是定义我自己的类型——它似乎应该存在。

data MyTree e n = Node { rootLabel :: n
                       , subForest :: Map e (MyTree e n)
                       }

这个想法是它与Data. Tree非常相似,但是边可以保存信息和节点。

如果你有一个通过树的路径(类型为[e]),你可以在O(log(n))中找到rootLabel(类型为n)。据我所知,你不能用Data做这件事。树,因为您必须扫描每个节点的子节点,以查找路径前进到的节点。这是因为数据的类型。树的子森林是[树a]。

特别是,我对公开具有类似于以下类型的函数的实现感兴趣:

getNextLevel :: e -> MyTree e n -> MyTree e n

这将在树中更深地潜入一层,给定一个可以遍历的边缘。

共有2个答案

钱凌
2023-03-14

您可以始终使用图形库,并确保将其保存为一棵树。

袁英豪
2023-03-14

这种数据类型看起来很像trie树,Hackage上有很多包可以使用。

 类似资料:
  • 这是我的测试照片 我正在努力寻找卡片的边缘。但是,正如您所看到的,边缘有些模糊。 在这里找到一些建议:模糊边缘检测如何从python中的模糊图像中找到扭曲矩形的精确角点位置?,但没有一个能产生令人满意的边缘。 完整代码:

  • 问题内容: epoll的手册页上有一个触发边的示例代码,如下所示: 在do_use_fd函数中,我在while循环中调用非阻塞recv直到EAGAIN为止,示例代码运行良好。 我对此示例代码有一个疑问,假设现在我有50个套接字客户端连接,突然有10个客户端同时写入数据,因此epoll_wait()将返回10,然后转到for循环: 它将调用 这10个客户端,假设n = 5完成,并且n = 6尚未完成

  • 我想使用python最小成本流解算器来构建新的网络。这意味着我有一个初始的完整图,顶点要么是供应商,要么是有需求的。使用该算法应该告诉我,根据它们的成本,将使用哪些边来解决所有需求。与现有问题不同的是,一条边在使用时的成本不仅用单位成本来描述,而且还有一条边的投资,该投资与流量无关。我一直在研究networkx和/或工具的源代码,但不知道如何调整这些代码以实现Edge的投资成本。是否有人有更好的想

  • 我有一个“用户”顶点,其中有几个用户。我有一个“邀请”顶点,它基本上讲述了一个用户发送给另一个用户的邀请。我有一个“sentTo”边,将邀请顶点与用户顶点(邀请的接收者)连接起来。我有一个“sentBy”边,将邀请顶点连接到用户顶点(发送邀请的用户)。sentBy edge有一个“on”属性,它是一个日期对象。sentBy edge还具有“inviterCount”属性,基本上是收件人用户(接收邀

  • TBD 参考 The Birth of an Edge Orchestrator – Cloudify Meets Edge Computing K8s(Kubernetes) and SDN for Multi-access Edge Computing deployment

  • 问题内容: 我通过触摸拖动和多点触摸缩放实现了自定义视图的基本滚动。效果很好,但是现在我想添加一些高级功能。 例如,在Google Maps应用程序中,当您在屏幕上拖动时,停止拖动后,它仍会继续移动一点(惯性)。并且某些浏览器(例如IPad Safari)允许您将屏幕拖动到网站可见区域以外的地方,但随后屏幕将迅速回到网站边缘。 我现在想实现类似的功能,但是要做到这一点,我需要在定期发生触摸事件 后