Seaborn 简介 Seaborn 是一个基于 Python 的数据可视化库,它建立在 matplotlib 之上,并与 pandas 数据结构密切集成。Seaborn 的主要目的是通过使用更高级的界面来制作有吸引力的统计图形,从而使可视化变得更简单。 Seaborn 的主要特点包括: 高级界面: Seaborn 提供了更高级的界面来绘制有吸引力的统计图形,例如散点图、条形图、箱线图等。这些图形可以通过几行代码快速生成,而不需要手动调整每个细节。 内置主题: Seaborn 包括几个预定义的主题,可以用于改变图形的外观。这使得它更容易创建美观且专业的图形。 与 pandas 集成: Seaborn 与 pandas 数据结构紧密集成,这意味着你可以直接在 pandas 的 DataFrame 上调用 Seaborn 的函数,从而方便地进行数据可视化。 统计绘图: Seaborn 不仅提供了用于绘制基本图形的函数,还提供了用于绘制更复杂的统计图形的函数,例如 Pairplot(用于显示数据集中的成对关系)、Violinplot(用于显示分组的分布)等。 颜色控制: Seaborn 允 ...
堆简介 堆是一棵树,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值。 每个节点的键值都大于等于其父亲键值的堆叫做小根堆,否则叫做大根堆。STL 中的 priority_queue 其实就是一个大根堆。 (小根)堆主要支持的操作有:插入一个数、查询最小值、删除最小值、合并两个堆、减小一个元素的值。 一些功能强大的堆(可并堆)还能(高效地)支持 merge 等操作。 一些功能更强大的堆还支持可持久化,也就是对任意历史版本进行查询或者操作,产生新的版本。 堆的分类 操作 \ 数据结构 配对堆 二叉堆 左偏树 二项堆 斐波那契堆 插入(insert) O(1)O(1)O(1) O(logn)O(\log n)O(logn) O(logn)O(\log n)O(logn) O(1)O(1)O(1) O(1)O(1)O(1) 查询最小值(find-min) O(1)O(1)O(1) O(1)O(1)O(1) O(1)O(1)O(1) O(logn)O(\log n)O(logn) O(1)O(1)O(1) 删除最小值(delete-min) O ...
引入 图论中的树和现实生活中的树长得一样,只不过我们习惯于处理问题的时候把树根放到上方来考虑。 这种数据结构看起来像是一个倒挂的树,因此得名。 定义 一个没有固定根结点的树称为 无根树(unrooted tree)。无根树有几种等价的形式化定义: 有 nnn 个结点,n−1n-1n−1 条边的连通无向图 无向无环的连通图 任意两个结点之间有且仅有一条简单路径的无向图 任何边均为桥的连通图 没有圈,且在任意不同两点间添加一条边之后所得图含唯一的一个圈的图 在无根树的基础上,指定一个结点称为 根,则形成一棵 有根树(rooted tree)。有根树在很多时候仍以无向图表示,只是规定了结点之间的上下级关系,详见下文。 有关树的定义 适用于无根树和有根树 森林(forest):每个连通分量(连通块)都是树的图。按照定义,一棵树也是森林。 生成树(spanning tree):一个连通无向图的生成子图,同时要求是树。也即在图的边集中选择 n−1n - 1n−1 条,将所有顶点连通。 无根树的叶结点(leaf node):度数不超过 111 的结点。 有根树的叶结点(leaf node) ...
复杂度 时间复杂度和空间复杂度是衡量一个算法效率的重要标准。 基本操作数 同一个算法在不同的计算机上运行的速度会有一定的差别,并且实际运行速度难以在理论上进行计算,实际去测量又比较麻烦,所以我们通常考虑的不是算法运行的实际用时,而是算法运行所需要进行的基本操作的数量。 在普通的计算机上,加减乘除、访问变量(基本数据类型的变量,下同)、给变量赋值等都可以看作基本操作。 对基本操作的计数或是估测可以作为评判算法用时的指标。 时间复杂度 定义 衡量一个算法的快慢,一定要考虑数据规模的大小。所谓数据规模,一般指输入的数字个数、输入中给出的图的点数与边数等等。一般来说,数据规模越大,算法的用时就越长。而在算法竞赛中,我们衡量一个算法的效率时,最重要的不是看它在某个数据规模下的用时,而是看它的用时随数据规模而增长的趋势,即 时间复杂度。 引入 考虑用时随数据规模变化的趋势的主要原因有以下几点: 现代计算机每秒可以处理数亿乃至更多次基本运算,因此我们处理的数据规模通常很大。如果算法 A 在规模为 nnn 的数据上用时为 100n100n100n 而算法 B 在规模为 nnn 的数据上用时为 n2n ...
学习笔记
未读LaTeX 简介 LaTeX\LaTeXLATEX(LaTeX,音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX\TeXTEX 所提供的强大功能,能在几天、甚至几小时内生成很多具有书籍质量的印刷品。 它构筑在 Plain TeXPlain \space \TeXPlain TEX 的基础之上,并加进了很多的功能以使得使用者可以更为方便的利用 TeX\TeXTEX 的强大功能。使用 LaTeX\LaTeXLATEX 基本上不需要使用者自己设计命令和宏等,因为 LaTeX\LaTeXLATEX 已经替你做好了。 LaTeX\LaTeXLATEX 是 TEX 中的一种格式(format),是建立在 TeX\TeXTEX 基础上的宏语言,也就是说,每一个 TeX\TeXTEX 命令实际上最后都会被转换解释成几个甚至上百个 TeX\TeXTEX 命令。 但是,普通用户可以无需知道这中间的复杂联系。就像编程的时 ...
学习笔记
未读背包问题 背包问题(Knapsack Problem)是一类常见的组合优化问题。其问题描述为:给定一个固定大小、能够携重 WWW 的背包,以及一组有价值和重量的物品,找出一个最佳解决方案,使得装入背包的物品总重量不超过 WWW,且总价值最大。 通常情况下,背包问题可以分为以下三类: 0-1 背包问题:每种物品仅有一件,可以选择放或不放。 完全背包问题:每种物品有无限件,可以选择放多少件或不放。 多重背包问题:每种物品有 nin_ini 件,可以选择放多少件或不放。 本文将介绍如何使用 Python 解决以上三类背包问题。 0-1 背包问题 0-1 背包问题(0-1 Knapsack Problem)是最基础的背包问题。其问题描述为:给定一个固定大小、能够携重 WWW 的背包,以及 NNN 个价值、重量分别为 viv_ivi、wiw_iwi 的物品,找出一个最佳解决方案,使得装入背包的物品总重量不超过 WWW,且总价值最大。 例 有一个容量为 101010 的背包,现有 444 个物品,其价值和重量分别为: 物品 1 2 3 4 价值 1 3 5 9 重量 ...
Mermaid 简介 Mermaid 是一个基于 JavaScript 的图表绘制工具,它使用类似 Markdown 的简单语法来编写,并动态地将它们渲染成图表。 Mermaid 支持的图表类型包括: 流程图 (Flowchart) : 用关键词 graph 或 flowchart 表示 顺序图 (Sequence Diagram) : 用关键词 sequenceDiagram 表示 类图 (Class Diagram) : 用关键词 classDiagram 表示 状态图 (State Diagram) : 用关键词 stateDiagram 表示 实体关系图 (Entity Relationship Diagram) : 用关键词 erDiagram 表示 用户旅程图 (User Journey Diagram) : 用关键词 journey 表示 甘特图 (Gantt Diagram) : 用关键词 gantt 表示 饼图 (Pie Chart Diagram) : 用关键词 pie 表示 象限图 (Quadrant Chart) : 用关键词 quadrantChart 表示 ...
Mermaid 简介 Mermaid 是一个基于 JavaScript 的图表绘制工具,它使用类似 Markdown 的简单语法来编写,并动态地将它们渲染成图表。 Mermaid 支持的图表类型包括: 流程图 (Flowchart) : 用关键词 graph 或 flowchart 表示 顺序图 (Sequence Diagram) : 用关键词 sequenceDiagram 表示 类图 (Class Diagram) : 用关键词 classDiagram 表示 状态图 (State Diagram) : 用关键词 stateDiagram 表示 实体关系图 (Entity Relationship Diagram) : 用关键词 erDiagram 表示 用户旅程图 (User Journey Diagram) : 用关键词 journey 表示 甘特图 (Gantt Diagram) : 用关键词 gantt 表示 饼图 (Pie Chart Diagram) : 用关键词 pie 表示 象限图 (Quadrant Chart) : 用关键词 quadrantChart 表示 ...
学习笔记
未读层次分析法 层次分析法,简称 AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂于 20 世纪 70 年代初,在为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。 层次分析法一般包括以下几个步骤: 建立层次结构模型 构造判断矩阵 层次单排序及其一致性检验 层次总排序及其一致性检验 建立层次结构模型 将将决策的目标、考虑的因素(决策准则)和决策方案,按它们之间的相互关系分为最高层、中间层和最低层,画出层次结构图。 最高层:目标层。决策的目的、要解决的问题。 中间层:准则层。考虑的因素、决策的准则。 最低层:方案层。决策时可供选择的方案。 构造判断矩阵 在确定各层次各因素之间的权重时,如果只是定性的结果,则常常不容易被别人接受,因而 Saaty 等人提出一致矩阵法,即不把所有因素放在一起比较,而是两两相互比较,对此时采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,以提高准确度。如对 ...
学习笔记
未读投资问题 设有一笔资金 10 万,未来 5 年内可以投资 4 个项目: 项目 1:每年初投资,次年年末回收本利 115%; 项目 2:第 3 年初投资,第 5 年末回收本利 125%,投资额不能超过 3 万; 项目 3:第 2 年初投资,第 5 年末回收本利 140%,投资额不能超过 4 万; 项目 4:每年初投资,当年年末回收本利 106%。 要使 5 年后收益最大化,请问 5 年内应如何投资? 模型建立 考虑每个项目的可投资时段,可得到下表: 第 i 年初 1 2 3 4 5 项目 1 ✓\checkmark✓ ✓\checkmark✓ ✓\checkmark✓ ✓\checkmark✓ 项目 2 ✓\checkmark✓ 项目 3 ✓\checkmark✓ 项目 4 ✓\checkmark✓ ✓\checkmark✓ ✓\checkmark✓ ✓\checkmark✓ ✓\checkmark✓ 表中的对号 ✓\checkmark✓ 表示该项目在该年初可以投资,空白表示该项目在该年初不可以投资。 设 xijx_{ij}xij ...