什麼是計算機演算法,它們是如何工作的?

除非你對數學或程式設計感興趣,否則“演算法”這個詞對你來說可能是希臘語,但它是你用來閱讀本文的所有東西的組成部分之一。這裡有一個快速的解釋,他們是什麼,以及如何工作。...

什麼是計算機演算法,它們是如何工作的?

除非你對數學或程式設計感興趣,否則“演算法”這個詞對你來說可能是希臘語,但它是你用來閱讀本文的所有東西的組成部分之一。這裡有一個快速的解釋,他們是什麼,以及如何工作。

免責宣告:我不是一個數學或電腦科學老師,所以不是所有的術語我使用的技術。那是因為我試圖用通俗易懂的英語解釋一切,因為人們對數學不太熟悉。也就是說,其中涉及到一些數學問題,這是不可避免的。數學極客們,請隨意在評論中糾正或更好地解釋,但請對我們當中不喜歡數學的人保持簡單。

Ian Ruotsala圖片

什麼是演算法?

“演算法”一詞的詞源與“代數”相似,只是它指的是阿拉伯數學家阿爾·赫瓦里茲米(al-Khwarizmi)(只是一個有趣的小道訊息)。對於我們當中的非程式設計師來說,演算法是一組指令,它們接受輸入a,並提供輸出B,以某種方式改變所涉及的資料。演算法有著廣泛的應用。在數學方面,它們可以幫助從資料集中的點計算函式,還有更高階的東西。除了在程式設計本身中使用之外,它們在檔案壓縮和資料加密等方面也發揮著重要作用。

一套基本的指令

假設你的朋友在一家雜貨店和你見面,你引導他走向你。你說“從右邊的門進來”、“從左邊的魚區過去”和“如果你看到牛奶場,你就從我身邊過去”之類的話。演算法就是這樣工作的。我們可以使用流程圖來說明基於我們提前知道或在過程中發現的標準的說明。

什麼是計算機演算法,它們是如何工作的?

(圖片標題為“破冰常規”編輯:由觸發器和飛輪提供)

從一開始,你會沿著這條路走下去,根據發生的事情,你會沿著“流程”走到最終的結果。流程圖是一種視覺化工具,可以更容易地表示計算機使用的一組指令。類似地,演算法也有助於對更多基於數學的模型進行同樣的處理。

讓我們用圖表來說明我們可以給出方向的各種方法。

什麼是計算機演算法,它們是如何工作的?

我們可以把這個圖表示為它所有點之間的連線。為了重現這個影象,我們可以給其他人一套指令。

方法1

我們可以將其表示為一系列點,資訊將遵循圖={(x1,y1),(x2,y2),…,(xn,yn)}的標準形式。

graph = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)}

很容易一個接一個地繪製每個點,並將它們連線到上一個點。然而,想象一下一個有一千個點或多個線段的圖形,所有的方向都是這樣的。名單上會有很多資料,對吧?然後必須連線每一個,一次一個,可能是一種痛苦。

方法2

我們可以做的另一件事是給出一個起點,即它和下一個點之間的直線的斜率,並用標準形式的graph={(起點},[m1,x1,h1],…,[mn,xn,hn]}指出下一個點的位置。這裡,變數'm'表示直線的斜率,'x'表示要計數的方向(無論是x還是y),'h'告訴您在該方向上要計數多少。您還可以記住在每次移動後繪製一個點。

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}

你會得到相同的圖表。你可以看到這個表示式中的最後三個詞是相同的,所以我們可以透過某種方式說“重複三次”來減少這個詞。假設在任何時候看到變數'R'出現,都意味著重複最後一件事。我們可以這樣做:

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}

如果單個點並不重要,只有圖形本身才重要呢?我們可以將最後三部分合並如下:

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}

它使事情比以前縮短了一點。

方法3

讓我們換一種方式試試。

y=0, 0≤x≤3 x=0, 0≤y≤3 y=x, 3≤x≤5 y=2.5x-7.5, 5≤x≤7 y=-3x+29, 7≤x≤8 y=-3x+29, 8≤x≤9 y=-3x+29, 9≤x≤10

這裡我們用純代數的術語來表示。同樣,如果點本身不重要,只有圖表才重要,我們可以合併最後三項。

y=0, 0≤x≤3 x=0, 0≤y≤3 y=x, 3≤x≤5 y=2.5x-7.5, 5≤x≤7 y=-3x+29, 7≤x≤10

現在,你選擇哪種方法取決於你的能力。也許你擅長數學和繪圖,所以你選擇了最後一個選項。也許你擅長導航,所以你選擇了第二種選擇。然而,在計算機領域,你正在做許多不同種類的任務,而計算機的能力並沒有真正改變。因此,演算法針對它們完成的任務進行了最佳化。

另一個需要注意的要點是,每個方法都依賴於一個鍵。每一套指令都是無用的,除非你知道如何處理它們。如果你不知道你應該繪製每個點並連線這些點,那麼第一組點就毫無意義。除非您知道第二種方法中每個變數的含義,否則您將不知道如何應用它們,就像密碼的金鑰一樣。該金鑰也是使用演算法的一個組成部分,通常,該金鑰可以在社群中或透過“標準”找到

檔案壓縮

當您下載一個.zip檔案時,您可以提取其中的內容,以便可以使用其中的任何內容。現在,大多數作業系統可以像普通資料夾一樣深入到.zip檔案中,在後臺執行所有操作。十多年前,在我的windows95機器上,我不得不手動提取所有內容,然後才能看到裡面除了檔名以外的任何內容。這是因為儲存在磁碟上的.zip檔案不是可用的格式。想一個可拉出的沙發。當你想把它當床用的時候,你必須把墊子取下來展開,這樣會佔用更多的空間。當你不需要的時候,或者你想運輸的時候,你可以把它摺疊起來。

壓縮演算法專門針對其目標檔案的型別進行調整和最佳化。例如,每種音訊格式都使用不同的方式來儲存資料,當音訊編解碼器對這些資料進行解碼時,將產生與原始波形相似的聲音檔案。有關這些差異的更多資訊,請檢視我們的上一篇文章,所有這些音訊格式之間的差異是什麼?無損音訊格式和.zip檔案有一個共同點:它們都在解壓過程後以精確的形式生成原始資料。有損音訊編解碼器使用其他方法來節省磁碟空間,例如修剪人耳聽不到的頻率,平滑分段波形以去除一些細節。最後,雖然我們可能無法真正聽到MP3和CD曲目之間的區別,但肯定是前者資訊不足。

資料加密

什麼是計算機演算法,它們是如何工作的?

演算法也用於保護資料或通訊線路。儲存資料不是為了減少磁碟空間,而是以其他程式無法檢測到的方式進行儲存。如果有人偷了你的硬碟並開始掃描它,即使你刪除了檔案,他們也可以提取資料,因為資料本身仍然存在,即使轉發到它的位置不見了。當資料被加密時,所儲存的東西看起來都不像它是什麼。它通常看起來是隨機的,就好像碎片是隨著時間積累起來的。您還可以儲存資料並使其顯示為另一種型別的檔案。影象檔案和音樂檔案是很好的,因為它們可以相當大,而不會引起懷疑,例如。所有這些都是透過使用數學演算法來完成的,這些演算法將某種輸入轉換成另一種非常特殊的輸出型別。有關加密工作原理的更多資訊,請檢視HTG解釋:什麼是加密及其工作原理?


演算法是數學工具,在電腦科學中有多種用途。它們以一致的方式提供起點和終點之間的路徑,並提供遵循該路徑的指令。知道的比我們強調的更多?在評論中分享你的解釋!

  • 發表於 2021-04-09 01:40
  • 閱讀 ( 41 )
  • 分類:網際網路

你可能感興趣的文章

機器學習(machine learning)和人工智慧(artificial intelligence)的區別

...的科學,它像人類一樣聰明。 目錄 1. 概述和主要區別 2. 什麼是機器學習 3. 什麼是人工智慧 4. 機器學習與人工智慧的相似性 5. 並列比較-機器學習與人工智慧的表格形式 6.摘要 什麼是機器學習(machine learning)? 演算法是告訴計算...

  • 發佈於 2020-10-19 20:24
  • 閲讀 ( 48 )

靜止的(static)和動態路由(dynamic routing)的區別

...路規模較大且變化頻繁的網路,動態路由是最合適的。 什麼是靜態路由(static routing)? 在靜態路由中,網路管理員手動將路由條目輸入到每個路由器和計算機的路由表中。路由條目是一個條目,它指定包必須被轉發的閘道器,以...

  • 發佈於 2020-10-29 09:42
  • 閲讀 ( 46 )

什麼是電腦科學?

...電腦科學”用詞不當。電腦科學更類似於數學,這就是為什麼現在有些人更喜歡用“資訊學”來代替。 ...

  • 發佈於 2021-03-13 19:10
  • 閲讀 ( 47 )

什麼是神經網路?它們是如何工作的?

... 但究竟什麼是神經網路?它是如何工作的?為什麼它在機器學習中如此流行? ...

  • 發佈於 2021-03-16 14:03
  • 閲讀 ( 37 )

驗證碼是如何工作的,為什麼這麼難?

... 什麼是CAPTCHA?它們是如何工作的?他們和雷帕查斯有何不同?為什麼他們中的許多人如此困難? ...

  • 發佈於 2021-03-18 09:56
  • 閲讀 ( 50 )

人工智慧將如何對抗現代駭客和網路犯罪

...,儘管這並不容易。不言而喻,有些東西需要改變,但是什麼呢? ...

  • 發佈於 2021-03-22 21:40
  • 閲讀 ( 45 )

ssh是什麼?它代表什麼?

... 那麼,什麼是SSH? ...

  • 發佈於 2021-03-28 08:50
  • 閲讀 ( 54 )

什麼是big-o符號?

你有沒有想過為什麼你寫的程式要花這麼長時間才能執行?也許您想知道是否可以提高程式碼的效率。瞭解程式碼執行如何將程式碼提升到下一個級別。Big-O表示法是計算程式碼實際效率的一個方便工具。 ...

  • 發佈於 2021-03-28 21:51
  • 閲讀 ( 35 )

什麼是校驗和(為什麼要在意)?

...你只需要知道原始檔案的校驗和。 md5、sha-1和sha-256和有什麼區別? 校驗和是確保檔案沒有錯誤的有用方法。如果由於下載問題或硬碟驅動器問題而發生隨機錯誤,那麼產生的校驗和將不同,即使只是一個很小的錯誤。 然而,這...

  • 發佈於 2021-04-05 00:34
  • 閲讀 ( 53 )

計算機如何產生隨機數

...爾內建的硬體隨機數發生器晶片是否值得信賴。要理解為什麼它可能不可信,首先必須瞭解隨機數是如何生成的,以及它們的用途。 隨機數是用來做什麼的 隨機數已經使用了幾千年。無論是擲硬幣還是擲骰子,目標都是把最...

  • 發佈於 2021-04-08 00:19
  • 閲讀 ( 56 )
hyo1563269
hyo1563269

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦