erlang 数据结构-- 有向图

今天是有向图

1. 涉及到图的有两个module, digraph.erl 和 digraph_utils.erl

digraph.erl: 对边, 节点,路径等的操作
digraph_utils: 关于 遍历, 环和树的测试, 和找邻居
具体的函数,等用到的时候慢慢更新吧。

2. 应用时踩的坑

之前在写好友系统(单向好友)的时候,决定采用一种新的想法。因为单向好友,关注等,就像是有向图, 又有向图本身的实现不能满足策划的想法, 所以就根据有向图的写法, 自己写了一份。 当然,这样做后来打脸, 主要是要把所有的好友关系都放到内存中, 内存确实消耗大呀。。。

3. 有向图的实现

用了三个ets来记录,
ets_vertices: 记录点的信息
ets_edges: 记录边的信息
ets_neighbours: 记录边和点的信息。 当加入一个边的时候, 除了向ets edges 加入边信息之外, 还向ets neighbours 插入 [{{out, V1}, E}, {{in, V2}, E}]

4. note: 在多个ets同时操作的时候需要注意顺序问题,比如 siyao Erlang 程序引发共享内存 bug 的一个例子

先这样, 以后有新想法,再更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值