- 博客(54)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 一文秒杀二分查找所有题目
朴素二分查找思想及实现这是学算法的入门算法,先举个最简单的例子:猜数字1:我心中默念一个数字,范围在1~100,你每次可以猜一个数,我会回答你大了,小了,直到猜中为止。答:比如假设要猜的数字是38,整个过程如下: 猜测范围(1,100),猜50,大了。所以比50大的都不用考虑了,包括50。 猜测范围(1,49),猜25,小了。所以比25小的也不用考虑了,以此推论。 猜测范围(26,49)猜37,小了。 猜测范围(38,49)猜44,大了。 猜测范围(38,43)猜40,大了。 猜测范围(
2021-01-30 13:47:38
306
原创 高级数据结构之AVL树
AVL树的简单介绍百度百科AVL树又叫做二叉平衡排序树,是平衡二叉树的一种改进版本。因为普通的平衡二叉树存在左右失衡,退化为链表的风险,因此需要某种策略来进行平衡调整。AVL树是根据左右子树的树高作为调整策略。也有一种叫做SB 树(size balance tree),是根据左右子树节点的数量作为调整策略。性质拥有二叉排序树所有性质:任意节点的值大于左孩子,小于右孩子。即:通过中序遍历二叉排序树既可以得到一个有序序列。任意节点满足左右子树高度差不大于1失衡条件AVL树的最重要性质就是左
2021-01-02 20:31:31
516
原创 和海王一起从零刷题(4):交换链表相邻元素
题目来源:leecode_24给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。难度中等,需要对链表的操作十分熟悉理解,才能完成。思路一:迭代法:一开始没加头指针结果错误一堆,加了头指针会好处理很多。每次移动1步,然后交换temp->next,temp->next->next的值。只有这2个同时不为空才进行交换。class Solution {public: ListNode* swapPair
2020-11-11 17:41:52
268
原创 和海王一起从零刷题之(3):原地移除元素
题目:来源:leecode_27简述:给定一个数组,要求不借助额外空间,移除指定元素,返回数组新的长度.如:输入:[4,5,5,4] 5输出:[4,4] 2思路最简单想到的办法就是:遍历,判断相等就删除一个元素,然后移位,但是移位操作太耗时间了,其实我们可以换种思路:把那个元素移到后面去,具体来说:用左右2个指针,分别指向数组头尾用左指针遍历:若此时数组元素=给定元素:右指针从后面找到第一个不为给定元素的为止,左右指针指向的元素交换.重复遍历代码class Soluti
2020-11-07 10:49:12
219
原创 和海王一起从零刷题之2:大数加法
这是一个面试很喜欢问的问题,也不算很复杂。问题要把A,B两个很大的数(超过了long long)的表示范围,相加并得出结果。
2020-10-28 22:03:49
211
原创 关于位运算的一些妙用
位运算回顾所谓位运算,就是对二进制0|1进行一些操作。感觉好像平时用的并不太多,但是这些运算符有时候能完成一些很特殊的任务。比如:& :与运算口诀:11得1,其余取0。作用:清零如果想将一个变量或者地址清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。取出一个数的指定位找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。 例:设X=10101110, 取X的低4位,用 X & 00
2020-10-15 22:16:10
428
2
原创 和海王一起从零刷题之1:回形数组
问题来源http://oj.haizeix.com/training-ground/4/problem/446这个OJ需要登录才能使用,不过里面的题都还挺好的,从简单到复杂,分门别类。感兴趣的可以用一用,不感兴趣可以直接看下面。难度简单,适合学完基础语法的同学,只需要了解循环,数组等知识。问题描述输入一个正整数n,输出n×n的回形方阵。例如,n=5时,输出:1 1 1 1 11 2 2 2 11 2 3 2 11 2 2 2 11 1 1 1 1输入:正整数N(2<=N&l
2020-10-14 18:47:06
478
原创 Python 安装 Geopandas (亲测有效)
尝试过的方法:pip install geopandasconda install geopandas均失败,并且错误信息一大堆,难以看懂。安装步骤:推荐版本:python:3.7 OS:win10准备工作:安装pip下载依赖库:[点我](%E9%93%BE%E6%8E%A5%EF%BC%9Ahttps://pan.baidu.com/s/1O9urrLgzTHgiJNDPOHGtdg%20%20%E6%8F%90%E5%8F%96%E7%A0%81%EF%BC%9Adyqc%20%20%
2020-10-14 14:24:52
5804
7
原创 C++笔记之踩坑记录
map的count查找自动添加问题count:返回的是被查找元素的个数。如果有,返回1;否则,返回0unordered_map <char,int> M;m['a']=1;m['b']=2;cout << m.size() << endl; //此时map 长度为2m.count['c'];cout << m.size() << endl; //此时已经变成3了,因为多了'c':0//为了防止这种操作,可以...
2020-10-12 20:03:09
200
原创 链表的基本操作(C)
#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;}Node, *LinkedList;//插入函数(目标链表,插入节点,插入位置)LinkedList insert(LinkedList head, Node *node, int index) { if(head==NULL) //如果目标链表为空 {
2020-10-06 11:42:29
229
原创 顺序表的基本操作
#include <iostream>#include <cstring>using std::cin;using std::cout;using std::endl;template <typename Type> class Vector { private: int size; //总容量 int length;//当前长度 Type *data; //指针变量,存储顺序表的首地址 public: //构造函数:输入:
2020-10-06 11:07:49
153
原创 矩阵算法:螺旋输出矩阵
题目:1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵,如下:输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 6 5输入数字4, 则程序输出:1 2 3 412 13 14 511 16 15 610 9 8 7代码:格式要求:最后一个不带空格#include <stdio.h>int main() { int matrix[100][100]; int m;
2020-09-25 18:58:32
520
原创 排序(1):冒泡排序
排序简介排序算法是经久不衰的经典入门算法,一般认为是,给定一组数,给出从小到大排序的结果。主要算法有:选择,插入,冒泡,归并,希尔,基数,快速,桶排序等等。每种排序有其自身的特性,适合不同的场景。分析排序算法主要从3个方面:时间复杂度空间复杂度是否稳定冒泡排序原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来
2020-09-23 09:59:15
181
原创 C++笔记(二):函数高级特性
默认参数声明和定义只能有一个地方有默认值。函数重载满足条件:同一个作用域下函数名称相同函数参数类型不同,或者个数不同,或者顺序不同注:返回值不能作为重载条件引用作为重载条件void func(int &a); //int &a=10 不合法void func(const &a); // const int &10=10 合法//调用int a=10;func(a); //此时调第一个func(10);//此时调第二个3.函数重载碰到默认参数
2020-09-22 09:42:09
136
原创 C++笔记:(1):C++内存模型
内存分区模型C++程序在执行时,将内存区分为四块:代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量堆区:由程序员分配和释放,若其不释放,程序结束时由操作系统回收。内存四区的意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。1.1 程序运行前在程序编译后,生成了exe可执行程序,未执行的该程序分为2个区域:代码区:存放CPU执行的机器指令代码区是共享的,共享的目的是对于频
2020-09-21 12:58:23
222
原创 CS224w-class2:
衡量一个图度分布:P(K)描述图中节点的度的概率分布P(K)=Nk/N(Nk表示度数为k的节点数量)P(K)=N_k/N (N_k表示度数为k的节点数量)P(K)=Nk/N(Nk表示度数为k的节点数量)路径长度:h路径指的是图中依次连接的节点序列。相邻2个节点构成一条边。如:ACBDE,描述了从节点A到节点E的路径,其中AC,CB,BD,DE都是存在的边。距离:表示最短的路径需要的边数目。直径(diameter):表示图中的存在的最长的最短路径。(相距最远的2个节点的路径长度)平均路
2020-09-07 19:30:18
181
原创 GNN论文和代码收藏
models深层图卷积:DeepGCNs: Can GCNs Go as Deep as CNNs?:自适应多通道图卷积:AM-GCN:Adaptive Multi-channel Graph Convolutional Networks
2020-09-05 21:00:47
1253
1
原创 交通应用GCN总结
交通应用GCN总结订单预测:流量预测停车位预测路径失效预测订单预测:论文1:2019:ST-MGCN:基于网约车需求预测的时空多图卷积网络paper思想:提出了区间多图卷积网络(ST-MGCN)。首先将非欧几里得的成对关系(节点-边)编码为多个图,然后使用多图卷积显式地对这些关系建模。为了利用全局上下文信息来建模时间相关性,我们进一步提出了上下文l门控递归神经网络,该网络通过上下文感知门控机制来增强递归神经网络,以重估不同的历史观测值模型:节点回归数据集: 北京和上海的道路数据,来源:OpenS
2020-09-05 19:21:01
1369
原创 chebnet介绍与实现
原理论文:“Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering”卷积公式:参数说明:L^\hat{L}L^ 表示缩放和标准化的拉普拉斯矩阵:2Lλmax−I\frac{2L}{\lambda_{max}} - Iλmax2L−Iλmax\lambda_{max}λmax是L分解出的最大特征值, III是单位矩阵。思想:其实仔细观察Z(k)Z^{(k)}Z(k),可以发现当K=1时,
2020-08-29 22:50:02
7848
1
原创 CS224 class1:图结构介绍
图的定义:图可以表示为顶点和边的集合。G=(V,E)V是顶点集合,设有N个节点,E是边集合,M条边。图的概念节点,边,度度矩阵:是个对角矩阵子图图的存储邻接表:邻接矩阵法:N*N,关联矩阵法:N*M,关于两者介绍:https://blog.youkuaiyun.com/Hanging_Gardens/article/details/55670356一般来说这2种矩阵都可以用稀疏矩阵的方式存储:比如coo格式(坐标法):每条边用三元组表示(起始节点,目标节点,边权值)图的分类:有向图,无向
2020-08-29 14:38:18
224
原创 简化版GCN的介绍与实现(基于pytorch)
初始GCN实现原理说明代码测试原理论文来源:“Semi-supervised Classification with Graph Convolutional Networks”卷积公式:X′=D^−1/2A^D^−1/2XWX^{\prime}=\hat{D} ^{-1/2}\hat{A}\hat{D} ^{-1/2}XWX′=D^−1/2A^D^−1/2XW参数解释:A^\hat{A}A^表示特征图的邻接矩阵A+I,D^\hat{D}D^表示A^\hat{A}A^的度矩阵(是对角阵),且有D^
2020-08-28 20:13:27
2012
5
原创 PyG文档之六:高效的内存使用
PyG的MessagePassing-消息传递接口,依靠一个收集-传播的方案来聚集来自邻近的节点的讯息。例如,考虑消息传递层:它可以实现为:from torch_geometric.nn import MessagePassingx = ... # Node features of shape [num_nodes, num_features]edge_index = ... # Edge indices of shape [2, num_nodes]class MyC
2020-08-28 19:06:31
1272
3
原创 PyG文档之五:小批量 mini-batch
创建小批处理对于让深度学习模型的训练扩展到大量数据是至关重要的。不是一个接一个地处理示例,而是将一组示例分组成一个统一的表示,这样可以有效地并行处理。在图像或语言领域,这个过程通常是通过将每个示例重新调整或填充成一组大小相等的形状来实现的,然后将示例分组到另一个维度中。这个维度的长度等于分组在一个小批处理中的样本数量,通常称为batch_size由于图是最通用的数据结构之一,可以容纳任意数量的节点或边,因此上面描述的两种方法要么不可行,要么会导致大量不必要的内存消耗。在PyTorch geometry中,
2020-08-24 19:50:05
4593
1
原创 综述:如何构建交通领域的基于图的深度学习架构
How to Build a Graph-Based Deep Learning Architecture in Traffic Domain: A Survey 论文简介摘要本文贡献相关工作问题,研究方向和挑战问题研究方向挑战空间依赖性时间依赖性外部因素问题公式化和图形构造本文符号基于时空预测论文简介发表时间:2020发表单位:深圳大学论文链接:https://arxiv.org/pdf/2005.11691摘要近年来,各种深度学习架构被提出来解决交通领域的复杂挑战(如空间依赖、时间依赖),并取
2020-08-24 15:37:55
1497
原创 交通流量预测-混合注意力时空图卷积-ASTGCN
Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting 论文简介论文背景摘要相关研究论文所做的工作符号定义和问题定义ASTGCN实现论文简介发表时间:2019 AAAI发表单位:北京交通大学论文链接:https://aaai.org/ojs/index.php/AAAI/article/download/3881/3759PPT链接:https://github.com/D
2020-08-19 14:41:12
18693
13
原创 PyG文档之四:构建自己的数据集
尽管PyTorch Geometric已包含许多有用的数据集,但我们有时候还是需要使用自记录或非公开可用数据创建自己的数据集。自己构建数据集其实是很简单的,你可以通过源码来查看如何构建数据集。也可以通过我们的简单介绍来初步学习自己构建数据集。我们为数据集提供了两个抽象类:torch_geometric.data.Dataset和torch_geometric.data.InMemoryDataset。 后者继承自前者,若整个数据集都能放进内存,则应该使用后者。按照tochvision约定,每个数据集都
2020-08-12 19:04:13
3295
5
原创 PyG文档之三:创建消息传播神经网络
创建消息传播神经网络GNN通用框架简单介绍MPNN“消息传递”的基本类实现GCN层实现图边卷积GNN通用框架简单介绍可能很多人看到标题,不知道消息传播网络是什么意思,这里简单介绍一下它的概念。如果这段看不懂也没关系,不影响我们的代码学习。消息传播网络是GNN的通用框架之一,所谓通用框架是对多种变体GNN网络结构的一般总结,也就是GNN编程的通用范式。这里简单介绍三类通用框架:(详细介绍来自于《深入浅出图神经网络》第七章)消息传播神经网络(Message Passing Neural Networ
2020-08-12 12:20:59
1774
原创 图神经网络的基准(Benchmarking Graph Neural Networks)
Benchmarking Graph Neural Networks论文简要介绍背景介绍摘要论文所做的工作基准数据集选取的模型实验部分实验1:图分类数据集论文简要介绍作者:Vijay Prakash Dwivedi ,Yoshua Bengio 等论文链接:https://arxiv.org/abs/2003.00982发表时间:2020背景介绍主要是说GNNs 这几年在各个领域取得了巨大成功,列举了很多人的工作,提出了各种各样的模型,然后提了出了本文的核心问题:如何客观准确地评价不同的GN
2020-08-10 16:35:50
1702
原创 GCN入门推荐资料(持续更新)
文章:基于深蓝学院的入门视频书籍:《深入浅出图神经网络》文献:《图神经网络》2020 白柏等《图神经网络综述》2020 徐冰冰等
2020-08-08 19:44:01
826
原创 PyG文档之一:安装
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-08-07 19:30:04
6594
1
原创 PyG文档之二:快速入门
吃几个小栗子图数据处理栗子1:实例化一个data栗子2:Data的一些内置函数常规标准数据集Mini-batches 小批量图上的学习方法图数据处理图一般被用来建模和描述目标(节点)间成对的关系(边)。在Pytorch Gemometric(以后均简称pyg)中,一个图是由torch_geometric.data.Data的一个实例来描述的,设此图有N个节点,每个节点有n个特征,M条边,每条边有m个特征,默认情况下拥有如下的属性:data.x: 节点的特征矩阵,形状:[N,n]data.edge
2020-08-07 13:19:13
6288
3
原创 python圣斗士修炼(21):使用redis
redis的概念redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同
2017-11-27 19:10:36
260
原创 python圣斗士修炼(二十):常用SQL语句
创建表设置主键创建普通表create table 表名( 列名 类型 是否可以为空, ##not null 不能空 null 可以空 列名 类型 是否可以为空)ENGINE=InnoDB DEFAULT CHARSET=utf8自增列 自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列) create table tb1( nid int n
2017-11-23 00:42:29
314
原创 python圣斗士修炼(十九):使用数据库连接池
使用连接池python编程中可以使用MySQLdb或者mysqlpy等驱动进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响。因此,实际使用中,通常会使用数据库的连接池技术,来访问数据库达到资源复用的目的。 python的数据库连接池包 DBUtils: DBUtils
2017-11-22 01:20:43
334
原创 python圣斗士修炼(十八):访问mysql数据库
安装驱动windows: 首先要确定自己已经安装pip 1、 查看是否安装: C:\Users\Administrator>pip -V pip 9.0.1 from d:\python27\lib\site-packages (python 2.7) 出现以上提示则证明已安装 2、 安装MySQLdb之前先要安装wheel,执行pip install wheel命令进行安装 3、
2017-11-21 00:27:40
431
原创 django-admin命令和其它任何操作都报错
事情是这样的:有一天突然发现,我的django环境突然出问题了。无论是创建项目还是执行命令都报错故障如下:[root@192.168.42.1 ~/python_code/Django]# django-admin -hTraceback (most recent call last): File "/usr/local/bin/django-admin", line 11, in <modu
2017-11-19 18:17:26
1925
原创 python圣斗士(十七):令人欲罢不能的正则
什么是正则字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的
2017-11-14 16:38:34
273
原创 python圣斗士修炼(十六):json序列化
JSON模块JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。python 原始类型向 json 类型的转化对照表: Python JSON dict object list tuple array str unicode string int, long float number True
2017-11-14 09:38:39
456
原创 python圣斗士修炼(十五):几个常用模块
logging模块简单的将日志打印到屏幕import logginglogging.debug('This is debug message')logging.info('This is info message')logging.warning('This is warning message') 屏幕上打印:WARNING:root:This is warning message默
2017-11-11 13:22:33
440
原创 python圣斗士修炼(十四):关于时间处理
导入模块包是一些按目录组织的文件,目录下的文件init.py 可以存放一些包的信息。 Python导入模块的方法有两种:import module 和 from module import,区别是前者所有导入的东西使用时需加上模块名的限定,而后者不要。 import Person person = Person.Person('dnawo','man') print person.Name或
2017-11-09 22:50:49
265
TA创建的收藏夹 TA关注的收藏夹
TA关注的人