自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (4)
  • 收藏
  • 关注

原创 DFA词法分析器

词法分析器定义关键字有if、else、while、continue、break、true、false、int、char、bool; if和while语句同c#; 四则运算、逻辑运算、关系运算同c#; 基本数据类型char、bool、int; 不支持注释。DFALexer Token、TokenType、Integer、Char、Work、Type等class参考《词法分析器》。public class DFALexer{ public int LineNumb..

2020-11-03 16:14:24 1650

原创 词法分析器

词法分析器定义 假设语言循环结构有if...else...和while...,数据类型有bool、int、char和数组,数组只支持char[]和int[],四则运算、关系运算和逻辑运算同c#,则其定义如下: program block block { decls stmts } decls decls decl |ε decl type ID; bype ...

2020-11-02 12:05:09 324

原创 测试字符串是否匹配DFA

Regex to MFAprivate (int[, ] dfa, int[] finalStates) RegexToMFA(string regex){ var regexDoted = UseDotForConcatenation(regex); var regexPostfix = InfixToPostfix(regexDoted); var enfa = new RegexToENFA(); enfa.Regex2ENFA(regexPostfix);

2020-10-28 15:00:59 2494 1

原创 DFA to MFA

DFA化简步骤 将DFA状态集分为结束状态集F和非结束状态集S。F为DFA结束状态,S为结束状态以外的所有其它DFA状态。F和S构成状态集G; 对G的每个子集T,对子集T的每个状态S执行move(S, a)得到状态,找到状态所属G的子集,根据将子集T划分为n个子集; 重复2直到不能再划分子集; 对G中状态个数大于一的子集T,只保留一个状态,去掉T多余的状态。private NFAToDFA dfa;public IEnumerable<int[]> DFA2MFA...

2020-10-26 15:59:37 535

原创 ε-NFA to DFA

辅助方法 假设一个NFA状态集T,NFA初始状态,标识a,定义 ε-closure() 从初始状态经由ε能到达的所有状态集合 ε-closure(T) 从状态集T中的每个状态经由ε能到达的所有状态集合 move(T, a) 从状态集T中的每个状态经由a能到达的所有状态集合 private Tuple<int, int>[] edges;//nfa所有ε边的出发state、到达state/// <summar...

2020-10-25 13:34:40 443

原创 Regex to ε-NFA

Regex预处理 假设只处理连接、或和*闭包这三种基本的Regex。因为Regex的连接格式为ab,为了方便计算机识别,得添加连接标识符。在计算机处理Regex时,一般都使用stack,为了方便计算机识别,通常将人类习惯的中缀表达式(1+1)转换为后缀表达式(11+)。添加连接标识符/// <summary>/// 给正则表达式加入连接标识符“.”<br/>/// e.g.<br/>/// (ab|ba)*ab ——> (a...

2020-10-24 13:08:46 222

原创 【笔记】汉字拼音互转(带音标和笔顺)共20842字

1 爬取拼音和笔顺拼音爬自https://zidian.900cha.com/。数据文件汉字拼音带音标和笔顺共20842字(“壭亪寽兯嚸”这五个字没收)笔顺爬自http://bs.kaishicha.com/。数据文件汉字笔顺共20842字(“壭亪寽兯嚸”这五个字没收)2 vs2019新建.net core console项目,NuGet导入Microsoft.EntityFrameworkCore //ef coreMicrosoft.EntityFram..

2020-09-04 19:00:52 842

原创 【笔记】EFCore & SQLite 拼音汉字互换

1 vs2019新建.net core console项目,NuGet添加包Microsoft.EntityFrameworkCore //ef coreMicrosoft.EntityFrameworkCore.Design //在nugetMicrosoft.EntityFrameworkCore.Tools //控制台中管理数据迁移Microsoft.EntityFrameworkCore.Sqlite //sqliteM.

2020-09-01 10:56:11 65383

原创 【笔记】EFCore & Mysql

1 官网下载mysql免安装版,修改my.ini为[mysql]default-character-set = UTF8MB4[mysqld]basedir ="C:\Users\huang\Downloads\mysql-8.0.20-winx64"datadir ="C:\Users\huang\Downloads\mysql-8.0.20-winx64\data"port=3306max_connections = 20character-set-server = UTF.

2020-08-28 21:16:35 560

原创 【笔记】Big Integer - Karatsuba & Toom-Cook-3 Multiplication

Karatsuba Multiplication给定大数x和y,取两者二进制长度最大值n,将大数分成二进制长度为k = ceil(n/2)的两部分,这样一直减半下去,当大数二进制长度减少到32位以下时直接返回乘积,最后再对每部分的结果进行调整即可得最终乘积。假设x1,y1表示大数前半部分,x0,y0表示大数后半部分则x = x1*2^k + x0y = y1*2^k + y0x...

2019-01-08 12:15:53 1093

原创 【笔记】Factoring - Pollard rho Algorithm

给定合数n和附加项a,令g(x) = x^2 + a (mod n)。重复计算g(x)、g(g(x))和gcd = gcd(g(x)-g(g(x)), n)直到gcd != 1且gcd != n为止,这时的gcd即为n的一个因子。参考wiki 下面是微改版本,当gcd = n时会换一个附加项(a + 1)。/// &lt;summary&gt;/// return factor o...

2018-12-12 14:11:45 253

原创 【笔记】Big Integer - FFT Multiplication

 Discrete Weighted Transform FFT MultiplicationFFT时间复杂度时O(nlgn),当输入向量长度减半时时间复杂度为O(n/2lg(n/2)) &lt; O((nlgn)/2),所需时间几乎减半。调用FFT时,对于整数型向量,可以把向量的前半部分放入实部,后半部分放入虚部,比全部放入实部更快。也就是对于长度为N的向量,0,1...N/...

2018-12-06 18:20:47 516

原创 【笔记】Cooley–Tukey FFT Algorithm - Iterative Edition

DFTIDFTFFT1 当输入向量长度为2^k时参考《Introduction to Algorithms》chapter 30.3每次迭代的元素赋值及辅助方法reorder/// &lt;summary&gt;/// Radix-2 Step Helper Method/// &lt;/summary&gt;/// &lt;param name...

2018-12-06 15:55:35 825

原创 【笔记】Cooley–Tukey FFT Algorithm - Recursive Edition

DFTIDFTFFT1 当输入向量长度为2^k时参考wiki FFT有如下代码/// &lt;summary&gt;/// Cooley–Tukey FFT algorithm,/// length of &lt;paramref name="data"/&gt; is power of 2./// &lt;paramref name="left"/&gt;...

2018-12-06 14:56:08 1556

原创 【笔记】Big Integer - Miller-Rabin Primality Test

Miller-Rabin Testbase可以查表,当n不够大时private static readonly BigInteger[][] TEST_BASE ={ new BigInteger[] { 2 }, new BigInteger[] { 2, 3 }, new BigInteger[] { 31, 73}, new BigIn...

2018-11-19 15:11:51 191

原创 【笔记】Big Integer - Modular Exponentiation

Montgomery Reduce/// &lt;summary&gt;/// &lt;paramref name="left"/&gt; * &lt;paramref name="right"/&gt; * R ^ -1 (mod &lt;paramref name="modulo"/&gt;)/// (R = 2 ^ bitLength(&lt;paramr

2018-11-19 13:38:26 197

原创 【笔记】Big Integer - Modular Inverse

Modular Inverseax + by = gcd(a, b),gcd(a, b) = 1时,ax + by = 1,ax = 1 (mod b),x = a^-1 (mod b),x即a的模逆。Shifting/// &lt;summary&gt;/// &lt;paramref name="value"/&gt; ^ -1 (mod &lt;paramref name="...

2018-11-18 15:41:38 195

原创 【笔记】Big Integer - Lehmer's Euclidean Algorithm

Lehmer's Euclidean Algorithm给定正整数a, b (a &gt;= b),重复取二进制前32位进行欧几里得算法,直到a和b的二进制长度小于等于32位,这时用uint版本的欧几里得算法求得的gcd就是原来的a和b的gcd;/// &lt;summary&gt;/// 计算&lt;paramref name="a"/&gt;和&lt;paramref name...

2018-11-16 15:49:08 229

原创 【笔记】Big Integer - Binary Euclidean Algorithm

BigInteger to/from (uint[], bool)用(uint[], bool)来表示有符号大数,其中uint[]是大数的绝对值,bool为false时是负数。/// &lt;summary&gt;/// (&lt;see cref="uint"/&gt;[], &lt;see cref="bool"/&gt;) to &lt;see cref="BigInteger&quo

2018-11-15 15:05:15 177

原创 【笔记】Java BigInteger - Division

BigInteger to/from (uint[], bool)用(uint[], bool)来表示有符号大数,其中uint[]是大数的绝对值,bool为false时是负数。/// &lt;summary&gt;/// (&lt;see cref="uint"/&gt;[], &lt;see cref="bool"/&gt;) to &lt;see cref="BigInteger&quo

2018-11-14 18:09:21 601

原创 【笔记】Java BigInteger - Square

(uint[], bool)表示大数,uint[]大数的绝对值,bool为false时是负数。Classical Square/// &lt;summary&gt;/// Classical平方,数组第一个&lt;see cref="uint"/&gt;存放最高32位,最后一个&lt;see cref="uint"/&gt;存放最低32位。/// &lt;/summary&gt;p...

2018-11-10 12:04:16 453

原创 【笔记】Java BigInteger - Multiplication

BigInteger to/from uint[]用uint[]来表示非负大数,其中数组开头是大数的最高32位,数组结尾是大数最低32位。/// &lt;summary&gt;/// &lt;see cref="uint"/&gt;数组转为非负大整数/// &lt;/summary&gt;private static BigInteger ValueOf(uint[] value)...

2018-11-09 15:47:34 392

原创 【笔记】Java BigInteger - Addition/Subtraction

BigInteger to/from uint[]用uint[]来表示非负大数,其中数组开头是大数的最高32位,数组结尾是大数最低32位。/// &lt;summary&gt;/// &lt;see cref="uint"/&gt;数组转为非负大整数/// &lt;/summary&gt;private static BigInteger ValueOf(uint[] value)...

2018-11-08 18:33:38 563

原创 【笔记】TAOCP Vol4 - Combination

组合个数/// &lt;summary&gt;/// &lt;paramref name="n"/&gt;个元素集合中所有&lt;paramref name="m"/&gt;个元素组合的个数。/// &lt;paramref name="m"/&gt; &amp;gt;= 0; &lt;paramref name="n"/&gt

2018-11-06 17:56:01 180

原创 【笔记】TAOCP Vol4 - Permutation

Lexicographic(字典顺序)给定一个[2,12]之间的整数n,升序返回int[]集合,数组里的数字代表索引。譬如n = 4时,返回0123,0132,0213,0231,0312,0321,1023,1032,1203,1230,1302,1320,2013,2031,2103,2130,2301,2310,3012,3021,3102,3120,3201,3210对于任...

2018-11-06 16:36:28 114

原创 【笔记】Hacker's Delight - Some Elementary Functions

Newton's MethodInteger Square Root难点在于计算x0,第一种方法x0 = 2^k &gt;= sqrt(n),k取最小值/// &lt;summary&gt;/// 返回&lt;paramref name="n"/&gt;平方根,向下取整/// &lt;/summary&gt;public static int IntegerSquare...

2018-11-06 15:40:28 228

原创 【笔记】Hacker's Delight - Counting Bits

Counting 1-Bits(二进制1的个数)/// &lt;summary&gt;/// &lt;paramref name="n"/&gt;二进制1的个数/// &lt;/summary&gt;public static int Population(uint n){ n -= (n &gt;&gt; 1) &amp; 0x5555_5555; n = (n...

2018-11-06 14:26:29 446

原创 【笔记】Hacker's Delight - Power-Of-2 Boundaries

 Rounding Up/Down to a Multiple of a Known Power of 2(上下取整为2的n次方)Rounding Down/// &lt;summary&gt;/// greatest power of 2 less than or equal to &lt;paramref name="n"/&gt;/// &lt;/summary&gt;...

2018-11-06 13:20:18 227

原创 【笔记】Modular Inverse

扩展欧几里得方法可以求解ax + by = gcd(a, b),当gcd(a, b) = 1时,ax + by = 1。ax = 1 (mod b),  x即a的模逆。by = 1 (mod a),y即b的模逆。最简单的模逆运算就是调用扩展欧几里得方法,扩展欧几里得方法见另一篇笔记。/// &lt;summary&gt;/// &lt;paramref name="value"...

2018-11-06 11:41:23 453 1

原创 【笔记】Binary Extended Euclidean Algorithm

扩展欧几里得算法给定非负整数a, b,求解向量(u1, u2, u3),使得au1 + bu2 = u3 = gcd(a, b)。扩展欧几里得算法的除法版本引入辅助向量(v1, v2, v3),使得av1 + bv2 = v3 代码如下:/// &lt;summary&gt;/// 返回{x, y, gcd}, 使得&lt;paramref name="a"/&gt;x + &...

2018-11-04 16:56:26 367

原创 【笔记】Binary Euclidean Algorithm

欧几里得算法u,v都是偶数时 gcd(u, v) = 2gcd(u/2, v/2)u,v只有一个偶数时,偶数u时  gcd(u, v) = gcd(u/2, v);偶数v时 gcd(u, v) = gcd(u, v/2)u,v都是奇数时,u &gt; v时 gcd(u, v) = gcd((u - v)/2, v); u &lt; v时 gcd(u, v) = gcd(u, (v ...

2018-11-02 12:10:47 276

原创 【日记】Eratosthenes Sieve

原理:偶数不可能是素数,素数的倍数也不可能是素数。参考wiki——https://en.wikipedia.org/wiki/Eratosthenes因为空间开销是Ω(n),所以当n比较大时,效率会很低。private static readonly int ERATOSTHENES_THREADHOLD = 10_000;/// &lt;summary&gt;/// 埃...

2018-11-02 08:19:35 283

原创 【日记】Miller-Rabin Primality Test

Miller-Rabin Test 参考wiki—— https://en.wikipedia.org/wiki/Miller–Rabin_primality_test其中a的选择:所以base可以查表,当n不够大时: private static readonly uint[][] TEST_BASE = { ...

2018-11-01 18:00:05 457

原创 【日记】Montgomery Modular Inverse

(r, k) = AlmMonInv(a, m) = (a^-1)(2 ^k) (mod m)/// &lt;summary&gt;/// 返回{x, k};x = &lt;paramref name="value"/&gt;−1 * 2^k (mod &lt;paramref name="modulo"/&gt;) /// if gcd(&lt;paramref name="value...

2018-11-01 16:23:38 184

原创 【日记】Montgomery Moduluar Exponentiation

对正整数x, y, m, R, m',如果存在如下约束:0 &lt;= x, y &lt; R*mR = 2 ^ n, R &gt; mgcd(m, 2) = 1R^-1*R - m'*m = 1则MonPro(x, y, m, m') = (xy)R^-1 (mod m)。function REDC(x, m, m') a &lt;- (x (mod R))m' (...

2018-11-01 12:02:03 247

原创 【日记】c# 读取网页json数据

例:读取双色球官网历史开奖号码数据准备工作web url: http://www.cwl.gov.cn/kjxx/ssq/kjgg/按F12在网络面板得到json url:http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&amp;issueCount=30json request header:...

2018-03-14 20:56:08 1417

汉字笔顺共20842字(“壭亪寽兯嚸”这五个字没收)

纯文本,网络爬来的,大部分来自bs.kaishicha.com。 有16个字来自其它网站: 﨩、嗀、蘒、﨤、礼、裏、隣、秊、兀、凉、郎、羛、羭、袬、羒、羵

2020-09-03

冈萨雷斯《数字图像处理》全家桶

包括英文文字版第3版和第4版,中文扫描版第3版,中文Matlab扫描版第2版。所有版本均带有书签。另附中文Matlab版程序及图片资源。所有文档均为pdf。

2018-11-22

离散数学及其应用第6版答案(奇数题和偶数题)

离散数学及其应用第6版所有题的答案包括奇数题及偶数题

2013-12-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除