從哥尼斯堡的七橋到網絡爬蟲

從哥尼斯堡的七橋到網絡爬蟲

引言

  在普魯士的哥尼斯堡前面是一條河,河上有兩個小島,有七座橋把兩岸和小島連起來。
在這裏插入圖片描述
當地人提出一個有趣的問題:一個步行者怎麼才能不重複,不遺漏地一次性走完七座橋,最後回到出發點。這個問題看上去一目瞭然,每天有很多人來這邊散步並且嘗試解決這個問題。1736年歐拉來普魯士訪問,聽說了這個問題,於是他空閒的消遣就變爲去橋上散步,他解決了這個問題,併爲此寫了一篇論文,這就是圖論的起源。

主要內容

  時間來到20世紀,計算機網絡出現了,在這個第二世界裏,人們發現網絡世界就是一張大的圖,網頁是圖的節點,而超鏈接(網頁上有些地方,你點一下就可以打開一個新的網頁,那個就是超鏈接)就是圖的橋。網絡爬蟲就是運用圖的兩個遍歷,廣度遍歷BFS(Breadth-first search)以及深度遍歷DFS(Depth-first search)來瀏覽網頁。什麼是廣度遍歷,你從一個節點出發,進入所有與它相連的節點裏面,都走了一遍,然後接下來去與它相連節點相連的節點再走一遍,直到遍歷完整個圖。就像石頭扔進水裏,一圈圈擴散。圖2(來自網絡,侵刪)中的遍歷順序A->C->D->F->B->G->E
在這裏插入圖片描述
深度遍歷呢,你去一個與當前節點相連的節點,然後繼續去與當前節點相連的節點,一路向下,直到圖的邊緣,這個時候你就往回趕,遇到沒有去的節點就去一下,都遍歷完了,就又往上一層,直到遍歷完所有圖。圖3中的遍歷順序爲A->C->B->C->D->C->A->F->G->E
圖3
簡單點說網絡爬蟲就兩個步驟,遍歷->下載->遍歷->下載。。。。。。

結尾語

  之前聽何積豐老師講計算機侷限性課程的時候,他有說過一句話,我印象很深刻:當前國內在研究上太急功近利了,做什麼都要講有什麼用,但是基礎學科的研究上不能但從有用上來評價,它現在沒有用,或許在將來某一天它就能派上大用場。從圖論到網絡爬蟲就是一個很好的例子,從18世紀初到1993年第一個網絡爬蟲出來,中間隔了將近300年,在這300年中間,圖論是個沒有用處的,直到計算機網絡出來後,人們才發現圖論在網絡上是個天生的及其好用的工具,圖論又變得極爲有用。

題外話

七橋問題的答案:
七橋問題的答案是不可能一次性通過一條路走完七橋回到原點。
爲此歐拉提出了一個定理:如果一個圖能夠從一個頂點出發,每條邊不重複地遍歷一遍回到這個頂點,那麼每一頂點的度必須是偶數(度就是與該頂點連接邊的條數)
證明:假如能夠遍歷圖的每一條邊各一次,那麼對於每個頂點,必然從某條邊進去,同時會從另一條邊出來,進去和出來的次數是相同的,也就是每個頂點相連的邊是成對出現的,即每個頂點的度是偶數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章