摘要: 1. 总览 机器学习是一门通过数据学习潜在规律,以解决实际问题的学科。其应用范围广泛,包括数据分析、模式识别和预测建模等领域。机器学习可分为以下几类: 监督学习:从已标注的训练数据中学习函数,以预测新数据的结果。 无监督学习:从未标注的数据中发现潜在结构,如聚类分析。 半监督学习:结合少量标注数据和 阅读全文
posted @ 2025-03-12 14:42 Micoael_Primo 阅读(21) 评论(0) 推荐(0)
摘要: 本文原文见: https://jeffe.cs.illinois.edu/teaching/algorithms/#book 仅作为参考. \[\huge 第五章 ~~基本图论算法 \]历史和介绍 一个图可以看做有序对\((a,b)\)的集合. 这个有序对的元素的类型可以基本是任意的 -- 比如整数 阅读全文
posted @ 2024-01-05 15:44 Micoael_Primo 阅读(103) 评论(0) 推荐(0)
摘要: 本文原文见: https://jeffe.cs.illinois.edu/teaching/algorithms/#book 仅作为参考. 线性时间求解强联通分量 实际上, 有若干种算法可以让我们在\(O(V+E)\)的时间里面求解强连通分量. 关键就是看下面的这个观察: 引理6.2. 固定有向图\ 阅读全文
posted @ 2023-12-27 21:27 Micoael_Primo 阅读(47) 评论(0) 推荐(0)
摘要: 本文原文见: https://jeffe.cs.illinois.edu/teaching/algorithms/#book 仅作为参考. 强联通性 现在, 让我们正式地叙述在有向图中, 连通性是什么意思. 回忆: 在图\(G\)中, 如果节点\(u\)可以到达(reach)另一个节点\(v\), 阅读全文
posted @ 2023-12-26 19:13 Micoael_Primo 阅读(70) 评论(0) 推荐(0)
摘要: 本文原文见: https://jeffe.cs.illinois.edu/teaching/algorithms/#book 仅作为参考. 记忆化和动态规划 我们上节课介绍的拓扑排序算法有极其重要的地位. 它可以说是一类广泛的动态规划算法的基本模型. 回想一下递归的依赖图(dependency gr 阅读全文
posted @ 2023-12-26 18:44 Micoael_Primo 阅读(58) 评论(0) 推荐(0)
摘要: 本文原文见: https://jeffe.cs.illinois.edu/teaching/algorithms/#book 仅作为参考. 拓扑排序 一个有向图的拓扑(topological)排序是一个对于顶点的全序关系\(\prec\), 使得对于每个边\(u\to v\), 都有\(u \pre 阅读全文
posted @ 2023-12-26 16:53 Micoael_Primo 阅读(48) 评论(0) 推荐(0)
摘要: 本文原文见: https://jeffe.cs.illinois.edu/teaching/algorithms/#book 仅作为参考. 我们一般简称 有向无环图(directed acyclic graph) 为一个DAG. 一个DAG是有向图, 并且没有环. 任何一个DAG中没有入度(inde 阅读全文
posted @ 2023-12-26 16:16 Micoael_Primo 阅读(84) 评论(0) 推荐(0)
摘要: 在上一章, 我们提出了一个通用的算法 -- "XX优先遍历算法(whatever-first search)". 它既可以遍历有向图, 也可以遍历无向图. 这一章中, 我们仔细研究这一个特定的例子: 深度优先搜索(depth first search, DFS), 并且初步地看一下在有向图上面, 这 阅读全文
posted @ 2023-12-26 15:06 Micoael_Primo 阅读(69) 评论(0) 推荐(0)
摘要: 在上一节中我们看到了可合并堆的样子. 这次我们看一个均摊意义更高效的算法. Fibonacci堆. 1. 本节的操作和目标 实现的操作: Insert, Remove-Min, Union使用\(O(1)\)的时间. 方法: 实现一个"懒"的Binomial Heap. 直到最后的时候才合并. 如D 阅读全文
posted @ 2023-12-25 15:47 Micoael_Primo 阅读(31) 评论(0) 推荐(0)
摘要: 1. 回顾堆 通常的堆叫做二叉堆(binary heap). 由于只有两个孩子, 可以使用数组存储. 并且兄弟之间没有关系. 这是几乎完全的二叉树. 问题: 需要合并两个最小堆. 如何办? 想法1. 把一个往另一个里面合并. 需要\(O(m\log (m+n))\)的时间复杂度. 观察: 一个堆不一 阅读全文
posted @ 2023-12-25 11:01 Micoael_Primo 阅读(63) 评论(0) 推荐(0)