日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀] 當(dāng)你使用搜索引擎(例如Google Chrome、Mozilla Firefox等)的時候,后臺發(fā)生了什么?當(dāng)你詢問虛擬助手(例如Alexa、Google助手或Siri)的時候,后臺發(fā)生了什么?它

當(dāng)你使用搜索引擎(例如Google Chrome、Mozilla Firefox等)的時候,后臺發(fā)生了什么?當(dāng)你詢問虛擬助手(例如Alexa、Google助手或Siri)的時候,后臺發(fā)生了什么?它們怎么會知道答案?為何它們會顯示正確答案?所有這些都要感謝算法。

每當(dāng)你使用手機(jī)、計算機(jī)、筆記本電腦或計算器時,其實都在使用算法。

那么,什么是算法?

如果你想做數(shù)學(xué)運算,比如說兩個數(shù)字相乘(不使用任何電子設(shè)備),那么你需要在紙上做乘法。你按照一定的規(guī)則獲得正確的答案。你也可以使用耗時更少的方法來做計算。這就是算法。

算法是為執(zhí)行特定的任務(wù)而設(shè)計的一組指令。

有些算法很簡單,而有些則非常復(fù)雜,具體取決于你要實現(xiàn)的目標(biāo)。

算法的歷史

了解歷史總是有好處,因為歷史可以幫助你更好地理解主題,并了解何時使用這些知識。

“算法”一詞源自九世紀(jì)波斯數(shù)學(xué)家Muhammad Ibn Musa Al-Khwarizmi(代數(shù)之父),拉丁語為Algoritmi。最初算法被稱為Algorismus。15世紀(jì)后期,改名為Algorithmus(源自希臘語Arithmetic)?,F(xiàn)代英語中的Algorithm一詞是于19世紀(jì)引入的。

算法在中國古代文獻(xiàn)中稱為“術(shù)”,最早出現(xiàn)在《周髀算經(jīng)》、《九章算術(shù)》。特別是《九章算術(shù)》,給出四則運算、最大公約數(shù)、最小公倍數(shù)、開平方根、開立方根、求素數(shù)的埃拉托斯特尼篩法,線性方程組求解的算法。三國時代的劉徽給出求圓周率的算法:劉徽割圓術(shù)。


1842年,Ada Lovelace首次編寫了計算引擎的算法,因此許多人常常稱她為世界上第一位計算機(jī)程序員。她為巴貝奇分析機(jī)(自動計算的機(jī)械計算機(jī))編寫了求解伯努利微分方程的算法(巴貝奇分析機(jī)由計算機(jī)之父Charles Babbage開發(fā))。


1936年,Alan Turing的圖靈機(jī)首次提出了第一個以現(xiàn)代形式表示的算法。


如何表達(dá)算法?

表達(dá)算法的方法多種多樣,例如自然語言、偽代碼、流程圖、編程語言、動態(tài)圖表、控制表等等。

使用自然語言表達(dá)算法不夠清晰,因此很少用于復(fù)雜或技術(shù)算法。偽代碼、流程圖、drakon圖和控制表是表達(dá)算法的結(jié)構(gòu)化方法,因為與自然語言相比,它們可以避免許多歧義。編程語言旨在以可由計算機(jī)執(zhí)行的形式表達(dá)算法。

在計算機(jī)系統(tǒng)中,算法是由軟件開發(fā)人員以他們選擇的任何編程語言編寫的邏輯。但是,在設(shè)計算法時,我們需要記住一些規(guī)則。其中包括:

輸入:算法至少需要一個或多個輸入值。如果沒有給出輸入,那么算法將產(chǎn)生什么輸出呢? 輸出:算法至少應(yīng)產(chǎn)生一個輸出。如果沒有產(chǎn)生任何結(jié)果,則無需設(shè)計算法。 效率:算法應(yīng)該保證高效利用計算和內(nèi)存資源。產(chǎn)生的輸出應(yīng)該又正確又快。 簡單性:算法不應(yīng)過于復(fù)雜。 可擴(kuò)展性:算法必須能夠在不更改核心邏輯的情況下進(jìn)行擴(kuò)展。 有限性:算法必須在有限步驟后終止。假設(shè)輸入錯誤的情況下,算法在第一步就終止,我們將永遠(yuǎn)無法得知算法有什么問題。而且,算法也不能陷入無限循環(huán)。 不依賴于編程語言:算法必須與語言無關(guān),也就是說,它必須是可以用任何一種語言都可以實現(xiàn)的簡單指令,但是無論任何語言,輸出都應(yīng)當(dāng)相同。

下面,我們來構(gòu)建一個簡單的算法:兩個數(shù)字的加法(且滿足上述要求)。

第1步:開始; 第2步:聲明變量num1,num2和sum; 第3步:讀取值num1和num2; 第4步:將num1和num2相加,然后將值賦給sum。 第5步:顯示和; 第6步:停止。

下面,為了測試這個算法,我們使用一種編程語言來實現(xiàn)它,我選擇用Java語言來實現(xiàn),你可以任意選擇其他語言。

public class Addition { public static void main(String[] args) { int num1, num2, sum; Scanner sc = new Scanner(System.in); System.out.println(“Enter First Number: “); num1 = sc.nextInt; System.out.println(“Enter Second Number: “); num2 = sc.nextInt; sc.close; sum = num1 + num2; System.out.println(“Sum of two numbers: “+sum); } }

輸出如下:

我們的算法運作良好,且滿足上述要求。

算法必須高效。算法的效率取決于時間和空間。一個好的算法占用的時間更少,占用的空間也更少,我們無法時刻兼顧兩者。如果減少時間,則則空間可能會增加,反之亦然。因此,我們必須妥協(xié)一方。算法的空間復(fù)雜度表示算法運行時占用或需要的總空間。時間復(fù)雜度是指算法花完成任務(wù)所需的操作數(shù)。以最少操作數(shù)執(zhí)行任務(wù)的算法就是最有效的算法。此外,算法花費的時間還取決于計算機(jī)的計算速度,但是在我們考慮算法的效率率時,通常不會考慮這些外部因素。衡量算法效率的一種方法是測量算法在不同輸入下找到答案所需的操作次數(shù)。


算法的種類

遞歸算法:通過重復(fù)將問題分解為同類的子問題而解決問題。 分治算法:把一個復(fù)雜的問題分成兩個或更多的相同或相似的子問題,直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。 動態(tài)規(guī)劃算法(又名動態(tài)優(yōu)化算法):記住過去的結(jié)果,以備將來使用。與分治算法相似,這種算法可以將復(fù)雜的問題分解相對簡單的子問題,然后將解決方案保存起來,以便下次需要同一個子問題解之時直接使用,而無需再次重新計算。 貪婪算法:在每一步選擇中都采取在當(dāng)前狀態(tài)下最好或最優(yōu)(即最有利)的選擇,從而希望得出結(jié)果是最好或最優(yōu)的算法。該算法不能保證最終獲得最佳解決方案。 暴力算法:簡單明了,嘗試所有的可能性,直到找到滿意的解決方案為止。 回溯算法:嘗試分步地去解決一個問題。如果發(fā)現(xiàn)其中某一步的解決方案失敗,則后退一步或幾步,重新開始尋找解決方案。


如今,幾乎每個領(lǐng)域都使用算法,例如數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、農(nóng)業(yè)、科學(xué)、運輸?shù)取K惴ㄊ敲總€應(yīng)用程序(Google Chrome與Mozilla Firefox、Uber與Ola)最大的不同之處,例如Google Chrome和Mozilla Firefox都是搜索引擎應(yīng)用程序,它們提供相同的結(jié)果,但是結(jié)果的順序有所不同,這是因為二者使用了不同的排序算法。Google的排序算法與Firefox不同。

算法無處不在,并將繼續(xù)傳播,算法讓我們的生活更加輕松,但我們還需要考慮一些問題,例如,

當(dāng)有一天數(shù)據(jù)和預(yù)測模型統(tǒng)治世界,那么我們就會喪失人性和判斷力。 隨著更智能、更高效的算法逐步取代許多的人類活動,失業(yè)人數(shù)將上升。

21世紀(jì),算法就像魔術(shù)一樣,我們可以解釋其背后的原理以及如何創(chuàng)建網(wǎng)絡(luò)等,卻無法機(jī)械地解釋為什么這些算法會產(chǎn)生特定的輸出。而這僅僅是個開始。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉