什么是图?
图是一种关系型的语言表达方式,它是一个抽象的概念,用它我们可以很好的表达事物之间的关系
核心概念:
节点:表示事物,比如“天气”、“状态”
边: 表示关系,比如“因果”、“联系”
而有向图无向图的核心区别,就是要看这个边有无方向
什么是有向图?
有向图就是边有方向,定义了从 A-->B 的单向关系,它依赖于 A 到 B 这个过程, 它的核心理念就是“谁影响谁”,
比如父节点影响子节点,过去影响现在,因为什么所以什么,这种有因果推断、输入到输出形式的,就是有向图。
贝叶斯网络就是一个代表案例,它的每个子节点的状态只依赖于它的父节点,整体联合概率通过条件概率链式乘积构成。
以这个例子,今天下雨需要带伞的整体概率为:“天气情况是什么” × “在这种天气下下雨的可能性” × “在是否下雨的情况下打伞的可能性
是每步依赖上步结果,一步步进行乘积计算的最终概率,天气决定是否下雨,下雨决定是否带伞,是有因果关系存在的。
什么是无向图?
无向图就是我并不依赖于前后联系,我仅关注距离我最近的事物与我是否有联系,哪些东西彼此有关系。
在无向图中,每个节点只看自己周围的世界,它不关心远处发生了什么(马尔可夫性)。只保留必要的关系,避免冗余。
还是用这个例子,无向图的边是没有方向的,下雨可能和天气有关,也能决定我要不要带伞,但是天气和带伞是什么关系它并不关注,因为(下雨-天气)与(下雨-带伞)已经很好的涵盖了(天气-带伞)了。
中间节点屏蔽了两边的影响,这就是 条件独立性!
无向图的联合概率的计算方式与有向图的不同,因为无向图没有方向的概念,只有相邻两个节点的适配程度,这就引入了新的概念,势函数,它的值决定了两个相邻节点的适配程度。这个值越高,就代表两个点越匹配。
它的计算整体联合概率的方式就是将每两个节点之间的势函数相乘,再除以总和做统一归一化。
有向图无向图的核心区别与联系
有向图与无向图的根本区别,就在于有向图是由因到果的关系,它的输出依赖于上一步的输入,子节点由父节点生成得来。而无向图不是这样,无向图讲一个平衡关系,儿子和父亲,父亲和爷爷。有向图讲“谁导致谁”;无向图讲“谁和谁有关系”。
有向图与无向图都是是结果归一化,只不过有向图是每个节点概率乘积,所以结果天然归一化,而无向图是相邻节点乘积所以需要手动整体计算归一化。
有向图的代表模型有贝叶斯网络,隐马尔可夫模型;
无向图的代表模型有条件随机场,马尔科夫随机场;
需要注意的一点是,这里的隐马尔可夫模型和马尔科夫随机场,他们虽都符合马尔可夫性,即现在的状态只和附近的状态有关,跟更远的状态无关。但是这里存在两个版本,即链式马尔科夫性(序列)与图式马尔可夫性(邻域),链式只依赖前一个(或有限几个)时刻的状态,比如隐马尔可夫模型 HMM 而图式依赖的是邻居节点,即马尔可夫随机场 MRF。
langgraph 的图思想对应当前哪一种?
LangGraph 是一种 基于“图结构”的智能体框架,本质上来说它是个有向图,毕竟是按照任务节点顺序执行,传递的,在传递过程中涉及到交互,循环,所以它是个有向的“动态有向图”(贝叶斯网络为有向无环图)。
无向图是各个节点相互影响,状态共存,而有向图是节点信息传递,状态更新,LangGraph 很明显是个有向图。
它的核心思想就是“分治”思想和“图式思维”进行拆分。
每个子任务构成一个节点(Node),每个节点只与其相邻节点通信。
任务规划描述作为边(Edge)来在相邻节点间进行传递,节点的行为与状态的更新由输入端传递信息决定。
这一整个形成一个思维导图,从而实现整体任务的执行周转结束。
它与概率图模型的联系在于:
- 都用“图”描述局部依赖关系;
- 都依赖“节点之间的局部交互”来实现“全局一致”。
区别在于:
- 概率图模型 描述的是随机变量间的依赖。
- LangGraph 描述的是任务模块间的依赖。

