Commit 049735d4 by 20200519065

first submission

parents
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 1. Fibonacci Sequence\n",
"在课程里,讨论过如果去找到第N个Fibonacci number。在这里,我们来试着求一下它的Closed-form解。 \n",
"\n",
"Fibonacci数列为 1,1,2,3,5,8,13,21,.... 也就第一个数为1,第二个数为1,以此类推...\n",
"我们用f(n)来数列里的第n个数,比如n=3时 f(3)=2。\n",
"\n",
"下面,来证明一下fibonacci数列的closed-form, 如下:\n",
"\n",
"$f(n)=\\frac{1}{\\sqrt{5}}(\\frac{1+\\sqrt{5}}{2})^n-\\frac{1}{\\sqrt{5}}(\\frac{1-\\sqrt{5}}{2})^n$\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"// your proof is here .... \n",
"\n",
"\n",
"Let s,r be two constants, we have: \n",
"\\begin{align*}\n",
"f(n) - r\\cdot f(n-1) &= s\\cdot [f(n-1) - r\\cdot f(n-2)]\\\\ \n",
"f(n) &= (r+s) \\cdot f(n-1) - s\\cdot r\\cdot f(n-2)\\\\\n",
"\\end{align*}\n",
"\n",
"Hence, we get:\n",
"\\begin{align*}\n",
"r+s&=1 \\\\\n",
"r\\cdot s&= -1\\\\\n",
"\\end{align*} \n",
"which implies that $s=\\frac{1+\\sqrt{5}}{2} ,r=\\frac{1-\\sqrt{5}}{2}$ or $s=\\frac{1-\\sqrt{5}}{2} ,r=\\frac{1+\\sqrt{5}}{2}$\n",
"\n",
"\n",
"If n >= 3:\n",
"\\begin{align*}\n",
"f(n) - r\\cdot f(n-1)&= s\\cdot (f(n-1) - r\\cdot f(n-2)) \\\\\n",
"f(n-1) - r\\cdot f(n-2)&= s\\cdot (f(n-2) - r\\cdot f(n-3))\\\\\n",
"&...\\\\\n",
"f(3) - r\\cdot f(2) &= s\\cdot (f(2) - r\\cdot f(1))\n",
"\\end{align*}\n",
"\n",
"Combining those equations, we get\n",
"\\begin{align*}\n",
"f(n)&=r\\cdot f(n-1)+s^{n-1} \\\\\n",
"&=\\frac{s^n-r^n}{s-r}\\\\\n",
"&=\\frac{1}{\\sqrt{5}}[(\\frac{1+\\sqrt{5}}{2})^n - (\\frac{1-\\sqrt{5}}{2})^n]\n",
"\\end{align*} \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem2. Algorithmic Complexity\n",
"对于下面的复杂度,从小大排一下顺序:\n",
"\n",
"$O(N), O(N^2), O(2^N), O(N\\log N), O(N!), O(1), O(\\log N), O(3^N), O(N^2\\log N), O(N^{2.1})$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"// your answer....\n",
"\n",
"$O(1) < O(\\log N) < O(N) < O(N\\log N) < O(N^{2.1}) < O(N^2) < O(N^2\\log N) < O(2^N) < O(3^N) < O(N!)$\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 3 Dynamic Programming Problem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Edit Distance (编辑距离)\n",
"编辑距离用来计算两个字符串之间的最短距离,这里涉及到三个不通过的操作,add, delete和replace. 每一个操作我们假定需要1各单位的cost. \n",
"\n",
"例子: \"apple\", \"appl\" 之间的编辑距离为1 (需要1个删除的操作)\n",
"\"machine\", \"macaide\" dist = 2\n",
"\"mach\", \"aaach\" dist=2"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.0"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"# 基于动态规划的解法\n",
"def edit_dist(str1, str2):\n",
" # 两个string 输入\n",
" # your code here\n",
" m = len(str1)\n",
" n = len(str2)\n",
" table = np.zeros((m+1,n+1))\n",
" for i in range(1,m+1):\n",
" table[i,0] = i\n",
" for j in range(1,n+1):\n",
" table[0,j] = j\n",
" for i in range(1,m+1):\n",
" for j in range(1,n+1):\n",
" if str1[i-1] == str2[j-1]:\n",
" table[i,j] = table[i-1,j-1]\n",
" else:\n",
" table[i,j] = min(table[i-1,j]+1, table[i,j-1]+1, table[i-1,j-1]+1)\n",
" return table[m,n]\n",
"\n",
"\n",
"edit_dist(\"machine\",\"macaide\") "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 4 非技术问题\n",
"本题目的目的是想再深入了解背景,之后课程的内容也会根据感兴趣的点来做适当会调整。 \n",
"\n",
"\n",
"Q1: 之前或者现在,做过哪些AI项目/NLP项目?可以适当说一下采用的解决方案,如果目前还没有想出合适的解决方案,也可以说明一下大致的想法。 请列举几个点。\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"Q2: 未来想往哪个行业发展? 或者想做哪方面的项目? 请列举几个点。\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"Q3: 参加训练营,最想获得的是什么?可以列举几个点。\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Q1: 无 \n",
" 之前一直是对数据挖掘行业感兴趣,参加过一个百威的商业数据分析项目,主要是分析,没有涉及较多数据处理、建模等技术。 \n",
"Q2:现在在念大三,刚接触机器学习,目前对这块领域还没有很深入了解。 \n",
" 但是这学期接触机器学习后觉得非常有趣!开始希望往AI行业发展 \n",
"Q3:通过训练营将自己之前学习过的知识(数学方面和算法方面)串联起来,规范代码操作 \n",
" 获得论文阅读总结能力,挑战一下写知乎hhh \n",
" 一直都是自己一个人学习,希望能和大家一起讨论、做项目,在实战能力上有所提升。 \n",
" 看到训练营有git和知乎要求,觉得自己该受一些刺激奋起学习!! "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment