数据结构与算法:图(五)—— 欧拉路径
术语
欧拉路径(Eulerian trail):图中恰好将所有边都访问一次的路径;
欧拉回路(Eulerian cycle):开始节点和结束节点相同的欧拉路径,也称欧拉环;
欧拉图:具有欧拉回路的图;
半欧拉图:有欧拉路径但没有欧拉环的图;
存在性定理(度判定)对于无向图:奇度个数为0或2!!
...
数据结构与算法:图(四)—— 最小生成树与最短路径
理论篇本文用到的实例:
对节点进行编码,定义图的数据结构:
1234V_node = ['A','B','C','D','E','F']V = range(6)G
...
数据结构与算法:排序算法
排序就是使列表元素按照关键字递增或递减排列的过程。排序算法的时间复杂度一般是由比较和移动的次数决定的。(待补充计数排序、桶排序代码、排序基本概念、外排序等)
插入排序(Insertion Sort)基本思想:每次将一个待排元素插入到前面已排序列中,直至全部插入。
直接插入排序
思路:
...
数据结构与算法:算法分析
渐进表示法虽然有时我们能够确定一个算法的精确运行时间,但通常并不值得花力气来计算它以获得额外的精度,对于足够大的输入,精确运行时间中的倍增常量和低阶项被输入规模本身的影响所支配。
当输入规模足够大,使得只与运行时间的增长量级有关时,需要研究算法的渐进效率。通常渐进地更有效的某峰算法对除很小的输入外的
...
数据结构与算法:趣味算法 —— Nim 游戏
Nim 游戏是博弈论中最经典的模型之一,它又有着十分简单的规则和无比优美的结论 Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。
满足以下条件的游戏是ICG(可能不太严谨):1、有两
...
数据结构与算法:趣味算法 —— 小球称重
问题描述称球问题,是指若在最多$\frac{3^n-2}{2}$个球中有一个特殊球的重量与众不同(不知道偏重还是偏轻),而其他球的重量全部相同,则用无砝码的天平称n次可以找出特殊球,并确定特殊球是偏轻还是偏重;如果有$\frac{3^n-1}{2}$个球,则同样可以保证找出特殊球,但
...
数据结构与算法:趣味算法 —— 红包分配
分配的目标基于对“公平”的理解,微信红包分配算法基于以下三个目标:
先后抽到的红包金额期望尽量相等(机会相等);
所有人抽到金额的基尼系数尽量小(差距较小);
每个人至少有1分钱;
分配算法算法思路:假设要将金额为m元的红包发给n个人。当第k个人点开红包时,按照以下规则为其分配金额(假设当前红包
...
数据结构与算法:趣味算法 —— 蓄水池抽样
12# Python常用内置随机函数import random
123456789101112131415# random产生[0,1)之间的浮点数random.random()0.9866624765042807# 产生[a,b]之间的整数random.randint(1,10)4# 产生rang
...
推荐系统(一)—— 推荐系统概论
什么是推荐系统推荐系统的定义推荐系统是通过对用户的历史行为建模,自动联系用户和信息的一种工具。它能够在信息过载的环境中帮助用户发现他们感兴趣的信息,也能将信息推送给对它们感兴趣的用户。推荐系统已被广泛应用于电子商务、视频、音乐、阅读、社交网络、基于位置的服务、个性化邮件和广告等领域。
推荐系统的主要
...