定義演算法的人
Ⅰ 有沒有做演算法的人最短路徑樹SPT有哪些演算法
IP 組播技術實現了 IP 網路中點到多點的高效數據傳送。因為組播能夠有效地節約網路帶寬、降低網路負載,所以在實時數據傳送、多媒體會議、數據拷貝、游戲和模擬等諸多方面都有廣泛的應用。本文介紹了組播的基本概念和目前通用的組播協議,以及組播組網的基本方案;並針對組播業務需求和運營過程中面臨的問題,提出了電信級的可運營、可管理的「受控組播」解決方案,包括信源管理、用戶管理和組播安全控制等方面的內容。
關鍵詞
組播 運營管理 受控組播 IGMP DVMRP PIM-SM PIM-DM MBGP MSDP
1 組播概述
1.1組播技術的產生原因
傳統的IP通信有兩種方式:第一種是在一台源 IP 主機和一台目的 IP 主機之間進行,即單播(unicast);第二種是在一台源 IP 主機和網路中所有其它的 IP 主機之間進行,即廣播(broadcast)。如果要將信息發送給網路中的多個主機而非所有主機,則要麼採用廣播方式,要麼由源主機分別向網路中的多台目標主機以單播方式發送 IP 包。採用廣播方式實現時,不僅會將信息發送給不需要的主機而浪費帶寬,也可能由於路由回環引起嚴重的廣播風暴;採用單播方式實現時,由於 IP 包的重復發送會白白浪費掉大量帶寬,也增加了伺服器的負載。所以,傳統的單播和廣播通信方式不能有效地解決單點發送多點接收的問題。
IP 組播是指在 IP 網路中將數據包以盡力傳送(best-effort)的形式發送到網路中的某個確定節點子集,這個子集稱為組播組(multicast group)。IP 組播的基本思想是,源主機只發送一份數據,這份數據中的目的地址為組播組地址;組播組中的所有接收者都可接收到同樣的數據拷貝,並且只有組播組內的主機(目標主機)可以接收該數據,網路中其它主機不能收到。組播組用 D 類 IP 地址(224.0.0.0 ~ 239.255.255.255)來標識。
1.2組播技術的市場前景
IP 組播技術有效地解決了單點發送多點接收的問題,實現了 IP 網路中點到多點的高效數據傳送,能夠大量節約網路帶寬、降低網路負載。作為一種與單播和廣播並列的通信方式,組播的意義不僅在於此。更重要的是,可以利用網路的組播特性方便地提供一些新的增值業務,包括在線直播、網路電視、遠程教育、遠程醫療、網路電台、實時視頻會議等互聯網的信息服務領域。
組播從 1988 年提出到現在已經經歷了十幾年的發展,許多國際組織對組播的技術研究和業務開展進行了大量的工作。隨著互聯網建設的迅猛發展和新業務的不斷推出,組播也必將走向成熟。盡管目前端到端的全球組播業務還未大規模開展起來,但是具備組播能力的網路數目在增加。一些主要的 ISP 已運行域間組播路由協議進行組播路由的交換,形成組播對等體。在 IP 網路中多媒體業務日漸增多的情況下,組播有著巨大的市場潛力,組播業務也將逐漸得到推廣和普及。
2 組播技術的基本原理
組播技術涵蓋的內容相當豐富,從地址分配、組成員管理,到組播報文轉發、路由建立、可靠性等諸多方面。下面首先介紹組播協議體系的整體結構,之後從組播地址、組播成員管理、組播報文轉發、域內組播路由和域間組播路由等幾個方面介紹有代表性的協議和機制。
2.1組播協議體系結構
根據協議的作用范圍,組播協議分為主機-路由器之間的協議,即組播成員管理協議,以及路由器-路由器之間協議,主要是各種路由協議。組成員關系協議包括 IGMP(互連網組管理協議);組播路由協議又分為域內組播路由協議及域間組播路由協議兩類。域內組播路由協議包括 PIM-SM、PIM-DM、DVMRP 等協議,域間組播路由協議包括 MBGP、MSDP 等協議。同時為了有效抑制組播數據在二層網路中的擴散,引入了 IGMP Snooping 等二層組播協議。
通過 IGMP 和二層組播協議,在路由器和交換機中建立起直聯網段內的組成員關系信息,具體地說,就是哪個介面下有哪個組播組的成員。域內組播路由協議根據 IGMP 維護的這些組播組成員關系信息,運用一定的組播路由演算法構造組播分發樹,在路由器中建立組播路由狀態,路由器根據這些狀態進行組播數據包轉發。域間組播路由協議根據網路中配置的域間組播路由策略,在各自治系統(AS,Autonomous System)間發布具有組播能力的路由信息以及組播源信息,使組播數據能在域間進行轉發。
2.2組播地址機制
2.2.1組播IP地址
IP組播地址用於標識一個 IP 組播組。IANA 把 D 類地址空間分配給組播使用,范圍從 224.0.0.0 到 239.255.255.255。如下圖所示(二進製表示),IP 組播地址前四位均為「1110」。
2.2.2組播地址的劃分
整個 IP 組播地址的空間劃分如下圖所示。
其中:
224.0.0.0 到 224.0.0.255 地址范圍被 IANA 預留,地址 224.0.0.0 保留不做分配,其它地址供路由協議及拓撲查找和維護協議使用。該范圍內的地址屬於局部范疇,不論生存時間欄位(TTL)值是多少,都不會被路由器轉發;
224.0.1.0 到 238.255.255.255 地址范圍作為用戶組播地址,在全網范圍內有效。其中233/8 為 GLOP 地址。GLOP 是一種自治系統之間的組播地址分配機制,將 AS 號直接填入組播地址的中間兩個位元組中,每個自治系統都可以得到 255 個組播地址;
239.0.0.0 到 239.255.255.255 地址范圍為本地管理組播地址(***istratively scoped addresses),僅在特定的本地范圍內有效。
當 IP 層收到組播數據報文時,根據組播目的地址查找組播轉發表,對報文進行轉發。
2.2.3IP 組播地址到 MAC 地址的映射
IANA 將 MAC 地址范圍 01:00:5E:00:00:00 ~ 01:00:5E:7F:FF:FF 分配給組播使用,這就要求將28位的 IP 組播地址空間映射到 23 位的 MAC 地址空間中,具體的映射方法是將組播地址中的低 23 位放入 MAC 地址的低 23 位,如下圖所示。
由於 IP 組播地址的後 28 位中只有 23 位被映射到 MAC 地址,這樣會有 32 個 IP 組播地址映射到同一 MAC 地址上。
2.3組播成員管理
2.3.1IGMP ( Internet Group Management Protocol )
IGMP 協議運行於主機和與主機直接相連的組播路由器之間,IGMP 實現的功能是雙向的:一方面,通過 IGMP 協議,主機通知本地路由器希望加入並接收某個特定組播組的信息;另一方面,路由器通過 IGMP 協議周期性地查詢區域網內某個已知組的成員是否處於活動狀態(即該網段是否仍有屬於某個組播組的成員),實現所連網路組成員關系的收集與維護。通過 IGMP,在路由器中記錄的信息是某個組播組是否在本地有組成員,而不是組播組與主機之間的對應關系。
到目前為止,IGMP 有三個版本。IGMPv1(RFC1112)中定義了基本的組成員查詢和報告過程;目前通用的是 IGMPv2,由 RFC2236 定義,在 IGMPv1 的基礎上添加了組成員快速離開的機制;IGMPv3 中增加的主要功能是成員可以指定接收或指定不接收某些組播源的報文。以下著重介紹 IGMPv2 協議的原理。
IGMPv2 的原理如下圖所示:
當同一個網段內有多個組播路由器時,IGMPv2 通過查詢器選舉機制從中選舉出唯一的查詢器。查詢器周期性地發送通用組查詢消息進行成員關系查詢;主機發送報告消息來響應查詢。主機發送報告消息的時間有隨機性,當檢測到同一網段內有其它成員發送同樣的消息時,則抑制自己的響應報文。如果有新的主機要加入組播組,不必等待查詢器的查詢消息,而是主動發送報告消息。當要離開組播組時,主機發送離開組消息;收到離開組消息後,查詢器發送特定組查詢消息來確定是否所有組成員都已離開。對於作為組成員的路由器而言,其行為和普通的主機一樣,響應其它路由器的查詢。
通過上述機制,在組播路由器里建立起一張表,其中記錄了路由器的各個介面所對應的子網上都有哪些組的成員。當路由器接收到某個組 G 的數據報文後,只向那些有 G 的成員的介面上轉發數據報文。至於數據報文在路由器之間如何轉發則由路由協議決定,不是 IGMP 協議的功能。
2.3.2二層環境中組成員管理的實現
IGMP 組播成員管理機制是針對第三層設計的,在第三層,路由器可以對組播報文的轉發進行控制,只要進行適當的介面配置和對 TTL 值的檢測就可以了。但是在很多情況下,組播報文要不可避免地經過一些二層交換設備,尤其是在區域網環境里。如果不對二層設備進行相應的配置,則組播報文就會轉發給二層交換設備的所有介面,這顯然會浪費大量的系統資源。IGMP 監聽(IGMP Snooping)可以解決這個問題。
IGMP 監聽的工作原理如下:
主機發出 IGMP 成員報告消息,這個消息是給路由器的;在 IGMP 成員報告經過交換機時,交換機對這個消息進行監聽並記錄下來,形成組成員和介面的對應關系;
交換機在收到組播數據報文時,根據組成員和介面的對應關系,僅向具有組成員的介面轉發組播報文。
IGMP 監聽可以解決二層環境中的組播報文泛濫問題,但要求交換機具有提取第三層信息的功能;其次,要求交換機對所有的組播報文進行監聽和解讀,這會產生很多的無效工作;此外,組播報文監聽和解讀工作也會佔用大量的 CPU 處理時間。
2.4組播報文轉發
與單播報文的轉發相比,組播報文的轉發相對復雜。一方面,組播路由類型與單播路由不同,是點到多點的一棵路由樹;另一方面組播報文轉發的處理過程也有所不同。
2.4.1組播路由的分類
組播路由可以分為兩大類:信源樹(Source Tree)和共享樹(Shared Tree)。信源樹是指以組播源作為樹根,將組播源到每一個接收者的最短路徑結合起來構成的轉發樹。由於信源樹使用的是從組播源到接收者的最短路徑,因此也稱為最短路徑樹(shor*** path tree,SPT)。對於某個組,網路要為任何一個向該組發送報文的組播源建立一棵樹。 共享樹以某個路由器作為路由樹的樹根,該路由器稱為匯集點(Rendezvous Point,RP),將 RP 到所有接收者的最短路結合起來構成轉發樹。使用共享樹時,對應某個組,網路中只有一棵樹。所有的組播源和接收者都使用這棵樹來收發報文,組播源先向樹根發送數據報文,之後報文又向下轉發到達所有的接收者。
信源樹的優點是能構造組播源和接收者之間的最短路徑,使端到端的延遲達到最小;但是付出的代價是,在路由器中必須為每個組播源保存路由信息,這樣會佔用大量的系統資源,路由表的規模也比較大。共享樹的最大優點是路由器中保留的狀態數可以很少,缺點是組播源發出的報文要先經過 RP,再到達接收者,經由的路徑通常並非最短,而且對 RP 的可靠性和處理能力要求很高。
2.4.2組播報文轉發過程
單播報文的轉發過程中,路由器並不關心組播源地址,只關心報文中的目的地址,通過目的地址決定向哪個介面轉發。在組播中,報文是發送給一組接收者的,這些接收者用一個邏輯地址標識。路由器在接收到報文後,必須根據源和目的地址確定出上游(指向組播源)和下遊方向,把報文沿著遠離組播源的方向進行轉發。這個過程稱作 RPF(Reverse Path Forwarding,逆向路徑轉發)。
RPF 執行過程中會用到原有的單播路由表以確定上游和下游的鄰接結點。只有當報文是從上游鄰接結點對應的介面(稱作 RPF 介面)到達時,才向下游轉發。RPF 的作用除了可以正確地按照組播路由的配置轉發報文外,還能避免由於各種原因造成的環路,環路避免在組播路由中是一個非常重要的問題。RPF 的主體是 RPF 檢查,路由器收到組播報文後,先對報文進行 RPF 檢查,只有檢查通過才轉發,否則丟棄。RPF 檢查過程如下:
1)路由器在單播路由表中查找組播源或 RP 對應的 RPF 介面(當使用信源樹時,查找組播源對應的 RPF 介面,使用共享樹時查找 RP 對應的 RPF 介面),某個地址對應的 RPF 介面是指從路由器向該地址發送報文時的出介面;
2)如果組播報文是從 RPF 介面接收下來的,則 RPF 檢查通過,報文向下游介面轉發;
3)否則,丟棄該報文。
2.5域內組播路由協議
與單播路由一樣,組播路由也分為域內和域間兩大類。域內組播路由目前已經討論的相當成熟,在眾多的域內路由協議中,DVMRP(距離矢量組播路由協議)、PIM-DM(密集模式協議無關組播)和PIM-SM(稀疏模式協議無關組播)是目前應用最多的協議。
2.5.1DVMRP(Distance Vector Multicast Routing Protocol)
DVMRP 是第一個在 MBONE 上得到普遍使用的組播路由協議,它在 RIP 協議的基礎上擴充了支持組播的功能。DVMRP 協議首先通過發送探測消息來進行鄰居發現,之後通過路由交換來進行單播尋徑和確定上下游依賴關系。
DVMRP 採用逆向路徑組播(RPM)演算法進行組播轉發。當組播源第一次發送組播報文時,使用截斷逆向路徑組播(truncated RPM)演算法沿著源的組播分發樹向下轉發組播報文。當葉子路由器不再需要組播數據包時,它朝著組播源發送剪枝消息,對組播分發樹進行剪枝,藉此除不必要的通信量。上游路由器收到剪枝消息後將收到此消息的介面置為剪枝狀態,停止轉發數據。剪枝狀態關聯著超時定時器,當定時器超時時,剪枝狀態又重新變為轉發狀態,組播數據再次沿著這些分支流下。另外,當剪枝區域內出現了組播組成員時,為了減少反應時間,下游不必等待上游剪枝狀態超時,而是主動向上游發送嫁接報文,以使剪枝狀態變為轉發狀態。可見,DVMRP 是由數據觸發驅動,建立組播路由表,而路由樹的建立過程可以概括為「擴散與剪枝」(Broadcast and Prune)。轉發特點可以概括為「被動接受,主動退出」。
另外,在多路訪問網路中,當有兩個或多個的組播路由器時,網路上可能會重復轉發包。為了防止這種情況出現,在多路訪問網路上,DVMRP 為每個源選擇了一個唯一的轉發器。
2.5.2PIM-DM(Protocol Independent Multicast Dense Mode)
在 PIM-DM 域中,運行 PIM-DM 協議的路由器周期性的發送 Hello 消息,發現鄰接的 PIM 路由器,進行葉子網路、葉子路由器的判斷,並且負責在多路訪問網路中選舉指定路由器(DR)。
PIM-DM 協議使用下面的假設:當組播源開始發送組播數據時,域內所有的網路節點都需要接收數據,因此採用「擴散-剪枝」的方式進行組播數據包的轉發。組播源開始發送數據時,沿途路由器向除組播源對應的 RPF 介面之外的所有介面轉發組播數據包。這樣,PIM-DM 域中所有網路節點都會收到這些組播數據包。為了完成組播轉發,沿途的路由器需要為組 G 和源 S 創建相應的組播路由項 (S, G)。 (S, G) 路由項包括組播源地址、組播組地址、入介面、出介面列表、定時器和標志等。
如果網路中某區域沒有組播組成員,該區域內的路由器會發送剪枝消息,將通往該區域的轉發介面剪枝,並且建立剪枝狀態。剪枝狀態對應著超時定時器。當定時器超時時,剪枝狀態又重新變為轉發狀態,組播數據得以再次沿著這些分支流下。另外,剪枝狀態包含組播源和組播組的信息。當剪枝區域內出現了組播組成員時,為了減少反應時間,協議不必等待上游剪枝狀態超時,而是主動向上游發送嫁接報文,以使剪枝狀態變為轉發狀態。
2.5.3PIM-SM(Protocol Independent Multicast Sparse Mode)
在 PIM-SM 域中,運行 PIM-SM 協議的路由器周期性的發送 Hello 消息,用以發現鄰接的 PIM 路由器,並且負責在多路訪問網路中進行 DR 的選舉。這里,DR 負責為與其直連的組成員向組播樹根節點的方向發送「加入/剪枝」消息,或是將直連組播源的數據發向組播分發樹。
PIM-SM 通過建立組播分發樹來進行組播數據包的轉發。組播分發樹分為兩種:以組 G 的 RP 為根的共享樹和以組播源為根的最短路徑樹。PIM-SM 通過顯式的加入/剪枝機制來完成組播分發樹的建立與維護。
PIM-SM 中還涉及到 RP 的選擇機制。在 PIM-SM 域內配置了一個或多個候選自舉路由器(Candidate-BSR)。使用一定的規則從中選出自舉路由器 (BSR) 。PIM-SM 域中還配置有候選 RP 路由器(Candidate-RP),這些候選 RP 將包含了它們地址及可以服務的組播組等信息的報文單播發送給自舉路由器,再由 BSR 定期生成包括一系列候選 RP 以及相應的組地址的「自舉」消息。「自舉」消息在整個域中逐跳發送。路由器接收並保存這些「自舉」消息。若 DR 從直連主機收到了 IGMP 加入報文後,如果它沒有這個組的路由項,將使用 hash 演算法將組地址映射到一個候選 RP。然後朝 RP 方向逐跳組播「加入/剪枝」消息。若 DR 從直連主機收到組播數據包,如果它沒有這個組的路由項,也將使用 hash 演算法將組地址映射到一個候選 RP,然後將組播數據封裝在注冊消息中單播發送到 RP。
在多路訪問網路中,PIM-SM 還引入了以下機制:使用斷言機制選舉唯一的轉發者,以防向同一網段重復轉發組播數據包;使用加入/剪枝抑制機制減少冗餘的加入/剪枝消息;使用剪枝否決機制否決不應有的剪枝行為。
2.6域間組播路由協議
域間組播目前仍然處於研究和試驗階段,目前比較成型的解決方案是下面三個協議的組合:
MBGP(組播邊界網關協議),用於在自治域之間交換組播路由信息;MSDP(組播信源發現協議),用於在 ISP 之間交換組播信源信息;PIM-SM,用作域內的組播路由協議。
PIM-SM 前文已經介紹,這里重點介紹 MBGP 和 MSDP,以及 PIM-SM / MBGP / MSDP 組合方案的工作過程。
2.6.1MBGP(MultiProtocol Border Gateway Protocol)
域間路由的首要問題是路由信息(或者說可達信息)如何在自治系統之間傳遞,由於不同的 AS 可能屬於不同的運營商,因此除了距離信息外,域間路由信息必須包含運營商的策略,這是與域內路由信息的不同之處。
目前使用最多的域間單播路由協議是 BGP-4。為了實現域間組播路由信息的傳遞,必須對 BGP 進行改動,因為組播的網路拓撲和單播拓撲有可能不同。這里既有物理方面的原因,也有策略方面的原因。網路中的一些路由器可能只支持單播不支持組播,也可能按照策略配置不轉發組播報文。為了構造域間組播路由樹,除了要知道單播路由信息外,還要知道網路中哪些部分是支持組播的,即組播的網路拓撲情況。簡而言之,域間的組播路由信息交換協議應該滿足下面的要求:
能對單播和組播拓撲進行區分;
有一套穩定的對等和策略控制方法。
BGP-4 已經滿足後一個條件,而且已經被證明是一個有效的、穩定的單播域間路由協議,因此合理的解決方案是對 BGP-4 協議進行增強和擴展,而不是構建一套全新的協議。在 RFC2858 中規定了對 BGP 進行多協議擴展的方法,擴展後的 BGP 協議(MBGP,也寫作 BGP-4+)不僅能攜帶 IPv4 單播路由信息,也能攜帶其它網路層協議(如組播、IPv6 等)的路由信息,攜帶組播路由信息只是其中一個擴展功能。
有了 MBGP 之後,單播和組播路由信息可以通過同一個進程交換,但是存放在不同的路由表裡。由於 MBGP 是 BGP-4 協議的一個增強版,因此 BGP-4 所支持的常見的策略和配置方法都可以用到組播里。
2.6.2MSDP(Multicast Source Discovery Protocol)
對於 ISP 來說,不希望依靠競爭對手的 RP 轉發組播流量,但同時又要求無論信源的 RP 在哪裡,都能從信源獲取信息發給自己內部的成員。MSDP 就是為了解決這個問題而提出的。在 MSDP 里使用的是域間信源樹而不是公共樹,而且要求域內組播路由協議必須是 PIM-SM。
在 MSDP 中,某個域內的 RP 使用 TCP 連接與其它域內的 RP 建立 MSDP 對等關系,用這些對等關系交換信源信息。如果本地的接收者要接收其它域的信源發出的報文,則使用與 PIM-SM 中同樣的方法構造信源樹。
PIM-SM / MBGP / MSDP 組合方案實際上是 PIM-SM 協議在域間環境下的擴展。如果把整個 PIM-SM / MBGP / MSDP 組合方案機制看作 PIM-SM,則所有域的 RP 的集合就是 PIM-SM 協議中的「RP」,而 PIM-SM / MBGP / MSDP 無非是增加了兩個過程:
1、信源信息在 RP 集合中的泛濫,以實現信源和成員在「RP」點的會合;
2、域間組播路由信息的傳遞,目的是保證組播報文在域間的順利轉發。在上述過程中,AS3 中的 RP 和收端向 AS2 中的遠端建立逆向路徑的過程中都需要用到 MBGP 傳遞的組播拓撲信息。
Ⅱ 演算法的概念
演算法是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。
一個演算法應該具有以下七個重要的特徵: 演算法可以使用自然語言、偽代碼、流程圖等多種不同的方法來描述。
1、有窮性
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
2、確切性
演算法的每一步驟必須有確切的定義;
3、輸入項
一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
4、輸出項
一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性
演算法中執行的任何計算步都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性);
6、 高效性
執行速度快,佔用資源少;
7、 健壯性
對數據響應正確。 計算機科學家尼克勞斯-沃思曾著過一本著名的書《數據結構十演算法= 程序》,可見演算法在計算機科學界與計算機應用界的地位。
Ⅲ 演算法的要素是什麼演算法的特徵是什麼
一、演算法的要素包括:
1、數據對象的操作和操作:計算機可以執行的基本操作以指令的形式描述。
2、演算法的控制結構:演算法的功能結構不僅取決於所選的操作,還取決於操作之間的執行順序。
二、演算法的特徵如下:
1、有窮性:演算法的有窮性意味著演算法在執行有限的步驟之後必須能夠終止。
2、確切性:演算法的每一步都必須確切定義。
3、輸入項:一個演算法有0個或多個輸入來描述操作對象的初始條件。所謂的零輸入是指由演算法本身決定的初始條件。
4、輸出項:一個演算法有一個或多個輸出來反映處理輸入數據的結果。沒有輸出的演算法毫無意義。
5、可行性:演算法中執行的任何計算步驟都可以分解為基本的可執行操作步驟,即每個計算步驟都可以在有限的時間內完成。
(3)定義演算法的人擴展閱讀:
演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法,厄米變形模型,隨機森林演算法。
描述演算法的方法有多種,常用的有自然語言、結構化流程圖、偽代碼和PAD圖等,其中最普遍的是流程圖。
隨著計算機的發展,演算法在計算機方面已有廣泛的發展及應用,如用隨機森林演算法,來進行頭部姿勢的估計,用遺傳演算法來解決彈葯裝載問題,信息加密演算法在網路傳輸中的應用,並行演算法在數據挖掘中的應用等。
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
特徵
一個演算法應該具有以下五個重要的特徵:
有窮性
(Finiteness)
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;
確切性
(Definiteness)
演算法的每一步驟必須有確切的定義;
輸入項
(Input)
一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
輸出項
(Output)
一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
可行性
(Effectiveness)
演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步驟,即每個計算步驟都可以在有限時間內完成(也稱之為有效性)。
在C語言中的應用,常使用貪心,回溯,動態規劃,排序等各種演算法。
Ⅳ 演算法的歷史
「演算法」即演演算法的大陸中文名稱出自《周髀算經》;而英文名稱Algorithm 來自於9世紀波斯數學家al-Khwarizmi,因為al-Khwarizmi在數學上提出了演算法這個概念。「演算法」原為algorism,意思是阿拉伯數字的運演算法則,在18世紀演變為algorithm。歐幾里得演算法被人們認為是史上第一個演算法。 第一次編寫程序是Ada Byron於1842年為巴貝奇分析機編寫求解伯努利方程的程序,因此Ada Byron被大多數人認為是世界上第一位程序員。因為查爾斯·巴貝奇(Charles Babbage)未能完成他的巴貝奇分析機,這個演算法未能在巴貝奇分析機上執行。 因為well-defined procere缺少數學上精確的定義,19世紀和20世紀早期的數學家、邏輯學家在定義演算法上出現了困難。20世紀的英國數學家圖靈提出了著名的圖靈論題,並提出一種假想的計算機的抽象模型,這個模型被稱為圖靈機。圖靈機的出現解決了演算法定義的難題,圖靈的思想對演算法的發展起到了重要作用。
Ⅵ C語言中「演算法」的定義是什麼
演算法 Algorithm
演算法是在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程序,都是在實施某種演算法。前者是推理實現的演算法,後者是操作實現的演算法。
一個演算法應該具有以下五個重要的特徵:
1、有窮性: 一個演算法必須保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。