达美航空

Boyer-Moore (C#)

99封情书 提交于 2020-04-08 12:28:50
调用ShowExample方法即可查看结果 使用Debug配置编译可以查看详细匹配过程 using System; using System.Collections.Generic; namespace Algorithms { /// <summary> /// An implemention of Boyer-Moore algorithm. /// <para/>author : Ornithopter /// </summary> class BoyerMooreSearch { /// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="pattern"></param> /// <returns>An array of matched index</returns> public int[] Search(string source, string pattern) { var matchIndexes = new List<int>(); // step increasment. var delta = 0; // prepare a map providing delta for each char in pattern string. var

Huber Loss

我怕爱的太早我们不能终老 提交于 2020-04-05 15:55:42
Huber Loss 是一个用于回归问题的带参损失函数, 优点是能增强平方误差损失函数(MSE, mean square error)对离群点的鲁棒性。 当预测偏差小于 δ 时,它采用平方误差, 当预测偏差大于 δ 时,采用的线性误差。 相比于最小二乘的线性回归,HuberLoss降低了对离群点的惩罚程度,所以 HuberLoss 是一种常用的鲁棒的回归损失函数。 Huber Loss 定义如下 L δ ( a ) = { 1 2 a 2 , δ ⋅ ( | a | − 1 2 δ ) , for | a | ≤ δ , otherwise. Lδ(a)={12a2,for |a|≤δ,δ⋅(|a|−12δ),otherwise.  参数 a 通常表示 residuals,写作 y−f(x),当 a = y−f(x) 时,Huber loss 定义为: L δ ( y , f ( x ) ) = { 1 2 ( y − f ( x ) ) 2 , δ ⋅ ( | y − f ( x ) | − 1 2 δ ) , for | y − f ( x ) | ≤ δ otherwise. Lδ(y,f(x))={12(y−f(x))2,for |y−f(x)|≤δδ⋅(|y−f(x)|−12δ),otherwise. δ 是 HuberLoss 的参数,y是真实值,f(x

POJ - 3468 A Simple Problem with Integers(线段树区间更新,区间查询)

你说的曾经没有我的故事 提交于 2020-03-30 10:35:22
1、给出了一个序列,你需要处理如下两种询问。 "C a b c"表示给[a, b]区间中的值全部增加c (-10000 ≤ c ≤ 10000)。 "Q a b" 询问[a, b]区间中所有值的和。 2、线段树单点更新太费时,所以使用区间更新 3、 #include <cstdio> #define L(root) ((root) << 1) #define R(root) (((root) << 1) + 1) const int MAXN = 100001; int numbers[MAXN]; struct st { // 区间范围 int left, right; // 更新值、区间总和 long long delta, sum; } st[MAXN * 4]; // 建树代码基本不变 void build(int root, int l, int r) { st[root].left = l, st[root].right = r, st[root].delta = 0; if (l == r) { st[root].sum = numbers[l]; return; } int m = l + ((r - l) >> 1); build(L(root), l, m); build(R(root), m + 1, r); st[root].sum = st[L(root)

监控报I/O问题,怎么办?

社会主义新天地 提交于 2020-03-30 06:44:22
  Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 一、查询命令基本使用 1、命令介绍 $iostat -d -k 1 10   -d 表示,显示设备(磁盘)使用状态;   -k某些使用block为单位的列强制使用Kilobytes为单位;   1 10表示,数据显示每隔1秒刷新一次,共显示10次。 2、用法展示 # iostat -x 1 10 Linux 2.6.18-92.el5xen 02/03/2009 avg-cpu: %user %nice %system %iowait %steal %idle 1.10 0.00 4.82 39.54 0.07 54.46 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 3.50 0.40 2.50 5.60 48.00 18.48 0.00 0.97 0.97 0.28 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

12月TIOBE编程语言排行榜

孤人 提交于 2020-03-23 13:11:52
ActionScript 排名21 Position Dec 2008 Position Dec 2007 Delta in Position Programming Language Ratings Dec 2008 Delta Dec 2007 Status 1 1 Java 19.367% -0.68% A 2 2 C 16.163% +2.99% A 3 5 C++ 10.893% +3.02% A 4 4 PHP 9.479% +1.09% A 5 3 (Visual) Basic 9.478% -0.74% A 6 8 C# 4.643% +0.65% A 7 6 Python 4.567% -0.13% A 8 7 Perl 3.603% -0.78% A 9 10 JavaScript 3.062% +0.33% A 10 11 Delphi 3.055% +0.38% A 11 9 Ruby 2.308% -0.78% A 12 12 D 1.185% -0.45% A 13 13 PL/SQL 1.140% -0.25% A 14 14 SAS 0.843% -0.55% A 15 19 Pascal 0.689% -0.10% B 16 15 COBOL 0.631% -0.26% B 17 16 ABAP 0.603% -0.27% B 18 21 Logo

Linux命令:iostat命令

[亡魂溺海] 提交于 2020-03-22 17:55:25
  Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 1.命令格式:   iostat[参数][时间][次数] 2.命令功能: 通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。 3.命令参数:   -C 显示CPU使用情况   -d 显示磁盘使用情况   -k 以 KB 为单位显示   -m 以 M 为单位显示   -N 显示磁盘阵列(LVM) 信息   -n 显示NFS 使用情况   -p[磁盘] 显示磁盘和分区的情况   -t 显示终端和CPU的信息   -x 显示详细信息   -V 显示版本信息 4.使用实例: 实例1:显示所有设备负载情况 命令:   iostat 输出: [root@CT1186 ~]# iostat Linux 2.6.18-128.el5 (CT1186) 2012年12月28日 avg-cpu: %user %nice %system %iowait

wpf下实现图片的放大缩小和平移

╄→гoц情女王★ 提交于 2020-03-22 05:26:23
WPF下实现图片的放大缩小移动 在windows 7里面有自带的图片查看器,这个软件可以打开一张图片然后以鼠标在图片中的焦点为原点来进行缩放,并且放大后可以随意拖动。下面我们在WPF中实现这个功能。 在实现这个功能之前先说下使用的主要函数和步骤: ScaleTransform:进行缩放的函数。 TranslateTransform:进行平移的函数。 TransformGroup.Inverse:缩放图片后,把缩放后图片上的坐标转换为在原始图片的坐标,从而使图片正常缩放。 步骤如下: 定义一个TranslateTransform实例来修改图片显示的起始位置。 定义一个ScaleTransform实例来缩放图片的大小,你可以通过设置CenterX和CenterY的值来指定图片缩放的原点。 这里使用TransformGroup.Inverse来转换放缩原点 将两个Transform放到一个TransformGroup里面,这样Image控件就可以在显示的时候综合使用两个Transform的效果了。 将TransformGroup放到当前窗体的Resource里面,这样窗体里面所有的Image控件都可以引用到这个实例。 在鼠标移动事件里面修改TranslateTransform对应的值。 在鼠标滚轮事件里面修改ScaleTransform的ScaleX和ScaleY的值来缩放图片

Git 工作流的正确打开方式

拜拜、爱过 提交于 2020-03-21 22:35:04
转载: http://www.cnblogs.com/woshimrf/p/git-workflow.html 目录 1.1.创建仓库 1.2. 模拟用户A 1.3. 模拟用户B 1.4. 模拟用户A 1.5. 模拟用户C 1.6. 模拟用户B 1.7. 模拟用户C 2.1 模拟用户C 2.2 模拟用户D 2.3 C继续开发 2.4 D继续开发 2.5 C 提交 2.6 C 提PR 2.7 C修改再push 2.8 C发现提交次数过多,历史太乱,合并部分历史 2.9 C再次push 2.10 新的merge方式: rebase 2.11 这时候D也完成了 2.12 提交前rebase 最终结果 前言 一直在使用git做版本控制,也一直工作很顺利,直到和别人发生冲突的时候。这才注意到git 工作流并不是那么简单。比如,之前遇到的 清理历史 。百度到的资料很多,重复性也很多,但实践性操作很少,我很难直接理解其所表达的含义。直接望文生义经常得到错误的结论,只能用时间去检验真理了,不然看到的结果都是似懂非懂,最后还是一团糟。 学习git工作流 1. 最简单的使用,不推荐 1.1.创建仓库 $ pwd /home/ryan/workspace/l4git-workflow $ touch readme.md $ ls readme.md $ touch .gitignore $ git

浅谈模拟退火

瘦欲@ 提交于 2020-03-21 15:52:43
原谅我将模拟退火放到骚操作的范畴,比较玄学调参,玄学AC。。。。。。(我要当欧皇TAT) 模拟退火算法 模拟退火是一种随机化算法, 用于求函数的极值qwq 比如给出一个问题, 我们要求最优解的值, 但是可能的方案数量极大, 直接搜索会T飞(或者方案是连续的总数无穷根本没法搜), 这种时候我们一般会有两种选择: 爬山算法 爬山算法每次在当前找到的方案附近寻找一个新的方案(常见方式是随机一个差值), 然后如果这个解更优那么直接转移. 对于单峰函数来说这显然可以直接找到最优解(不过你都知道它是单峰函数了为啥不三分呢?) 但是对于多数我们求解的函数来说, 它并不一定会长成这个样子...于是就极其有可能钻进一个局部的最优解出不来了 算法得出的最优解与初始解的位置以及搜寻的附近解的区域大小有关. 当然如果你寻找新方案的区间很大的话有概率跳出去, 但是太大的话又可能跳来跳去跳乱了从而找不到最优解... 欧皇专用最优化求解方式 然而并不是所有人都是欧皇, 像博主这样的非酋要怎么办捏? 当然是求助于自然规律(大雾) 退火的理论部分 退火其实本来是冶金工业里的术语...大概过程是先把晶体加热到极高的温度再缓慢降温, 在这个过程中减少晶体中的缺陷(达到能量最低的最稳定状态) 然后机智的我们发现这个过程最终和我们的最优化过程类似! 于是我们去模拟这个过程, 按照退火的规律引入更多随机因素,

Javascript实现BP神经网络

北慕城南 提交于 2020-03-20 11:53:23
BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。 BP神经网络误差反向传播神经网络: 置各权和阈值的初始化 给定P个训练样本Xp(p=1,2,...,p) 和对应的理想输出Dp(p=1,2,...p) 信息前向传递: 计算网络各层的输出 4.误差反向传播 5.修改权和阈值 6.重复2~5步,直至P个样本都训练一边 7.判断是否满足精度要求。若满足,则停止训练,否则重复第2步。 根据上述流程,编写代码: class BPNet{ constructor(layernum, n, fn, fd, miu, iter ,eps){ if(!(n instanceof Array)) { throw '参数错误' } if(!n.length == layernum) { throw '参数错误' } this.layernum = layernum this.n = n //输出函数 if(!fn) { this.fn = function (x) { return 1.0/(1.0 + Math.exp(-x)) } }else { this.fn = fn } //误差函数 if(!fd) { this.fd = function(x) { return x * (1 - x) } }else { this.fd = fd } this.w