这学期几乎全是硬核的算法/程序课,为了督促自己认真学习,我将每周写一篇周记。周记模板前一周保留,当周每日更新当日笔记。如有整段文字代码适合另起blog,也将链接标在周记对应的日期下。
课程:算法设计与分析、数字图像处理、游戏AI中的算法、视觉计算与深度学习、人工智能引论及实践课(NLP)、Python程序设计与数据挖掘导论、计算机图形学。
网课:程序设计实习、吴恩达机器学习、数据结构与算法。
- 算分第一次作业(DDL 周五小班课 Done 周四下午)
- 游戏AI和人工智能引论课件(DDL 本周 Done 周二上午)
- 游戏AI游戏下载安装库(DDL 本周)
- 算分论文还没开始看(DDL 本周)
- 回顾简历上的项目,准备面试(DDL 周六)
- 刷题,尤其是树和图!(DDL 每天)
- 程序设计实习课件(三)简单的地方过一遍(DDL 周二晚 Done 周二晚)
- 程序设计实习课件(一)过一遍难的地方(DDL 周二晚 Done 周三早)
- 程序设计实习课件(二)认真学一遍!(DDL 周四晚 Nearly Done 周四晚)
- 计算机图形学确定一下课程内容(DDL 本周)
- 数字图像处理浏览课本(DDL 本周)
- Python搞到课件update一下(DDL 本周)
- 人工智能引论复习(DDL 本周 Nearly Done 周五晚)
- 挑战杯路网距离学习(DDL 本周)
课程:算法设计与分析、游戏AI中的算法、人工智能引论、计算机图形学
日记:
算分真的是数学课啊,今天第一次留作业。游戏AI没怎么听,分析了各类游戏以及策略,我在补程序设计的作业。
计算机图形学还在讲概论,没怎么听,搞明白了作业什么的,感觉和GIS这边的计算机图形学风格完全不一样,要来了GIS的课件和作业,学的时候对比着看看吧。
https://blog.csdn.net/u010525694/article/details/72846701#commentBox
https://en.cppreference.com/w/cpp/language/lambda
起因是,今天在17群里看到如下代码:
auto suicide = []{ std::terminate(); };
不明觉厉,然后发现是匿名函数。emmm,Python的Lambda倒是大一就用过,啊啊啊,快点更熟悉C++吧!
在C++中,this指针是所有成员函数的隐含参数(注:友元函数没有this指针,只有成员函数才有this指针),对象能通过this指针来访问自己的地址。也即,在成员函数内部,可用this来指向调用对象。
(呃,我居然忘了这个)
http://www.runoob.com/cplusplus/returning-values-by-reference.html
https://blog.csdn.net/zhongguoren666/article/details/8523458
以引用返回函数值,定义函数时需要在函数名前加&。用引用返回函数值的最大好处是,在内存中不产生被返回值的副本。
我的理解是:所谓“把引用作为返回值”,就是返回了本该返回的变量的引用!也就不必生成一个新的变量副本。
但是浏览完相关博客,感觉似乎“把引用作为返回值”除了节约内存空间以外没什么其他应用,毕竟区别只是返回了一个引用,而返回处本来就在(这个引用指向的变量的)作用域内。任何对引用的操作都可以直接进行嘛。也许是我想多了,节约内存空间就已经足够牛逼了。另外第二个博客推荐细看《Effective C++》,再说吧。
复习课程:游戏AI中的算法、人工智能引论、程序设计实习
日记:
上午复习了游戏AI和人工智能引论课件,下午刷程序设计(一)和(三)。
刷着刷着就觉得很忧伤,自己之前花了那么多力气吭哧吭哧学编程,可是那么多好东西就直接放在程序设计课里面了。我为什么不早点(不从一开始就)看这门课程呢?明明去年学程设语言的时候也可以看的啊。计概少教一点,数算少教一点,程设少教一点,我...我有点难过。诶,总之我获得的信息实在太少了,我获得信息的能力也要加强!当然,努力一点,耐心一点!
STL的容器直到今天才算是比较清晰,之前就知道什么vector map set然后瞎用,今天明白了multi和unordered的意思,以及实现的大致区别。只是会使用是不够的,要理解他们是怎么实现的才能更高效地使用。
外部变量:不是在匿名函数内部定义的变量都是外部变量。如下ff()函数x,y,z都是外部变量,a,b和n不是外部变量。
课程:Python程序设计与数据挖掘导论、数字图像处理、算法设计与分析、教育与人工智能
日记:
Python因为觉得前几周估计在讲语法之类,没去上课。数字图像处理没讲啥,我感觉可能又要自学了,看书做作业。算分今天认真听了,讲分治。
今天主要在看郭老师的慕课,看算法,深搜广搜,贪心动归什么的。我发觉过去有太多误解了,譬如我一直以为递归就是把最终的问题一步步往小变,动归就是数组从小往大一个个计算(其实动归可以递归实现也可以递推实现),深搜就是解决骑士周游之类的问题(其实周游问题是太特殊的一个问题,算法只是一个“函数架子”罢了),广搜就是词梯问题和最短路径之类(其实这些问题基本都可以深搜解决)。当然这样理解也不是完全不对,但是就很机械很割裂。我潜意识里会把这些算法用题目去“分开”:深搜是一种方法,能解这一类问题。广搜是另一种方法,能解另一类问题。只有分治是把问题进行分割,最小距离问题必须用广搜(更不要说我寒假还有那么一小会儿把前/中/后序遍历的区分和深搜广搜搞混)。也就是说每种算法在我脑子里是“并列”的。
我曾经隐约觉得深搜广搜是一个特定的函数(现在觉得是函数架子),按需要调用返回答案,我们需要求的结果在返回值和参数里。但是我现在“突然”想明白,诶,深搜是一种算法啊,就是先做一些预处理把东西都准备好,从起点“进去”,做一些事情,然后“递归”,跑到下一层,在“下面乃至下下下下下面”继续做事情,发现到头了就跑回来,跑回来的时候把事情都做完了。全局变量一用,我们可以身处其外纵观全局,记录一些我们在意的数据(最值什么的)就好了。
说白了,我之前就没真正学过算法,我只是被科普了一下。我只知道深搜广搜的搜索顺序,只看明白了例题的代码,对代码怎么实现算法不是很清晰,对具体能解决什么样的“具体问题”,怎么去解决,更是不甚清楚。我当时看了半天代码,搞明白骑士周游问题一步步是怎么下来的,但是无奈那时代码理解能力差看的慢记不清,加上非算法代码实在太多,提炼不出核心代码,也就没有学到真正的算法实现。脑子里糊糊涂涂的。
相比之下慕课就很清晰,先抽象问题,再一步步分解问题,想怎么解决。会给一类题目,然后直接开始总结方法。算法就是搭代码架子,具体题目去填不同的操作。我曾经觉得很难看不懂的东西,慕课看起来...就很简单。
想想看,深搜广搜,不过是搜索(遍历)顺序不一样而已,最短距离问题当然也可以深搜(记录最小值就行),如果是有权边最短距离就得深搜。什么动归递归分治,根本不是并列的关系(也不完全是包含的关系),其实也没必要去想它们之间是什么关系。重点在于它们是通过寻找状态(不同大小的问题)以及状态之间的联系转移(代码要实现的操作)来解决问题的,毕竟不管什么问题要解决都是要“一步步解决”变小的。只不过某些量需要全部考虑状态总数大小确定而且状态是“紧挨着的”,可能就用动归,不然可能用递归比较好,递归一般来说慢一点等等区别。
说了一大堆乱七八糟的,总之,为什么我以前这么菜,烦。以及,编程不写多多的码,就是耍流氓。
复习课程:程序设计实习、数字图像处理
日记:
第二周周四没课(因为双周然后实践课第三周以后才开),所以!复习算法!
今天小绿和小蓝更新了,难过了很久,emmm...
晚上开始看数字图像处理的课本,课件实在看不下去太简略了。但是课本第三版又太啰嗦了(而且数学实在太多),好像还是Matlab版本比较有意思。以及今天才知道什么是椒盐噪声...以前就以为是那种颗粒状的,原来还分胡椒和盐...
椒盐噪声是使图像的一些随机的噪声点,胡椒噪声的像素值为黑色(0),盐噪声的像素值为白色(255)。
课程:视觉计算与深度学习、程序设计实习、算法设计与分析小班课
日记:
我深刻检讨!上午上课,下午上课,晚上就屁颠屁颠跑去吃好吃的,学习没多久就开始看b站对着笛子大大画的头像笑成小傻子,然后一不小心翻到一个《画外的我们》的同人up主的视频,然后实名心动跑去闲鱼淘二手。然后加了卖主的QQ进了绿蓝群...总之,过于浪荡了。卖主似乎很厉害的样子,是个高二的小朋友,会画画,打算认真学习所以淡圈了出一些同人(不过要等到高三才出)。我和卖主聊了很久,然后就...emmm...啊啊啊,我打算把她的所有同人周边都买下来!
嗯,所以今天没什么学习笔记。
复习课程:计算机图形学、数字图像处理
日记:
没学什么,搜了一通资料,大概看了一眼,想揍自己。绿蓝一时爽,一直绿蓝就没法变成像小蓝一样伟大的人工智能科学家了!
和学长聊了聊信科保研的事情,总之他推荐我尽快去实验室,但是我怎么去实验室喔。太菜了。我现在的能力远远达不到所谓天赋所谓能力,就是欠练习!小蓝请给我力量!
复习课程:程序设计与实习-刷题
日记:
做了周赛,一如既往地菜,还好。
看计算机图形学,看到自闭。
这个星期真的是,太颓废了啊!不行!下周每天至少刷两次模拟竞赛!