歐拉算法 你為什么要學(xué)算法?
你為什么要學(xué)算法?算法,其實就是解決問題的方法。學(xué)習(xí)算法是學(xué)習(xí)前人解決問題的方法。為什么要學(xué)習(xí)算法?想要在編程道路上走得更遠的程序員可能需要學(xué)習(xí)算法。我記得在軟件工程中,程序是數(shù)據(jù)結(jié)構(gòu)算法,這說明了算
你為什么要學(xué)算法?
算法,其實就是解決問題的方法。學(xué)習(xí)算法是學(xué)習(xí)前人解決問題的方法。為什么要學(xué)習(xí)算法?想要在編程道路上走得更遠的程序員可能需要學(xué)習(xí)算法。我記得在軟件工程中,程序是數(shù)據(jù)結(jié)構(gòu)算法,這說明了算法對程序的重要性。
許多初級業(yè)務(wù)系統(tǒng)程序員可能不會使用很多數(shù)學(xué)公式,但這并不意味著他們不使用算法。算法代表了數(shù)學(xué)對于計算機的重要性,對于圖形和圖像、人工智能等方面來說,數(shù)學(xué)基礎(chǔ)不好,不懂的算法可以說是很難的。
即使你不是程序員,你也應(yīng)該學(xué)習(xí)更多關(guān)于算法的知識。一方面有助于思維訓(xùn)練,另一方面也有助于解決生活中的實際問題。例如:用矩陣解方程。
每個人學(xué)習(xí)算法的目的可能不同,但算法對學(xué)習(xí)者的實際好處是相同的。
七橋問題。歐拉說,要一次無重復(fù)走遍這七座橋是不可能!你能說出是歐拉根據(jù)什么道理?
科尼斯堡七橋問題是18世紀著名的經(jīng)典數(shù)學(xué)問題之一。如果說七橋在今天很流行的話,那么每天步行過橋已經(jīng)成為當(dāng)?shù)厝朔浅A餍泻陀腥さ南卜绞?。但在相?dāng)長的一段時間里,沒有人能解決這個問題。
29歲的尤拉發(fā)表了論文《科尼斯伯格的七座橋》,成功地解決了這個問題,開創(chuàng)了數(shù)學(xué)的一個新分支——圖論。
Euler巧妙地將過橋問題轉(zhuǎn)化為上圖中的一筆畫問題,很快他判斷不可能一次不重復(fù)地穿過科尼斯堡的七座橋。也就是說,多年來,無數(shù)人試圖發(fā)現(xiàn)的不重復(fù)路線根本不存在。
一個被稱為最傷腦筋、困擾無數(shù)人的問題,其實是最簡單的答案。
本文對七橋問題進行了歐拉抽象,得到了歐拉循環(huán)關(guān)系:
要使一個圖成為一個筆劃,必須滿足以下兩個條件:1。必須連接圖形。2圖中“奇點”的數(shù)目是0或2。(如果連到一個點上的數(shù)字是奇數(shù),就叫做奇點)
簡單點說,歐拉就是天才,把一道著名的經(jīng)典數(shù)學(xué)題簡化成小學(xué)生的習(xí)題,寫進小學(xué)課本,這就叫“七橋題”。
七橋問題是圖論中的第一個問題,但圖論中最著名、最富有成果的問題是四色問題:“我們能不能只用四種顏色給所有的地圖著色,使任何兩個相鄰的區(qū)域都有不同的顏色?”四色問題異常困難。到目前為止,100多年過去了,它只能通過計算機來驗證。
四色定理是第一個被計算機驗證的著名數(shù)學(xué)定理。
從小學(xué)生習(xí)題的引入到四色難題的解決,圖論得到了迅速的發(fā)展和廣泛的應(yīng)用,甚至成為計算機科學(xué)中最重要、最有趣的領(lǐng)域之一。
歐拉被公認為圖論的奠基人。
特別罕見的是,在1735年,即七橋問題解決的前一年,歐拉發(fā)了幾乎致命的高燒。在接下來的三年里,他的右眼幾乎失明。弗雷德里克稱他為“獨眼巨人”。
成為“獨眼巨人”后,歐拉仍然是最勤奮的天才。
哈密頓回路的算法是怎樣的?
基本圖算法寬度優(yōu)先遍歷深度優(yōu)先遍歷拓撲排序割邊割點強連通分量tarjan算法雙連通分量強連通分支及其收縮點圖割邊割點最小割模型,網(wǎng)絡(luò)流協(xié)議2-Sat問題Euler循環(huán)哈密頓循環(huán)最小生成樹prim算法Kruskal算法(稀疏圖)sollin算法次最小生成樹K最小生成樹最優(yōu)比例生成最小樹圖最小度極限生成樹平面點歐氏最小生成樹平面點曼哈頓最小生成樹最小平衡生成樹最短點路徑有向無環(huán)圖最短路徑拓撲排序非負權(quán)圖最短路徑gtdijkstra算法(可采用二進制堆優(yōu)化)與負權(quán)圖最短路徑gtbellmanford算法與負權(quán)圖最短路徑gtspfa算法(SPFA在稠密負權(quán)圖中的效率)圖不如Bellman-Ford)全源最短路徑Freud算法Floyd全源最短路徑Johnson算法次最短路徑K最短路徑微分約束系統(tǒng)平面點對最短路徑(優(yōu)化)雙標準約束最短路徑最大流增廣路徑>ford-Fulkerson算法預(yù)推flow-dinic算法有上下界最小割>stoer-Wagner算法有向圖和無向圖邊不相交路徑Ford-Fulkerson疊加算法最小代價最大流匹配負代價匈牙利算法最小點覆蓋最小路徑覆蓋最大獨立集問題二部圖的最優(yōu)完全匹配Kuhn-munkras算法非加權(quán)二部匹配匈牙利算法加權(quán)二部匹配km算法最大基數(shù)匹配一般圖的權(quán)匹配一般圖的拓撲排序字符串圖的穩(wěn)定聯(lián)姻問題