• 传说中的成大大
    2018-11-30
    学了这么久的数据结构和算法,今天突然顿悟,基础的数据结构就是数组和链表, 而后面更加复杂的 树 队列 图 等等 都可以通过数组和链表等方式存储, 出现树 队列 图 等数据结构的原因 就是为了解决 部分问题处理过程中时间复杂度过高的问题, 所以数据结构就是为了算法而生的! 尤其是学习了时间复杂度过后 在工作和学习过程中 就应该分析自己的代码复杂度 以进行优化或者选择更好的数据结构和算法!这样才能写出更好的代码更好的解决问题
     8
     372
  • Jerry银银
    2018-11-30
    地图

    网络

    Gradle这个编译工具,内部组织task的方式用的是有向图

    Android framework层提供了一个CoordinatorLayout,其内部协调子view的联动,也是用的图
    展开

    作者回复: 👍

     11
     80
  • 黄金的太阳
    2018-12-04
    请教老师
    解决现实问题的时候当存储图有多种选择,例如:
    1.用邻接表自己存
    2.关系型库
    3.图数据库
    那么这三种方式每一种的适用场景,优缺点分别是什么呢?该如何取舍
    展开

    作者回复: 1 内存中用临界表
    2 要持久化存储就用数据库
    2 超大图 并且涉及大量图计算。用专业的图数据库

     2
     52
  • 五岳寻仙
    2018-11-30
    课后思考题:
    1. 微信好友关系存储方式。无向图,也可以使用邻接表的方式存储每个人所对应的好友列表。为了支持快速查找,好友列表可以使用红黑树存储。
    2. 生活工作中应用图的例子。很多,互联网上网页之间通过超链接连接成一张有向图;城市乃至全国交通网络是一张加权图;人与人之间的人际关系够成一张图,著名的六度分割理论据说就是基于这个得到的。

    作者回复: 👍

     1
     47
  • 花见笑
    2018-12-01
    学到现在有一种特别明显的感受就是描述一种需求模型可以有很多种组合数据结构,而这些复杂数据结构都是基础数据结构组合起来的,而这些数据结构去的选择又是基于需求模型对时间和空间这两个维度来的,所以解决问题的关键是我们都需求的理解以及我们对数据结构的熟练运用。
    
     29
  • 汝林外史
    2018-12-06
    真心感谢王老师,以前看见数据结构和算法都直接略过,感觉很难啃直接就放弃了,不求甚解,经过这段时间得学习发现自己还是可以学的会的,而且也慢慢喜欢看这些数据结构了,老师的功力真的很深厚!
    
     26
  • 微418信Im团a队teapot
    2019-02-08
    微信也是有向图吧……微信单方面删除好友之后另一方仍然会显示在好友列表中的啊(俗称僵尸)

    作者回复: 哈哈,在这个问题上,从你的昵称来看,你最有发言权了。

    
     24
  • 🐱您的好友William...
    2018-11-30
    刚刚还在写Topology Sort,就是leetcode那个给课程先后顺序排列的题。我还知道社交Graph在推荐系统中应用非常广泛(腾讯的人亲口说这是他们很多产品的最大亮点,因为可以做社交)。使用了social trust的推荐系统非常的robust且能够经受大规模水军的攻击,因为水军无法取得用户的trust(graph中无法建立联系),所以水军的行为在推荐系统中会被认为对给用户的影响会非常的小,使得系统的预测基本不变。
    
     20
  • 鹏程万里
    2018-12-03
    判断用户 A 是否关注了用户 B; 判断用户 A 是否是用户B的粉丝。这两个操作我怎么觉得是一个意思呢?

    作者回复: 好像是的 第二个应该是 判断a是否被b关注

    
     16
  • 姜戈
    2018-11-30
    有序动态数组能否讲解一下

    作者回复: 数据有序排列的动态数组

    
     13
  • Jeff.Smile
    2019-09-30
    早上没事看一篇打个卡,争哥,您早上几点起床啊,感觉您平时回复好早!

    作者回复: 我6点左右起来😂

    
     12
  • ppingfann
    2018-11-30
    微信社交关系的存储方式

    因为顶点的数量大且关系相对少,所以不适合用邻接矩阵来存储,应该用邻接表来存储。
    微信社交关系的相关操作:1. 判断A、B是否为好友关系 2. A删除B,断开与B的好友关系 3. 展示出A的所有好友,并按名称首字母进行排序

    因为是无向图,所以我们仅需要一个邻接表就行了,然后将链表改造为跳表增加查找速度且在列出好友是会比较方便。最后,若有n台机器可供使用,那么我们可以对n取余来划分这些数据到不同的机器上,毕竟微信的用户量太大,一个机器的内存应该是不够用的。
    展开
    
     12
  • 任雪龙
    2018-11-30
    终于到图了,感觉有点小激动呢
     2
     6
  • qinggeouye
    2018-12-23
    复杂网络可以说也是基于图,抽象出来的随机网络、小世界网络、无标度网络等都可以用图表示;根据图的组成基本要素:节点和边,现实世界中只要可以将具体的事物抽象出节点,并且节点之间是有联系的,那么应该都可以成为图;比如以城市机场作为节点,城市之间的航班飞行网络;...
    
     5
  • Monday
    2018-12-04
    第1题:使用邻接表存储,并且使用改进升级版(使用跳表或散列表等)
    第2题:1)我司所开发的工作流项目描述的就是有向图。2)小到公交车/地铁网络图,大到国家的铁路分布图。3)韩国偶像局,人物之间的暗恋关系。4)ETL跑批时,各JOB之间的依赖关系。。。等等等等太多了

    作者回复: 👍

    
     4
  • 小文同学
    2018-12-02
    微信的用户无向图中,首先为了节约空间,采用的要是邻接表的方式,由于数据量巨大,进一步关于存储的优化和老师文中记述的类似。
    图的数据结构相对其他数据结构而言是更加贴合生活场景的,事物和联系的信息可以映射为节点和边,例如百度在地图中的寻路功能应该是要利用到节点和边权重等方面的信息,期待老师对图的用法做更深入的讲解。
    最后我希望提一个关于邻接表的问题,文中邻接表中,‘节点’指向的是下一个‘节点’的信息,那么‘边’的信息应该如何保存?要是‘节点’指向的是‘边’的信息,‘边’自己又包含另一头‘节点’的下标,这样的存储方式虽然不是很直观,但是也是一种有效的存储方式。老师是否可以就‘邻接表’上‘边’的存储讲解一下?

    作者回复: 实际上 我们并不需要显示的存储边 具体存储方式你可以看下一节课开头的代码

    
     4
  • 不靠谱的琴谱
    2018-11-30
    有向图的矩阵下标2 0和3 2的1和0感觉画反了,还有带权图线上面表示的是5矩阵里面表示的5 3不是很理解

    作者回复: adj行列都是从1开始的。我检查了一下 好像没画错

    
     4
  • 想当上帝的司机
    2018-12-24
    感觉最后数据库中那张表用起来就能满足需求了,上面说的图的优势是什么呢
     1
     3
  • 张三丰
    2018-12-21
    稀疏图那块没看懂,为何存稀疏图浪费空间呢?

    作者回复: 因为边少 对应到矩阵里就都是0

    
     3
  • yongxiang
    2018-12-01
    问题一:
    微信好友:
    1、微信的好友关系是稀疏矩阵,为了减少空间浪费,使用邻接表;
    2、为了提高查找效率,将邻接表中的链表改为支持快速查找的动态数据结构,这里使用红黑树、跳表都可以,考虑到好友列表是按照字母排序的,可以使用跳表
    问题二:
    图的例子还有:操作系统的资源分配图是有向图,用来分析死锁问题。
    展开
    
     3
我们在线,来聊聊吧