unsupervised learning:k-means clustering和 agglomerate凝聚
k-means clustering:首先定k个点当做中心,按照距离将其他的点分成k类。有关问题:k如何选择(一般是选一个小点的值,然后增加,最后找到最好的k值)。
凝聚的聚类方法:距离最近的凑在一起,可以根据这个画出一个dendrogram(系统图)。
算法第一章(第二部分):
如何得出算法的时间复杂度:观察,假设,预测,验证。先做实验分析,以三个数相加为0为例,时间复杂度是n的三次方。通过增加n,看时间的变化,经常把他们之间的关系通过log来画出来,因为log一下,它的函数关系就变成了直线。通过写这个程序我学到了什么:System.currentTimeMillis();可以用来获得当前时间。printwriter,scanner,file,append的方法用来操作文件。
数学模型:本来是每一个句子都要算在里面的,但是图灵说可以只考虑最大的项。
时间复杂度的分类:1,logn(二分法查找),nlogn(divide and conquer),n^2,n^3,2^n,就这几个。讲到了二分法的证明。还有用insert和binary算法可以大大的提高上面例子的时间复杂度,没时间,不写了。
算法的理论:theta是渐近线。O是上限。oumiga是下限。
java分内存的时候,不是你看到的内存,他还会分配索引。