复习情况
与其说复习,对我而言不如说是预习。除了数学科目在本科基础还行,其他10门左右专业课对我而言几乎是从零开始。
首先非常推荐知乎上樱花学长的两篇文章(《东京大学情报理工CS专攻考试心路历程》、《东大情报理工CS专攻备考心得》),我在复习过程中可以说全程参考他的经验。但这也是我几乎打消写这么一篇“复习经验”的原因,这两篇文章写的详尽、用心,我自己几乎无法写出更有价值的东西。但一方面作为本博客的开篇不知道写什么好,另一方面也决定记录一些自己的复习过程与想法,期望能帮到他人吧。
时间分配大致如下,其中数学、专业课时间上有重叠进行的部分:
数学 三个月
一个月重新读线代、微积分、概率的参考书并记录知识点笔记。
一个月用来完成情报理工数学过去问。
一个月用来做小黄书(《演習大学院入試問題》)以及完成10~18年的工学院数学过去问。
最终数学的考试对我而言不简单,3道题都没能写完,平均完成8成左右。但我感觉难度比往年不低,所以觉得8成在此次考试不算差了,只是其中第二道PDE到最后半小时才有思路开始进行,还好一口气写到了最后小问,回想起来都觉得很悬。
专业课 六个月
由于官网列出的十几门专业课对我而言全是新知识,实在时间有限,我放弃了其中过去问出现的很少的几门,如计算机图像、类型与编程语言、计算机网络、NLP、信息数学等。复习的时间分配与顺序大致为:
计算机结构、操作系统一个月。
离散数学、自动机一个月。
算法与数据结构、数值计算一个月。
机器学习、逻辑电路以及零星的逻辑学等一个月。
过去问>一个月。
最后考试中专业I做出9成,专业II做出8成
本人复习阶段日语处于N2水平,但英语还行,我提交的托福分数为104,复习多数使用英文的教科书,考试、面试时也用英语。主要使用的书基本为官网推荐的英文教材。我自己全部在电脑上阅读pdf,习惯实体书的同学可以找淘宝打印或图书馆借或购买二手书。我主要使用的书目如下:
线性代数:
《Linear Algebra and Its Applications》、《线性代数 丘维声》
微积分:
《Thomas' Calculus》
概率论:
《Probability and Statistics by Morris H. DeGroot》
计算机结构:
《Computer.Organization.and.Design》
操作系统:
《Operating System Concepts》
离散数学:
《Invitation to Discrete Mathematics》
数值分析:
《Advanced Engineering Mathematics》
算法与数据结构:
《Algorithms.Addison.Wesley》
逻辑电路:(这个官方没有列出参考书我是以下两本一起看)
《现代逻辑设计(第二版).[美]卡茨》
《John Wakerly - Digital Design Principles And Practices》
自动机:
《Introduction To Automata Theory, Languages, And Computation 3rd》
逻辑学:
《Logic and Structure - Van Dalen》
机器学习(因为想下功夫好好学,所以看了不少书)重要程度递减:
1.先是官方推荐,也是统计学习方向绕不开的巨著之一
《The Elements of Statistical Learning》,
2.然后Sugiyama桑的《Introduction to Statistical Machine Learning》其中part 4的DISCRIMINATIVE APPROACH TO STATISTICAL MACHINE LEARNING可以参考中文书《图解机器学习》。
3.然后李航的《统计学习方法》与周志华的《机器学习》。
4.《PRML》
由于专业课对我而言都是新知识,我的学习方法是把书上的知识点摘抄到笔记本上,平均每个科目会总结出六、七十页笔记。然后把再从笔记精炼出四、五页A4纸。类似于一个多级cache的过程。最终通过过去问查漏补缺以及划重点。
细节感悟
总体对于笔试复习而言,我非常赞同知乎上樱花学长的话“CS真是非常非常看实力的,没有一道题一道题的琢磨反思,一个又一个知识点的堆积,你是没办法在8月20号的CS考试里面镇定自若的。” 下面具体说一些细节。
首先数学
工学院的数学过去问六选三中第一题基本是微分方程、第二题线性代数以及第六题的概率论,这三部分难度是小于情理数学的。理论上两个半小时的题量我一个半小时可以完成并正确率不错。(可参考知乎专栏 东京大学大学院工学系研究科修考经验分享此处有工学院数学过去问答案)
所以我还是推荐以情理自己的数学过去问为主,尤其是改版后的08年至18年,包括08至13年的冬季数学,要尽可能全做出来,并把题目、知识点领会贯通。答案可参考yivan大神的答案(yivan本人说还未完成,仅供各位参考)。
至于小黄书,难度据说高于真实考试,有余力的同学把上下两册完成好。我自己没有看过下册,主要完成了上册的微积分、微分方程部分,其中PDE果然出现在了考试中。其实日语不好的各位不用太担心,我在看的过程中也没有太大不适,毕竟还是数学符号以及公式为主。
另外,对于所谓“超纲”的知识点,无非泛函(变分)、复变、矩阵分析等。矩阵分析一般考试会引导学生进行,由简入繁。我使用的是《矩阵分析 史荣昌》这本书。对于泛函和复变,我没有太好的复习教材。有人推荐数学物理方法的书复习泛函与变分,我自己就了解一下欧拉-拉格朗日方程,感觉足以应付过去问中出现的两次(13年p2,16年p2)。而复变,我只是在百度文库中参考几个ppt,和总结的pdf,主要掌握了路径积分、柯西定理、留数等概念,应该也足够了,毕竟过去问只出现了一次(10年p2),所以难度不好估计。复变的题目尤其是傅里叶分析、拉氏变换方面可以利用工学院的数学过去问第三、四、五题进行练习。矩母函数、概率母函数不难,应该与各特殊分布的均值方差同步记住。马尔科夫过程,包括随机游走,除了《PRML》里的一节,我没有太好的参考书,就在百度文库里找了几个ppt学习一下。之前考到的无非是写出状态转移矩阵,求出稳定态概率等。
我自己觉得数学的考试范围虽然不大,但出题形式变化较大,不好推测预估。能做的就是把基础掌握牢,把过去问刷明白,最后在考场灵活地应对考题就行了。
专业课
改革后有三年的专业课考试可供参考。专业I的三道题范围目前在算法、自动机、逻辑电路、OS四个科目中。如果时间实在有限可以把重点放在这四个科目上。其中我猜会有不少同学和我一样,把很多的精力放在算法与数据结构上。我把Wesley的书刷了几遍,几乎每个算法都能默写下来了,然后今年专业I并没有出现,呵呵。但明年,或者说每年都应该有大概率出现,今年算法隐身的原因,我自己分析是前两年分别考了两个最经典的图算法Prim与Dijkstra。16年把关于字符串查找的全考了。而数组排序、查找偏简单,子字符查询、动态规划等又有点难。所以今年不好再出了(?)。
自动机去年第一次考到教材第七章内容,CFG泵引理的证明,没想到今年继续CFG,但其中考到CFG与正则语言交集的性质证明,这是我专业I唯一没把握的小问。
改革后的三年逻辑电路都不算难,今年是利用半加器全加器进行加数分解,每小问进行引导难度递增。当然这部分不好复习,因为基本的加减乘除法器设计、触发器等各位肯定都会,所以考题多是根据给出的情景进行简单的组合、变换。我的建议是认真审题、多揣测出题人意图。
专业II的六选三,我推荐至少准备四道题的知识点,这样面对每年每题的难度变化能游刃有余。当然,如果有非常明确的方向应该尽可能把该方向的题做出来。例如我计划主攻机器学习,在打开试卷二话不说就先去找ML的题做。另外计算机结构或OS的题三年都有出现,难度都不大,认真学过应该能有把握做出来。我今年选了一道算法的题,因为以前刷过LeetCode,考试时一看,这不就是two sum吗(LeetCode上题号为1的算法题)。后面几问考的three sum、坐标共线算法以及复杂度的规约。
下面我想说一下机器学习的题。我在此花了不少功夫,但是ML的题目不爱考察具体的分类器或回归算法,而是喜欢考统计学习相关的数学基础。我推荐Sugiyama桑的那本书,把part1到part3多看几遍,每个公式的推导做到能看懂。16年的线性分类、17年的高斯分布的后验概率以及今年的题几乎纯数学。18年考到凸优化中的次导数算是有一定难度,但理解题意后也能在没有凸优化基础的情况下做出来。
关于过去问,官网会给出从06年以来,包括今年夏入试,总共14套夏入试(专业I、专业II),13套东入试(06~13为六道题,之后为4道题)过去问。把这27套题目尽量做到八成以上,一天一套的压力是不小的。改革后最近三年题目难度比之前降低一些,比起零几年难度、范围都较大波动的题目也显得收敛和稳定。但日益增多的报考人数与几乎不变的录取人数肯定加剧了竞争的激烈度。所以考试的整体难度还是不变的。
最后谈一下面试,虽说cs专攻考试以笔试成绩为主,但面试也该重视。除了穿正装、英语或者日语流利以外,认真准备一下研究计划以及项目经历。我在被叫到二面后很兴奋(因为合格的几率大了很多,据说目前的规律是二面必合),又是本小组第一个进去的,面对一圈教授有点儿懵,导致Sugiyama桑问我研究经历和计划时没有说的很好,出来后也觉得很遗憾,结果确实与第一志愿失之交臂了。当然我本身没什么干货,甚至S桑实验室的paper都没看过几篇,相比yivan大神相形见绌。所以如果有时间,至少要准备到自己满意的程度,在面试时能从容应对。
总结
因为我只参加了东大情理cs一家考试,所以对其他专攻、学系、其他学校的入学考难度没法进行对比。虽然考试本身难度不小,但相信有意参加考试的各位都是硬核玩家,基础知识、自身资质不会比我差。所以努力准备,即使是转专业,合格的概率不会小的。
最后是部分专业课过去问知识点总结,只在此截取了平成21至30年部分知识点分布。可能有遗漏错误之处,仅供大家参考。
数据结构与算法 | 形式语言与自动机 | 计算机结构/操作系统 | 逻辑电路 | 数值计算 | 递归、函数、概率、数学 | |
H30夏 | 1.图算法 Dijkstra 算法适用范围 补全代码 2.平衡树 最大最小高度 |
CFG parse tree构造 CFG 泵原理 证明及应用 | cache 三种映射 地址位数 cache hit | 译码器 情景设计 | Euler method 微分方程 backward/forward 区别 复杂度 | |
H29夏 | 图算法 Prim/Kruskal 补全代码 临界矩阵、表 复杂度 正确性证明 | 根据语言、补构造nfa\dfa 证明有限语言是Regular 验证语言有限\无限的算法 | CPU调度 FCFS RR (non/preemptive)SJF TT\WT\RT\deadline miss | 冒泡排序电路 触发器 翻转电路 交换两触发器 多路选择器、比较器 | 半角公式 和差化积 精度损失 递推公式 | |
H28夏 | 字符串搜索 链表 哈希表 二叉树 trie trie改进 时空复杂度 | 状态等价关系 关系推导与证明 | 1.死锁的条件、预防 任务、资源、最大需求数 2.矩阵乘法cache hit改进 |
1.情景算法,概率验证 2.情景,状态转移图 概率矩阵、求稳态 |
||
H27夏 | 1.背包算法 构造、复杂度 2.图 prim (eager)正确性 邻接矩阵、表复杂度 |
递归语言 构造、证明 自动机 语言的递归表示 递归语言解的唯一性证明 | 多处理器向量求和 二分、分治法时间复杂度 算法复杂度比较(对数) | 三进制 半加器全加器 四位制全加器 16位超前进位全加器 | 1.情景 概率、最大后验 2.递归 调用次数计算证明 3.微分方程递归、泰勒展开 |
|
H26夏 | 动态规划 距离最短两点 排序x坐标 区域点个数 分治思想找距离最短点 | CFG 最右派生 正则语言与左线形CFG | 情景 读机器码 按照机器码求栈值 栈改变指令问题与处理 | 8位半减器 全减器 8未除法器 | 1.牛顿法求解 向量牛顿法 2.二维插值 双曲线渐近线 双曲线与区域交点 |
概率 产生、读取字符串 最大后验概率 |
H25夏 | 图的特殊表示 验证是否含Cycle的算法 | 1.虚拟内存 按需调页 WWS模型 2.流水线乱序执行 |
1.矩阵计算 2.字符串 概率 3.矩阵对角化 SVD分解 4.魔方 情况数计算 斯特林公式求阶乘 |
|||
H24夏 | 区间最值算法 直接算法 nlogn预处理 1查找 线段树 n预处理 logn查找 | 语言内等价关系 接收等价类的自动机 含有有限状态证明 | 超前进位加法器 Propagator Generator 递推构造 构造多位 | 1.酉矩阵 向量构造酉矩阵 利用正交矩阵性质证明 schur定理 酉矩阵上三角化 2.位运算 3.伦理学,递归函数 递归可枚举 |
||
H23夏 | 1.图算法 二分图可分条件 没有奇数环 验证算法 2.排序算法最低复杂度 基数排序桶排序 |
语言包含 字符变换 性质与证明 | 1.cache 向量加法与乘法 cache miss率 改善方法 2.文件系统 系统调用 利用调用编写函数 |
1.概率母函数及其性质 2.马尔科夫链生成字符串 概率转移矩阵 求平稳态 |
||
H22夏 | 1.二叉树遍历 递归 栈 修改指针 2.图 邻接矩阵表示 路径上最长边最短算法 |
两自动机间的等价关系 表示相同语言但不等价的自动机 | CPU调度 多任务 周转时间计算 | 时序电路读摩斯电码 D触发器做计数器 RS锁存器构造 | power method for eigen 有否误差对收敛影响 矩阵加λI对特征值影响 进而求第二大特征值 | 两字符串由AB组成 B的位置互不相同的情况 递归求情况数 一阶差分方程 |
H21夏 | 1.动态规划 不相交集合 向量、链表、哈希表、权重二叉树 时空复杂度 2.动态规划 平均向量距离 背包算法变型 贪心算法 |
正则语言 闭环性质 补集是rl证明 空语言、子集语言算法 | 距最高位最近的1位置 用4位电路组合16微电路 | 正定对称矩阵LL分解 正定性质 证明及应用 迭代法分解矩阵 | ||
H30冬 | 元素分配 树结构 FIND\MENGE 复杂度 改进 | 根据语言设计自动机 证明DFA\NFA所需最少状态 | critical section的互斥 互斥实现方式补全代码 | A+uI的特征向量不变 二次型最大值与max eigen 两对称矩阵和为eigen和 | ||
H29冬 | 堆排序 两个阶段作用 复杂度 k个最小值算法 与计算机结构关系(cache) | 正则语言泵引理应用 泵引理证明 | 设计异或门 D触发器的移位 | 向量范数不等式 矩阵范数 性质 收敛条件 Jacobi 迭代法收敛条件 | ||
H28冬 | 查找二叉树 最小最大树高 平衡二叉树高证明 | ε-NFA 表示语言、消除ε NFA的交、补 | 多数决定门 设计1位、4位全加器 4位乘法器 | 上三角矩阵相乘为上三角 矩阵LU分解的唯一性 | ||
H27冬 | 二叉堆 插入删除 复杂度 | 根据语言设计DFA\NFA 证明由NFA构造的DFA最少状态数 | critical section的互斥 互斥的实现方式 | 对称矩阵性质 矩阵初等变换不改变特征值 平面方程的三种表达方式 | ||
H26冬 | 多边形三角化 递归等式 动态规划 最小权重三角化 复杂度 | 根据语言设计DFA\NFA 两自动机间等价关系 证明等价则语言相等 | 磁盘传送速度 带缓冲的写、复制指令 使用多线程提高速度 | |||
H25冬 | 1.稀疏矩阵 数据结构 稀疏矩阵运算 复杂度 2.最长相邻重复字符串 3.字符串编码 霍夫曼编码 |
给定语言构造DFA\NFA 泵原理证明语言不是RL | ||||
H24冬 | 哈希表 复杂度 二叉树解决碰撞 | 去掉固定字符得到的语言 证明两定义互推关系 两自动机从属、等价 | 虚拟内存的硬件支持 系统抖动原因与防治 | 线性插值证明 最高位系数 各阶数系数 简化递推公式 | ||
H23冬 | 1.冒泡排序 正确性证明 2.情景 字符串排序 右移构造的字符串递推 |
证明语言被DFA接收 如果w=zyx,xyz∈正则语言 证明L:(w)是正则的 | 由递归公式消元 由递推公式推导误差传播 | |||
H22冬 | 1.情景图算法 找cycle 算法执行顺序证明 算法正确性证明 2.无环图最长路径算法 复杂度 贪心算法最大无交集合 |
CFG 二义性 构造无二义性语法 证明正则语言无二义性 | 拉格朗日4点插值系数求解 埃尔米特插值满足导数值 验证数值解的精确程度 | NP问题与规约 | ||
H21冬 | 1.快排 时间证明 改进 2.贪心算法 志愿分配 |
根据语言设计DFA\NFA 两DFA的交集DFA |