有名的演算法
① 大數據十大經典演算法之k-means
大數據十大經典演算法之k-means
k均值演算法基本思想:
K均值演算法是基於質心的技術。它以K為輸入參數,把n個對象集合分為k個簇,使得簇內的相似度高,簇間的相似度低。
處理流程:
1、為每個聚類確定一個初始聚類中心,這樣就有k個初始聚類中心;
2、將樣本按照最小距離原則分配到最鄰近聚類
3、使用每個聚類中的樣本均值作為新的聚類中心
4、重復步驟2直到聚類中心不再變化
5、結束,得到K個聚類
劃分聚類方法對數據集進行聚類時的要點:
1、選定某種距離作為數據樣本間的相似性度量,通常選擇歐氏距離。
2、選擇平價聚類性能的准則函數
用誤差平方和准則函數來評價聚類性能。
3、相似度的計算分局一個簇中對象的平均值來進行
K均值演算法的優點:
如果變數很大,K均值比層次聚類的計算速度較快(如果K很小);
與層次聚類相比,K均值可以得到更緊密的簇,尤其是對於球狀簇;
對於大數據集,是可伸縮和高效率的;
演算法嘗試找出使平方誤差函數值最小的k個劃分。當結果簇是密集的,而簇與簇之間區別明顯的時候,效果較好。
K均值演算法缺點:
最後結果受初始值的影響。解決辦法是多次嘗試取不同的初始值。
可能發生距離簇中心m最近的樣本集為空的情況,因此m得不到更新。這是一個必須處理的問題,但我們忽略該問題。
不適合發現非凸面形狀的簇,並對雜訊和離群點數據較敏感,因為少量的這類數據能夠對均值產生較大的影響。
K均值演算法的改進:
樣本預處理。計算樣本對象量量之間的距離,篩掉與其他所有樣本那的距離和最大的m個對象。
初始聚類中心的選擇。選用簇中位置最靠近中心的對象,這樣可以避免孤立點的影響。
K均值演算法的變種:
K眾數(k-modes)演算法,針對分類屬性的度量和更新質心的問題而改進。
EM(期望最大化)演算法
k-prototype演算法
這種演算法不適合處理離散型屬性,但是對於連續型具有較好的聚類效果。
k均值演算法用途:
圖像分割;
衡量足球隊的水平;
下面給出代碼:
#include <iostream>
#include <vector>
//auther archersc
//JLU
namespace CS_LIB
{
using namespace std;
class Kmean
{
public:
//輸入格式
//數據數量N 維度D
//以下N行,每行D個數據
istream& loadData(istream& in);
//輸出格式
//聚類的數量CN
//中心維度CD
//CN行,每行CD個數據
//數據數量DN
//數據維度DD
//以下DN組,每組的第一行兩個數值DB, DDis
//第二行DD個數值
//DB表示改數據屬於一類,DDis表示距離改類的中心的距離
ostream& saveData(ostream& out);
//設置中心的數量
void setCenterCount(const size_t count);
size_t getCenterCount() const;
//times最大迭代次數, maxE ,E(t)表示第t次迭代後的平方誤差和,當|E(t+1) - E(t)| < maxE時終止
void clustering(size_t times, double maxE);
private:
double calDistance(vector<double>& v1, vector<double>& v2);
private:
vector< vector<double> > m_Data;
vector< vector<double> > m_Center;
vector<double> m_Distance;
vector<size_t> m_DataBelong;
vector<size_t> m_DataBelongCount;
};
}
#include "kmean.h"
#include <ctime>
#include <cmath>
#include <cstdlib>
//auther archersc
//JLU
namespace CS_LIB
{
template<class T>
void swap(T& a, T& b)
{
T c = a;
a = b;
b = c;
}
istream& Kmean::loadData(istream& in)
{
if (!in){
cout << "input error" << endl;
return in;
}
size_t dCount, dDim;
in >> dCount >> dDim;
m_Data.resize(dCount);
m_DataBelong.resize(dCount);
m_Distance.resize(dCount);
for (size_t i = 0; i < dCount; ++i){
m_Data[i].resize(dDim);
for (size_t j = 0; j < dDim; ++j){
in >> m_Data[i][j];
}
}
return in;
}
ostream& Kmean::saveData(ostream& out)
{
if (!out){
cout << "output error" << endl;
return out;
}
out << m_Center.size();
if (m_Center.size() > 0)
out << << m_Center[0].size();
else
out << << 0;
out << endl << endl;
for (size_t i = 0; i < m_Center.size(); ++i){
for (size_t j = 0; j < m_Center[i].size(); ++j){
out << m_Center[i][j] << ;
}
out << endl;
}
out << endl;
out << m_Data.size();
if (m_Data.size() > 0)
out << << m_Data[0].size();
else
out << << 0;
out << endl << endl;
for (size_t i = 0; i < m_Data.size(); ++i){
out << m_DataBelong[i] << << m_Distance[i] << endl;
for (size_t j = 0; j < m_Data[i].size(); ++j){
out << m_Data[i][j] << ;
}
out << endl << endl;
}
return out;
}
void Kmean::setCenterCount(const size_t count)
{
m_Center.resize(count);
m_DataBelongCount.resize(count);
}
size_t Kmean::getCenterCount() const
{
return m_Center.size();
}
void Kmean::clustering(size_t times, double maxE)
{
srand((unsigned int)time(NULL));
//隨機從m_Data中選取m_Center.size()個不同的樣本點作為初始中心。
size_t *pos = new size_t[m_Data.size()];
size_t i, j, t;
for (i = 0; i < m_Data.size(); ++i){
pos[i] = i;
}
for (i = 0; i < (m_Data.size() << 1); ++i){
size_t s1 = rand() % m_Data.size();
size_t s2 = rand() % m_Data.size();
swap(pos[s1], pos[s2]);
}
for (i = 0; i < m_Center.size(); ++i){
m_Center[i].resize(m_Data[pos[i]].size());
for (j = 0; j < m_Data[pos[i]].size(); ++j){
m_Center[i][j] = m_Data[pos[i]][j];
}
}
delete []pos;
double currE, lastE;
for (t = 0; t < times; ++t){
for (i = 0; i < m_Distance.size(); ++i)
m_Distance[i] = LONG_MAX;
for (i = 0; i < m_DataBelongCount.size(); ++i)
m_DataBelongCount[i] = 0;
currE = 0.0;
for (i = 0; i < m_Data.size(); ++i){
for (j = 0; j < m_Center.size(); ++j){
double dis = calDistance(m_Data[i], m_Center[j]);
if (dis < m_Distance[i]){
m_Distance[i] = dis;
m_DataBelong[i] = j;
}
}
currE += m_Distance[i];
m_DataBelongCount[m_DataBelong[i]]++;
}
cout << currE << endl;
if (t == 0 || fabs(currE - lastE) > maxE)
lastE = currE;
else
break;
for (i = 0; i < m_Center.size(); ++i){
for (j = 0; j < m_Center[i].size(); ++j)
m_Center[i][j] = 0.0;
}
for (i = 0; i < m_DataBelong.size(); ++i){
for (j = 0; j < m_Data[i].size(); ++j){
m_Center[m_DataBelong[i]][j] += m_Data[i][j] / m_DataBelongCount[m_DataBelong[i]];
}
}
}
}
double Kmean::calDistance(vector<double>& v1, vector<double>& v2)
{
double result = 0.0;
for (size_t i = 0; i < v1.size(); ++i){
result += (v1[i] - v2[i]) * (v1[i] - v2[i]);
}
return pow(result, 1.0 / v1.size());
//return sqrt(result);
}
}
#include <iostream>
#include <fstream>
#include "kmean.h"
using namespace std;
using namespace CS_LIB;
int main()
{
ifstream in("in.txt");
ofstream out("out.txt");
Kmean kmean;
kmean.loadData(in);
kmean.setCenterCount(4);
kmean.clustering(1000, 0.000001);
kmean.saveData(out);
return 0;
}
② 有監督和無監督學習都各有哪些有名的演算法和深度學習
深度學習
編輯
深度學習的概念源於人工神經網路的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現數據的分布式特徵表示。[1]
深度學習的概念由Hinton等人於2006年提出。基於深度置信網路(DBN)提出非監督貪心逐層訓練演算法,為解決深層結構相關的優化難題帶來希望,隨後提出多層自動編碼器深層結構。此外Lecun等人提出的卷積神經網路是第一個真正多層結構學習演算法,它利用空間相對關系減少參數數目以提高訓練性能。[1]
深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網路,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。[2]
③ 數據挖掘的經典演算法有哪些
1. C4.5
C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法. C4.5演算法繼承了ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進:
1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
2) 在樹構造過程中進行剪枝;
3) 能夠完成對連續屬性的離散化處理;
4) 能夠對不完整數據進行處理。
2. The k-means algorithm 即K-Means演算法
k-means algorithm演算法是一個聚類演算法,把n的對象根據他們的屬性分為k個分割,k < n。它與處理混合正態分布的最大期望演算法很相似,因為他們都試圖找到數據中自然聚類的中心。它假設對象屬性來自於空間向量,並且目標是使各個群組內部的均 方誤差總和最小。
3. Support vector machines
支持向量機,英文為Support Vector Machine,簡稱SV機(論文中一般簡稱SVM)。它是一種監督式學習的方法,它廣泛的應用於統計分類以及回歸分析中。支持向量機將向量映射到一個更 高維的空間里,在這個空間里建立有一個最大間隔超平面。在分開數據的超平面的兩邊建有兩個互相平行的超平面。分隔超平面使兩個平行超平面的距離最大化。
4. The Apriori algorithm
Apriori演算法,它是一種最具影響力的挖掘布爾關聯規則頻繁項集的演算法。它的演算法核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這里,所有支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集。
關於數據挖掘的經典演算法有哪些,該如何下手的內容,青藤小編就和您分享到這里了。如果您對大數據工程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於數據分析師、大數據工程師的技巧及素材等內容,可以點擊本站的其他文章進行學習。
④ 現在對數據加密都有那些演算法,有名字就行.....謝謝
MD5演算法
對稱/非對稱密鑰加密演算法
對稱密鑰:DES、TripleDES演算法
對稱密鑰:RC演算法
非對稱密鑰:RSA演算法
⑤ 請列舉一些經典演算法和近代智能演算法,只列出名字也可以
近代智能演算法:人工神經網路,遺傳演算法,模擬退火,禁忌搜索,蟻群演算法,粒子群演算法,變鄰域搜索,魚群演算法等等。
經典演算法:動態規劃法,分支定界法,貪婪法,遞推法,回溯法,歸納法,遞歸法,窮舉搜索法,分治法,迭代法等等。
樓主,給我加分吧,多謝了。
⑥ 深圳SEO歷史上谷歌Google推出了哪些演算法
馬加比更新(Maccabees Update)
上線時間:2017年12月12號
受影響網站:刻意為各種關鍵片語合建立大量著陸頁,比如「地名A+服務a「、」地名A+服務b」、「地名B+服務a」等等,為了覆蓋這些關鍵詞,製造大量頁面,質量通常不會高。
馬加比這個名字是 SERoundtable.com的Barry Schwartz起的,不是Google官方給的名字,因為Google貌似不會再公布演算法更新了,更不要說起名字了。Barry Schwartz起這個名字是因為這次更新發生在猶太人的光明節期間,光明節是紀念馬加比家族的。Google在某種程度上確認了這次更新,不過只是說,在這段時間上線了幾個小更新,是提高相關性日常工作的一部分。
移動優先索引(Mobile First Index)
上線時間:2017年10月中旬
受影響網站:移動優先索引指的是Google優先索引網站移動版本,並作為排名依據。以前都是索引PC版本並計算排名的。移動優先索引Google在2016年底就開始宣傳了,但一直沒有推出,估計影響面比較大。2017年10月中旬左右,Google透露一小部分網站已經開始轉為移動優先索引。
貓頭鷹更新(Project Owl)
公布時間:2017年4月25號
受影響網站:虛假新聞內容,如編造的假新聞,極度偏見、煽動仇恨,謠言等。參見以前寫的關於貓頭鷹演算法的帖子。
弗雷德更新(Fred Update)
上線時間:2017年3月8號
受影響網站:廣告過多的低質量內容站,這類網站之所以存在,就是為了放 Adsense之類的廣告,並沒有提供給用戶更多價值。
為什麼叫Fred更新呢?因為SEO們問Google員工Gary Illyes這次更新叫啥名字時,Gary Illyes隨便給了個名字,貌似是他養的魚的名字,為什麼想起這條魚的名字呢?因為Gary Illyes剛給這條魚拍了張照片,就是右邊這張。Gary Illyes說,以後除非另行說明,不然所有更新都叫Fred了。就這么任性,就這么草率。
移動頁面干擾插頁懲罰演算法(Intrusive Interstitial Penalty)
上線時間:2017年1月10號
受影響網站:這個懲罰演算法針對移動頁面:擋住主題內容的彈窗,干擾用戶訪問的大幅插頁式廣告,用戶需要關掉插頁才能看到頁面實際內容,有時候需要等5-10秒才能關掉。不過據統計,被懲罰的網站並不多。
企鵝更新4.0(Penguin 4.0)
上線時間:2016年9月23號,10月12號左右完成
受影響網站:和以前的企鵝更新一樣,受影響的是有低質量外鏈的網站。Penguin 4.0是最後一次企鵝系列演算法更新了,因為企鵝演算法以後成為核心排名演算法的一部分,實時更新。
另外,以前的企鵝更新是懲罰網站,4.0是不計算低質量外鏈,降低負面SEO的可能性。
移動友好演算法2(Mobile Friendly Algorithm 2)
上線時間:2016年4月21號
受影響網站:2015年4月21號第一次Google移動友好演算法的一次更新,使更多移動友好頁面能被用戶看到。
APP安裝插頁廣告懲罰(APP Install Interstitial Penalty)
上線時間:2015年11月2號
受影響網站:頁面會彈出大幅、遮擋主體內容的插頁,要求用戶下載APP,這種頁面被認為不移動友好,在移動搜索中會被降低排名。頁面可以建議用戶下載APP,但廣告不要大幅甚至全屏,做成頂部banner之類的是沒問題的。
RankBrain
上線時間:消息公布時間是2015年10月26號,通過 Bloomberg的一篇文章。演算法上線時間應該是數月前,2015年上半年。
RankBrain嚴格說來不算是排名演算法,而是以人工智慧為基礎的深入理解用戶查詢詞的系統,尤其是長尾的、不常出現的查詢。2015年剛上線時,15%查詢詞經過RankBrain處理,可能是效果很好,2016年開始所有查詢詞都經過RankBrain處理。RankBrain的例子參考以前的帖子。
被黑網站刪除演算法(Hacked Spam)
上線時間:2015年10月
受影響網站:被黑的網站,包括病毒、引導流量到色情、侵權產品、非法葯物網站等。這些頁面會從搜索結果這直接刪除,所以有時候搜索結果頁面可能只有8、9個結果。以前通常是在搜索結果中標注這個頁面可能被黑了,現在直接刪除了。5%左右的查詢受到影響。檢查自己網站是否被黑還是挺重要的。
熊貓演算法4.2(Panda Update 4.2)
上線時間:2015年7月18號
自2011年推出以來,熊貓演算法經歷了近30次更新,Panda 4.2是最後一次,幾個月才完成。這之後,熊貓演算法成為Google核心演算法的一部分,雖然還會有更新,但不再單獨給名字了。
質量更新(Quality Update)
上線時間:2015年5月1號左右
受影響網站:內容質量低的頁面,但不是熊貓演算法。Google雖然確認了這次更新,但表示,這只是Google經常做的演算法更新之一,調整了評估內容質量的方法,沒什麼特殊的。
移動友好演算法(Mobile Friendly Algorithm)
上線時間:2015年4月21號
受影響網站:在移動搜索中給予移動友好的網站排名提升。也被稱為Mobilegeddon – 天劫演算法。
所謂移動友好,其實沒那麼復雜,用戶能正常在手機訪問頁面就行了,所以字體不要太小,字距行距不要太小,用戶不需要左右拉屏幕,手指頭點擊鏈接時不會點錯地方,速度夠快等等。自己用手機看看自己網站就知道是否移動友好了。也可以參考一下本博客移動SEO的帖子。
移動友好演算法是針對頁面級別的,需要頁面重新抓取、索引後才能判斷是否移動友好。所以演算法本身4月底上線,但受影響的頁面可能不是馬上見到效果。
Google曾經預報說移動友好演算法比熊貓和企鵝更新的影響還要大,但由於Google很早就提醒SEO們移動友好的重要性,很多網站已經做了移動優化,所以這次更新沒有預計的那麼有震撼性。
HTTPS更新(HTTPS Update)
上線時間:2014年8月7號
受影響網站:使用了https的頁面排名會稍微提升一點。Google聲明這只是個很小的排名因素,但事實上對網站採用https起到了很大推動作用。
鴿子更新(Pigeon Update)
上線時間:2014年7月24號
受影響網站:鴿子更新是本地搜索演算法的一次更新,改進了距離和定位排名演算法參數。這個名字不是Google起的,是SearchEngineLand給起的。之所以取「鴿子」這個名字是因為,鴿子會回家,有本地意識。
蜂鳥更新(Hummingbird Algorithm)
上線時間:2013年8月
受影響網站:蜂鳥更新是一次排名演算法的重寫,改進對查詢詞真實意圖的理解,更重要的是未來的擴展性。雖然代碼是完全重寫的,但排名因素及參數大概變化不多,所以上線後基本上SEO行業沒有人注意到。
發薪日貸款演算法(Payday Loan Algorithm)
上線時間:2013年6月13號
受影響網站:針對垃圾和黑帽手法盛行的一些行業的查詢詞重點打擊,如payday loan(發薪日貸款,一種小額、短期、利息高的貸款,一般下個發薪日就還上)、色情等。這些行業常用的作弊手法也經常是非法的。
2014年5月16號,發薪日貸款演算法2.0上線,2014年6月12號,演算法3.0上線。
完全匹配域名懲罰(EMD Update)
上線時間:2012年9月29號
受影響網站:低質量的完全匹配域名(exact match domain)網站,也就是域名與目標關鍵詞完全一樣。URL中包含關鍵詞對排名有一些幫助,所以不少SEO用目標關鍵詞注冊域名。這種域名確實有過好處,但現在內容不行的話可能被懲罰。
DMCA懲罰演算法(DMCA Takedown Penalty)
上線時間:2012年8月13號
受影響網站:DMCA,Digital Millennium Copyright Act,數字千年版權法案,根據這個法案,版權作品被侵權,版權所有人可以向服務商要求刪除侵權內容,服務商可以是主機商,域名注冊商,ISP,以及搜索引擎。DMCA演算法就是對收到很多侵權投訴刪除要求的網站,Google給予排名懲罰。
DMCA Takedown Penalty又被稱為pirate update,海盜演算法。
2014年10月21號,DMCA懲罰演算法上線2.0版本,很多BT種子網站、視頻網站被大幅懲罰。
企鵝更新(Penguin Update)
上線時間:2012年4月24號
受影響網站:Google的官方帖子聲明打擊的是違反Google質量指南的垃圾網站,後續排名變化的分析表明主要受懲罰的是為獲得排名製造大量垃圾外鏈、低質量外鏈的網站。企鵝演算法1.0影響了3.1%英文查詢,3%左右的中文、德文等查詢。
企鵝演算法和熊貓演算法是兩個最著名的Google懲罰性演算法,受到影響的網站范圍大,據調查,60%的SEO反映自己網站被Penguin演算法懲罰了。
企鵝對今天的SEO方法,尤其是外鏈建設方法,產生了很大影響。不僅製造外鏈要非常小心,大部分以前常用的方法現在都被Google明確警告可能會被懲罰,現在SEO們更頭疼的是怎樣刪除低質量外鏈和以前發的垃圾外鏈,這比製造外鏈還困難。
頁面布局懲罰演算法(Page Layout Algorithm)
上線時間:2012年1月
受影響網站:第一屏顯示過多廣告的頁面被降低排名。因此也常被稱為Ads Above The Fold(第一屏廣告)演算法。
1%的查詢詞受影響。被懲罰的網站修改頁面布局後,Google重新抓取、索引,如果頁面用戶體驗已經改善,就會自動恢復。
2012年10月9號,Page Layout 2.0,2014年2月6號,Page Layout 3.0分別上線。
新鮮度更新(Freshness Update)
上線時間:2011年11月3號
受影響網站:Google官方帖子明確表示:更新鮮的內容會被更多展示在搜索結果中,尤其是最近的事件或熱門話題、定期舉辦或發生的事件(如奧運會之類)、經常會更新的信息(如最新產品)。影響了35%的查詢。
當然,這只適用於更需要新鮮信息的查詢,有的查詢並沒有太大實效性,如菜譜,就不必太擔心。
熊貓更新(Panda Update)
上線時間:2011年2月24號
受影響網站:內容低質量的頁面排名被降低,如轉載、抄襲的內容,大量用戶發的垃圾留言、主體內容太少、關鍵詞堆積等等。
熊貓更新打擊面大,影響大致12的查詢結果,對現今SEO方法產生了重要影響。Panda演算法最初是後台計算,集中上線,從2011年上線到2015年融入到核心演算法中,經歷了近30次更新。
熊貓演算法更新最初被SearchEngineLand命名為Farmers Update,內容農場更新,後來Google自己公布了演算法代碼是Panda,和咱們的熊貓沒關系,是Google內部開發此演算法的主要工程師之一的名字叫Panda。
採集懲罰演算法(Scraper Algorithm)
上線時間:2011年1月28號
受影響網站:Matt Cutts的博客帖子公布的這個演算法,採集、抄襲的內容頁面被懲罰,獎勵原出處。2%查詢受影響。
負面評價處理(Negative Review)
上線時間:2010年12月1號
受影響網站:這個演算法是由於 Google的人讀到紐約時報的一篇報道,一位顧客在某商家的體驗很差,所以上網寫了負面評論,但負面評論卻給商家帶來更多鏈接,鏈接又導致商家網站排名上升,帶來更多生意。Google很快採取措施,檢測這類負面評論,降低相應商家排名。
咖啡因更新(Caffeine)
上線時間:2010年6月1號
受影響網站:咖啡因更新是一次索引系統代碼的重寫,新系統比舊系統50%的內容更新,索引數量也更大,更有擴展性,速度更快。原來的索引系統是分層的,有的內容(重要內容)抓取索引更快,有的內容就得等比較長時間。咖啡因系統把網路分成小區塊,持續更新索引庫,發現新頁面,或老頁面上的新內容,直接進入索引庫。
Mayday Update
上線時間:2010年4月28號-5月3號
受影響網站:根據Matt Cutts的視頻說明,Mayday更新主要針對長尾查詢詞,演算法會尋找哪些網站的頁面質量更符合要求。當然這種說明說了也是和沒說差不多。SEO們的觀察是,受影響的主要是大型網站上離首頁點擊距離比較遠、沒什麼外鏈、內容沒有什麼附加價值的頁面 — 很多電商網站的產品頁面就是這樣的,內容是供應商給的,也不大可能有外鏈。
Mayday指的是發生在5月份,不是求救的那個Mayday。
頁面速度因素(Page Speed Ranking Factor)
上線時間:2010年4月
受影響網站:顧名思義,打開速度快的頁面排名會給予提升,雖然幅度不大。速度的測量包括蜘蛛抓取時頁面的反應速度和工具條記錄的用戶打開頁面時間。
2013年6月,Matt Cutts暗示,速度特別慢的頁面可能會被懲罰,不過也不用特別擔心,除非頁面速度慢到一定程度。
Vince/品牌更新(Vince/Brand Update)
上線時間:2009年2月1號
受影響網站:大品牌網站頁面在很多查詢結果中(都是非長尾的大詞)排名顯著提高,所以最初被稱為品牌更新。以前帖子寫過Vince/品牌更新。
Matt Cutts後來解釋,這次更新其實其實只是很小的變化,負責的Google工程師名字叫Vince,所以Google內部代碼名稱是Vince。這個變化並不是刻意針對大品牌,而是提升信任度在排名中的作用,而信任度、質量、鏈接這些方面,大品牌更有優勢,所以表現出來的效果好像是大品牌頁面被提升。
Dewey Update
上線時間:2008年3月
受影響網站:不明,SEO行業觀察到排名劇烈變動,但沒有找到明顯規律。Dewey這個名字的來源是因為Matt Cutts在 webmasterworld論壇里徵求這次演算法更新的反饋意見,站長需要在反饋中標明Dewey這個詞,可能是Google內部的識別代碼。
大爸爸(Big Daddy)
上線時間:2005年12月-2006年3月
大爸爸是一次Google演算法基礎架構的重寫,解決了網址規范化、301/302轉向等技術問題。大爸爸是一個數據中心一個數據中心更新的,不是同時上線的。
大爸爸這名字怎麼來的?據Matt Cutts帖子說,2005年12月的Pubcon會議上,Matt Cutts徵求大家對這次更新的反饋,Matt Cutts知道更新已經在一個數據中心上線了,所以問大家有什麼好名字來指這個數據中心,一位站長說,叫BigDaddy吧,他孩子就這么叫他的,Matt Cutts覺得挺好,就叫這個名字了。
我當年開始寫SEO每天一貼就是大爸爸完成更新那段時間,第3篇帖子就是介紹大爸爸更新情況。Robin同志給我的第一個留言就在那篇帖子上,沙發,後來才有了點石,和很多中國SEO行業的故事。
Jagger Update
上線時間:2005年9-11月
受影響網站:Jagger分3個階段上線,所以有Jagger1, Jagger2, Jagger3的名字。Jagger更新主要打擊低質量鏈接,如交換鏈接、鏈接農場、買賣鏈接等。
早期的Google演算法更新基本上都是webmasterworld命名的,Jagger也是webmasterworld創始人Brett Tabke起的名字,下面提到的更新名稱大多是他們命名的。但貌似Jagger是最後一個,後來的名字大多是Google自己公布的了。
Bourbon Update
上線時間:2005年5月
受影響網站:早期Google更新往往沒有官方信息,所以針對的是哪些網站經常不明,只是監測到排名有比較大變化。Bourbon一般認為與網址規范化有關。
Bourbon這個名字也是webmasterworld起的,原因是webmasterworld即將在新奧爾良舉行一個行業會議,Bourbon是新奧爾良的一條著名老街道。
Allegra Update
上線時間:2005年2月
受影響網站:不明確,或者說范圍廣泛,包括低質量外鏈、關鍵詞堆積、過度優化等。
公布支持nofollow
上線時間:2005年1月
現在SEO對nofollow肯定都很熟悉了,包括網路,所有主流搜索引擎都支持nofollow。還不知道的請參考以前關於nofollow的帖子。
Brandy Update
上線時間:2004年2月
受影響網站:鏈接錨文字作用提高,鏈接需要來自好鄰居的概念第一次被提出來。索引庫增長,抓取索引了很多新的鏈接,一些網站獲得了更高權威度。
弗羅里達更新(Florida Update)
上線時間:2003年11月
受影響網站:弗羅里達更新是早期最著名的Google演算法更新,影響面大,受影響的以商業意圖明顯的詞為主,一些靠搜索流量的小公司倒閉,有的SEO公司因此陷入困境,因為客戶網站排名下降,不續費了。弗羅里達更新的後果大到,Google曾經承諾,以後不在年底上線這么大的更新了,以免劇烈影響很多商家的聖誕季銷售業績。
Florida Update打擊了一系列不自然的優化方法,包括隱藏文字、關鍵詞堆積、鏈接農場、大量交換鏈接、過度優化。Florida徹底改變了SEO,可以說是現在SEO方法的起點。
Florida也是webmasterworld命名的,因為他們的命名方法該排到字母F打頭了(為什麼到了F打頭,見下面Boston更新說明),而第二年2月他們要在弗羅里達的奧蘭多舉行Pubcon大會,所以就用了Florida。
Update Fritz
上線時間:2003年7月
Fritz更新是Google轉為每天持續小幅更新索引的開始,這種更新方法又被稱為everflux。
Update Fritz這個名字是Matt Cutts在他2006年的博客帖子里提到的Google內部名稱,不是webmasterworld命名系列裡的。
Esmeralda Update
上線時間:2003年6月1號
這是早期每個月發生一次的Google Dance的最後一次。這次更新之後,Google演算法更新改為小幅、持續性的,當然這是相對Google Dance每個月一次、持續數天、排名劇烈波動而言。准確地說,Google Dance是索引更新,不是演算法更新。Esmeralda更新之後,Google就不再Dance了。
Dominic Update
上線時間:2003年5月1號
早期Google Dance的一次。Dominic也是webmasterworld命名,名稱來源於參加Boston Pubcon大會時大家常去的一家披薩飯館。
Cassandra Update
上線時間:2003年4月1號
Brett Tabke和webmasterworld第一次特意給Google更新起名字。既然第一個名字是Boston,是個男名,這次應該是C打頭的女名,大家投票,Cassandra勝出,沒有其它特別意義。
Boston Update
上線時間:2003年2月1號
2003年波士頓舉行的SES大會上,Google員工公布了這次更新,為了和其它Google Dance以示區別,取名Boston。
webmasterworld的創始人Brett Tabke就想,給更新取名字是個挺好的主意,所以就效仿台風的命名方法給Google更新取名,按字母排序,男名女名間隔,也得到了Google的首肯。所以早期的Google演算法更新大多是webmasterworld命名的。
Google Dance
早期Google索引庫每個月更新一次,是線下計算,然後集中上線。由於數據量大,需要一個數據中心一個數據中心地上線,不是同時上線的。在更新期間,用戶這分鍾訪問的是一個數據中心,下一分鍾可能訪問的是另一個數據中心,看到的搜索結果可能有很大差別,因此被稱為Google Dance。
從2000年7月開始,webmasterworld每個月開一個新帖,討論每一次Google Dance情況,一直到2003年2月的Boston更新第一次有了名稱,以前的Google Dance都是沒有名字的。這里是當年Google Dance更新討論的大列表。
⑦ java中常用的演算法,有哪些告訴我名字就可以了。越多越好
插入排序
選擇排序
冒泡排序
快速排序
歸並排序
希爾排序
堆排序
桶式排序
基數排序
前面幾個常用點吧
不過我這種低級程序員
都用的不多
哎
⑧ 幾種加密演算法在java中的應用
簡單的Java加密演算法有:
第一種. BASE
Base是網路上最常見的用於傳輸Bit位元組代碼的編碼方式之一,大家可以查看RFC~RFC,上面有MIME的詳細規范。Base編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base來將一個較長的唯一標識符(一般為-bit的UUID)編碼為一個字元串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
第二種. MD
MD即Message-Digest Algorithm (信息-摘要演算法),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD的前身有MD、MD和MD。廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD後都能生成唯一的MD值。好比現在的ISO校驗,都是MD校驗。怎麼用?當然是把ISO經過MD後產生MD的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放著MD的串。就是用來驗證文件是否一致的。
MD演算法具有以下特點:
壓縮性:任意長度的數據,算出的MD值長度都是固定的。
容易計算:從原數據計算出MD值很容易。
抗修改性:對原數據進行任何改動,哪怕只修改個位元組,所得到的MD值都有很大區別。
弱抗碰撞:已知原數據和其MD值,想找到一個具有相同MD值的數據(即偽造數據)是非常困難的。
強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD值,是非常困難的。
MD的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被」壓縮」成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進制數字串)。除了MD以外,其中比較有名的還有sha-、RIPEMD以及Haval等。
第三種.SHA
安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於^位的消息,SHA會產生一個位的消息摘要。該演算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種「指紋」或是「摘要」所以對散列值的數字簽名就可以視為對此明文的數字簽名。
SHA-與MD的比較
因為二者均由MD導出,SHA-和MD彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
對強行攻擊的安全性:最顯著和最重要的區別是SHA-摘要比MD摘要長 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD是^數量級的操作,而對SHA-則是^數量級的操作。這樣,SHA-對強行攻擊有更大的強度。
對密碼分析的安全性:由於MD的設計,易受密碼分析的攻擊,SHA-顯得不易受這樣的攻擊。
速度:在相同的硬體上,SHA-的運行速度比MD慢。
第四種.HMAC
HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證等。
⑨ C語言有哪些有名的演算法呢希望可以詳細說明下,非常感謝。
排序演算法:冒泡排序,選擇排序,插入排序,希爾排序,堆排序,快速排序(這個比較重要)
搜索:深度優先,廣度優先
圖:Dijkstra演算法是典型的單源最短路徑演算法
樹:二叉樹
我就知道這些了,應該算比較基本的演算法,也比較有名。