Cabbage

Uva 1597 Searching the Web 题解(倒排索引,字符串操作,集合操作)


阅读全文 »

C++算法题的一些输出技巧


输出时左对齐与右对齐,补全

C语言

在C语言中我们可以这样来实现左右对齐

printf("%-3d\n",3);
printf("%3d\n",3);

这样得到的结果就是

3
  3

如果像补零的话,就这样写

printf("%-03d
        
阅读全文 »

C++算法题的一些输入技巧


运行C++的终端中如何结束输入

有时候我们运行程序的时候,是以EOF结束程序,可是在终端中,输入空格,TAB和回车符都是无法结束输入的,所以这时我们使用其他方式。

  1. 在Windows中,输入完成后先按Enter键,再按Ctrl+Z键,最后再按Enter键即可结束输入。
  2. 在Linux中,输入完毕后按Ctrl+D键即可结束输入。

输入保留空格和回车

无法使用scanf("%s")输入字符串,因为它遇到空格或TAB就会停下来,所以我们可以使用下面两种方法:

1.getchar(),如果题目是可以边读边处理的,这种是最好的方法。

int c;
while((c = getchar()) != EOF){
    ...
}

2.gets(),如 ...

阅读全文 »

位运算训练 (Uva1590 Uva509题解)


位运算基础

逻辑运算 规则 符号
只有1 and 1 = 1,其他均为0 &
只有0 or 0 = 0,其他均为1 |
也就是取反 ~
异或 相异为1相同为0 ^
同或 相同为1相异为0,c中没有,但可以异或后取反
左移 各二进位全部左移若干位,高位丢弃,低位补0 <<
右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,有的补符号位(算术右移),有的补0(逻辑右移) >>
...

阅读全文 »

编写高质量代码-改善Python程序的91个建议笔记<编程惯用法>


编写高质量代码-改善Python程序的91个建议笔记<引论>


Python神经网络编程笔记


神经元

想一想便知道,当一个人捏你一下以至于你会痛得叫起来的力度便是神经元的阈值,而我们构建的时候也是把这种现象抽象成一个函数,叫作激活函数

而这里便是我们使用sigmoid函数的原因,它是一个很简单的函数,平滑更接近显示。

​ $$y=\frac{1}{1+e^{-x}}$$

Snipaste_2018-12-03_15-29-41.png

神经网络传递信号

神经网络便是通过一个一个神经元连接,使用权值x输入的和在通过sigmoid函数得到最终的输出值,然后一层一层的传递下去。

$$O = sigmoid(W\cdot I)$$

其中,$O$为输出矩 ...

阅读全文 »

Python进行高效的行计算


太长懒得看版

使用map函数进行行计算,加上np.column_stack 进行合并最快

假如有这么一组数据

df = pd.DataFrame({"one":list("AABBCCDD"),
                   "two":[1,1,2,2,3,3,4,4],
                   "three":[9,9,8,8,7,7,6,6]})
...

阅读全文 »

利用matplotlib进行数据可视化


matplotlib是python中的一个画图库,继承了matlib(从名字上也看得出来)的优点和语法,所以对于熟悉matlib的用户来说是十分友好的。

pylab和pyplot

关于pylab和pyplot,人们做过不少的讨论。这两个模块有哪些不同呢?pylab模块跟matplotlib一起安装,而pyplot则是matplotlib的内部模块。两者的导入方法有所不同,可选择其中一种进行导入。

from pylab import *
#或
import matplotlib.pyplot as plt
import numpy as np
...

阅读全文 »

启发式算法之遗传算法


刚开学便被拉去参加了研究生数模比赛,赛题是一个航班排班的优化问题,所以第一反映便是遗传算法,比赛期间三个问题都使用单目标遗传算法,趁着还比较熟悉,特此记录,以便后续复习。本篇文章使用Python进行实现。

启发式算法

启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。

就是说这种算法的全局最优解只是理论上可行,大多数情况下都是一个局部最优解。启发式算法用的比较多的有模拟退火算法(SA)、遗传算法(GA)、列表搜索算法(ST)、进化规划(EP)、进化策略(ES)、蚁群算法(ACA)、人工神经网络(ANN)。这里重点介绍一下遗传算法(GA)。

遗传算法准备

遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。

具体来说,在写算法之前,有四个很重要的步骤:

  1. 确定编码方式
  2. 如何设计编码
  3. 确定约束条件
  4. 如何实现约束

确定编码方式

对于编码方式来说,影响到交叉算子、变异算子等遗传算子的运算方法,大很大程度上决定了遗传进化的效率。 总的来说,编码方 ...

阅读全文 »