Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
Homework1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
20200519065
Homework1
Commits
049735d4
Commit
049735d4
authored
May 28, 2020
by
20200519065
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
first submission
parents
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
253 additions
and
0 deletions
+253
-0
Mini-homework.ipynb
+253
-0
No files found.
Mini-homework.ipynb
0 → 100644
View file @
049735d4
{
"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
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment