理論計算機有哪些特別的算法,它們的算法複雜性很高嗎?

2021-01-13 我是天邊飄過一朵雲

理論計算機作為現代計算機體系結構的一個分支,其算法與複雜性是理論計算機中最核心、最基礎的主題。下面是小編關於一些關於理論計算機算法的資料心得,與大家分享。

1. 算法

算法的出現遠遠早於計算機的出現,比如我們在小學時學過的通過列豎式的方法來計算兩個整數乘積,再比如,用著名的歐幾裡得的輾轉相除法來求兩個整數的最大公約數。很多好的算法,比如快速排序算法、高斯消元法快速傅立葉變換等,是計算機如今能在生產和生活中有如此廣泛應用的基礎。雖然算法因問題而異,但一些設計算法的方法,總會在不同的場景出現。比如貪心法、分治法、動態規劃、最大流和線性規劃等。

如何衡量一個算法的快慢或者運行時間?這是一個定義的問題。首先,算法的運行時間與運行它的機器相關,現在手機的運行能力已經遠遠超出幾十年前超級計算機的運行能力。為了解決這個問題,我們一般不直接用自然時間來衡量算法的快慢,而是用它需要進行的基本操作的數目作為時間的度量,但一般還是把它叫做運行時間。其次,算法的運行時間與問題的輸入有直接關係。一般來說,輸入的規模越大,算法的運行時間也就越長。即使是相同的輸入規模,不同的輸入所需的運行時間差異也很大。所以,如果我們在具體輸入的意義下比較不同的算法,往往得出不可比較的結論。比如算法A在輸入x上比算法B要快,但是在輸入y上則比算法B慢。因此,我們需要一個比較簡潔的量來衡量一個算法快慢。在理論計算機領域,最常用的標準是漸近意義下的最壞情況分析。我們看運行時間隨著輸入問題規模增長的函數,然後對於相同規模的不同輸入,我們考慮在該規模下最壞輸入的情況。針對這種定義方式,有很多數學上的好處,當然也有很多問題,特別是在一些特定的場合。因此,有時需要改變定義以獲得更加準確的結論,比如平滑分析等。

怎樣定義一個算法是快速有效的?它的定義是,在漸近意義下最壞情況算法的運行時間總是不超過問題輸入規模的一個多項式函數。選擇一個多項式函數的基本標準是:當問題的規模增加一倍時,其運行時間也只是常數倍增加。從數學上講,這個多項式函數類的性質應比較好。比如算法A的輸入來自算法B的結果,如果算法A、算法B都是多項式時間的,則A和B的複合函數也是多項式時間的。當然這種定義在很多時候也受到挑戰,特別是在網際網路大數據時代。因此,對於海量數據,我們需要研究在線性時間甚至亞線性時間裡,可以完成的工作種類。

2. 複雜性理論

在計算複雜性理論中,討論更多的是問題的複雜性,而不僅僅是算法的複雜性。問題的複雜性是指解決問題的最佳算法的複雜性,核心是如何確定一個問題是否存在多項式時間的算法。我們把所有存在多項式時間算法的問題定義為複雜類P,若要說明一個問題存在多項式時間的算法是比較容易的,只須給出一個這樣的算法即可;但要證明一個問題不存在任何多項式時間算法就很難,因為從原則上講,我們無法給出無窮多的算法來說明不存在的多項式時間算法。

對於NP問題,不少人會回答是Non-Polynomial,即指不存在多項式時間算法的問題。這是一個誤解,NP的N不是Non,而是Nondeterministic Turing Machine(非確定圖靈機)。NP是指所有那些在非確定圖靈機上多項式時間有解的問題。非確定圖靈機是另一個計算模型。NP問題的另一個定義是:對於這類問題,如果有一個解,則我們可以在多項式時間裡驗證該解是否正確。現實中有很多NP題,比如可滿足性問題、圖染色問題、旅行商問題等。計算複雜性領域中最核心的問題是,P類問題和NP類問題是否相等。當然,按照定義,P類問題都屬於NP,那麼是否存在NP類問題不屬於P,即不存在多項式時間算法?這是克萊研究所千禧年難題大獎中宣布的7道數學題之一(NP vs. P問題)。對於這個問題,人們普遍認為NP不等於P,但是現在看起來,我們離證明還很遙遠。複雜性理論是規約以及NP完全的理論。對此感興趣的朋友可以從教科書上找到嚴格的定義。大致來說,NP完全問題是NP問題的一個子類,也是NP問題中最難的部分。「最難」的意思是指:如果任何一個NP完全問題存在一個多項式時間的算法,那麼所有的NP問題都存在多項式時間的算法。即,如果NP不等於P,那麼任何一個NP完全問題都不存在多項式時間的算法。因為通常都相信NP不等於P,所以若要證明一個問題是NP完全的,基本上就說明這個問題是困難的。迄今為止,已經有成千上萬的問題被證明是NP完全的。除了P和NP,計算複雜性中還有很多其他複雜性類。P、NP等都是針對判定問題而言的,有些計算問題則不是判斷問題。

3. 全息算法

大多數人都相信P不等於NP,其中一個最直接的原因是已知的這些算法設計的方法都不能用來解決NP完全,或者更困難的問題。但是,為了證明P不等於NP,我們必須證明所有多項式時間的算法都不能用來解決NP完全問題。常見的算法當然不是所有的算法,而且在研究的過程中,確實會有一些新的、甚至完全不同的算法設計方法被發明。比如全息算法(Holographic Algorithm),全息算法是圖靈獎得主萊斯利教授在2004年提出的新算法設計方法,與量子計算有一些類似,但可以在經典計算機上在多項式時間內完成。萊斯利利用這項技術給一些有趣的問題設計了多項式時間算法。儘管人們很容易驗證這些算法是正確的,但並不知道如何為新問題設計全息算法。這種新算法技術吸引了一大批研究人員的注意,《科學美國人》等著名雜誌都有專題報導,大家甚至考慮這個方法是否可以解決NP問題。不過,根據學術界對全息算法的能力和局限有了完整而系統的認識,普遍認為全息算法也不能解決NP完全問題。

4. 迭代算法與局部搜索算法

對於迭代和局部搜索這類算法,其實我們也沒有很好地解釋它們為何不能解決NP完全問題。這類算法從某個初始狀態或初始解出發,不斷地按照某種規則更新當前的狀態或者解,然後達到一定的終止條件時就輸出當時的狀態或者解。典型的有解線性規劃的單純形法、機器學習中的EM算法、數值計算中的牛頓法等。這類算法的特點是其普適性,它可以適用很多不同的問題,基本上不需要巧妙的設計。當然,除了個別成功的例子外,對於這類算法的理論分析比前面提到的貪心法、動態規劃等要困難得多。

對於那些組合的算法,在同一規模的不同輸入上其運行時間大多是相對穩定的,或者至少是比較好估計、比較好預測的不同的輸入上的運行時間。對於迭代算法和局部搜索算法,它們局部狀態或者解的空間規模一般是指數級的。在這種空間上的一個迭代或者搜索能不能在多項式時間內到達終止條件呢?這是一個非常難的問題。如何從理論上更好地理解這些算法是算法理論研究中近期備受關注的一個重要方向。比如對十線性規劃的單純型法,最壞情況的運行時間是呈指數的,但它在現實中運行效果相當不錯,原因何在?斯皮爾曼(Spielman)和滕尚華提出了平滑分析(smooth analysis)的思路,並給出了解釋。其內容大致是,若那些很壞的問題實例在可能的輸人範圍內很稀疏,而且很不穩定,則只要稍微給其一些擾動,它們就能變成運行時間很短的實例。

類似這樣的算法還有很多,使用較多的有統計物理和機器學習中的基於馬爾可夫鏈的蒙特卡洛(Markov Chain Monte Carlo,MCMC)方法和信念傳播(brief propagation)算法。對於基於馬爾可夫鏈的蒙特卡洛方法,現在已經開發出許多數學工具來分析它們在何種情況下會快速到達一種穩定的分布。而我最近兩三年的一些工作就是希望利用一種相關性遞減的數學工具,來證明在一些情況下,信念傳播算法會快速收斂到正確解的一個領域。雖然我們藉助這些數學工具只能處理一部分基於馬爾可夫鏈的蒙特卡洛方法和信念傳播算法的分析,還有很多未解決的問題(對於其他迭代算法和局部搜索算法,這樣的問題就更多了),但是我認為能夠更好地理解這些算法,進而開發一些新的數學工具來分析這些算法,是當前理論計算一個非常重要的方向。這是因為它們很多時候都不是人為設計的算法,而是自然界的自然的動態規律,比如生物進化系統、社會博弈動態系統,都有這種迭代和局部調整的特點。我們開發的數學工具也可以用來分析這些動態系統。

相關焦點

  • 算法是什麼:計算機領域中算法的科普
    它們怎麼會知道答案?為何它們會顯示正確答案?所有這些都要感謝算法。每當你使用手機、計算機、筆記本電腦或計算器時,其實都在使用算法。那麼,什麼是算法?如果你想做數學運算,比如說兩個數字相乘(不使用任何電子設備),那麼你需要在紙上做乘法。你按照一定的規則獲得正確的答案。你也可以使用耗時更少的方法來做計算。這就是算法。
  • 算法到實戰,如何零基礎入門計算機視覺領域
    對於計算機來說,它首先會通過一個相機或者一個攝像頭,獲取這張圖片,會用計算機它自己的一些算法來看圖片,並用預算法來理解,它也想能夠從圖片中讀出:這是一個花園,這是一個春天這些有橋有水之類的信息。計算機視覺就是最核心的這一步就是要理解它,理解的過程就是:第一步先提供給它數據,數據的話其實有靜態的圖片,也有一些視頻。
  • 理論計算機研究的都是些什麼內容?
    比如複雜性理論的CCC、計算經濟學的EC、機器學習理論的COLT、計算幾何學的SoCG等。這些都表明理論計算機是一個龐大的領域,有很多課題,並且不同子領域的研究者之間往往很難了解對方的工作。小編無法談及理論計算機的所有分支,只能重點探討理論計算機的不同領域本質上的共性,並討論其最基本的問題與思維方式。理論計算機有許多自身的特點。與其他計算機學科相比,不僅僅是研究對象的不同。
  • 算法下的選擇讓渡,你被算法裹挾了嗎?
    算法,最初僅用來分析簡單的、範圍較小的問題,輸入輸出、通用性、可行性、確定性和有窮性等是算法的基本特徵。也就是說,算法是一個過程或一組規則,它可以像食譜一樣簡單,也能夠像機器學習程序代碼一樣複雜。數學是算法的基礎之一,而且走得相當艱難。
  • 陳根:算法下的選擇讓渡,你被算法裹挾了嗎?
    算法基礎和算法前提一般來說,算法是為解決特定問題而對一定數據進行分析、計算和求解的操作程序。算法,最初僅用來分析簡單的、範圍較小的問題,輸入輸出、通用性、可行性、確定性和有窮性等是算法的基本特徵。從此,算法走出古典數學家的演算紙,進入計算機時代。而數據信息則是算法存在的前提。事實上,算法的本質就是對數據信息的獲取、佔有和處理,在此基礎上產生新的數據和信息。簡言之,算法是對數據信息或獲取的所有知識進行改造和再生產。
  • 發力量子計算軟體、算法和應用,阿里AQL聯合學界尋找「量子貓」
    Szegedy 教授作為 PCP 定理和流算法的證明者和貢獻者之一,曾兩次獲得理論計算機領域最高榮譽獎 Gdel Prize,其工作對量子算法和計算複雜性以及量子通信密碼學和工程研究提供了非常重要的理論基礎。同樣 Peter Shor 教授也因開發了可用於因數分解的 Shor 算法獲得1999 年的 Gdel Prize[4]。
  • MIT提出了用隨機數生成隨機數的計算機算法
    眾所周知,計算機無法製造出隨機性,它們也不應該:計算機軟體和硬體運行在布爾邏輯,而非概率上。 目前,我們使用的真隨機數據,一般來自系統從物理環境中採集到的「隨機噪音」。 但是計算機科學家想要可以處理隨機性的程序,因為那有時候是解決問題所必須的。
  • 圖像處理算法有哪些_圖像處理十大經典算法
    同時,計算機已經作為一種人們普遍使用的工具為人們的生產生活服務。圖像處理概況圖像處理,是對圖像進行分析、加工、和處理,使其滿足視覺、心理以及其他要求的技術。圖像處理是信號處理在圖像域上的一個應用。目前大多數的圖像是以數字形式存儲,因而圖像處理很多情況下指數字圖像處理。本文接下來將簡單粗略介紹下數字圖像處理領域中的經典算法。
  • 常見的機器學習算法,你知道幾個?
    誕生於1956年的人工智慧,由於受到智能算法、計算速度、存儲水平等因素的影響,在六十多年的發展過程中經歷了多次高潮和低谷。最近幾年,得益於數據量的上漲、運算力的提升,特別是機器學習新算法的出現,人工智慧迎來了大爆發的時代。提到機器學習這個詞時,有些人首先想到的可能是科幻電影裡的機器人。
  • 利用計算機,人類能發現「萬物理論」嗎?
    曾經,阿爾伯特·愛因斯坦把科學理論描述為「人類思想的自由發明」。但在1980年,著名的劍橋大學宇宙學家史蒂芬·霍金有另一種想法。在那年的一次演講中,他提出,所謂的「萬物理論」可能是可以實現的,但它的最後實現可能要靠計算機來完成。
  • 算法穩定幣深度分析:從AMPL,Basis等看算法穩定幣的機會與不足
    最後,也許也是最重要的一點是,算法穩定幣通常具有很高的反身性(reflexive):需求在很大程度上是由市場情緒和動力驅動的,這一點受到很多爭論。這些需求方的力量被轉移到代幣供應中,進而在最終成為暴力反饋迴路的方向上產生進一步的方向動量。每種穩定幣模型都有其權衡。很少關注中心化的投資者將不會對USDT和USDC有任何問題。
  • 計算機專業應數據結構和算法至上?還是與業務掛鈎的技術至上?
    近日,一位網友在知乎上發起提問:計算機學生在大學四年應是以數據結構和算法為重還是技術為重?引來網友紛紛圍觀!讀計算機專業的你,大學四年是否還在迷茫是以數據結構和算法為重還是技術為重? 要想解除疑惑,先要知道計算機科學與技術這個專業都包含了什麼。
  • 算法機制對媒體社會責任的影響
    雖然在主觀意願上破除派在否定資訊聚合類客戶端的媒體屬性,但事實上,從用戶和業界的認知,以及這類產品實際發生的作用來看,它們都有著不可否認的媒體屬性。 透過喧譁的表面,雙方爭論的核心可以歸結為一點——媒體應該堅持固定價值還是多元價值?這一問題直指媒介規範理論本身。
  • FLDR算法問世,人類距離將隨機性注入計算機還差一步
    計算機也不會很好地產生隨機性。因為計算機軟體和硬體運行在布爾邏輯上,而不是概率上。麻省理工學院概率計算項目的負責人維卡什·曼辛格(Vikash Mansinghka)表示,「計算文化以確定性為中心。」但是計算機科學家希望程序能夠處理隨機性,因為有時這就是一個問題所需要的。
  • Fisher-Yates洗牌算法!來自算法理論的創始人!
    引言 首先看一道題目:有一個大小為100的數組,裡面的元素是從 1 到 100,隨機從數組中選擇50個不重複數。 用 Math.random() * 100 ,就可以拿到一個 0 到 99 的隨機數,是不是重複50次就可以了?
  • 什麼是算法?這裡有一個簡單的表述
    筆者是一個計算機愛好者,非計算機專業出身。筆者發現一個業餘計算機愛好者的計算機學習,充滿羞澀難懂的時光。網絡上也充滿了各種學習的網站,這些網站自然也是學習計算機的聖地,筆者也是通過各種網站的搜索和閱讀來學習的。但筆者感覺,特別是對於還沒入門的初學者來說,自學難度還是比較大,大概是很多知識點之間缺乏系統的連貫。
  • 史上最全GAN綜述2020版:算法、理論及應用
    時至今日,基於 GAN 設計的新型算法如雨後春筍般紛紛湧現了出來、對於 GAN 存在的模式坍塌和收斂性等理論問題的深入分析層出不窮,其應用也廣泛滲透到了諸如計算機視覺、自然語言處理、醫療人工智慧等領域中。本文是一份出自陶大程、葉傑平老師等大牛之手的 GAN 詳細綜述,介紹了近年來有關 GAN 模型的相關研究進展,並指出了今後該領域的發展方向。
  • 超星大數據算法期末考試答案
    ,其中將圖問題表示為有向無環圖的估值問題的是()。判斷可計算否判斷能行可計算否算法設計與分析用計算機語言實現算法37數據流算法3用機器完成眾包的優勢有()。()(1.0分)1.0分我的答案: √4對於大數據而言,標準計算理論模型失效的原因之一是內存是有限的,無法存儲所有的內存。
  • 「機器學習」機器學習算法優缺點對比(匯總篇)
    「換言之,就是沒有算法能完美地解決所有問題,尤其是對監督學習而言(例如預測建模)」。舉例來說,你不能去說神經網絡任何情況下都能比決策樹更有優勢,反之亦然。它們要受很多因素的影響,比如你的數據集的規模或結構。其結果是,在用給定的測試集來評估性能並挑選算法時,你應當根據具體的問題來採用不同的算法。
  • 樂透彩算法
    技術派的首先有運用數學方法。K線就一種重要的可運用數學分析的方法。主要是概率理論基礎。K線借用股票的K線名詞,但用法完全不一樣。股票K線主要判斷股份的轉折點和上漲下跌幅度,而彩票主要判斷下期出號範圍。所以大家不要被股市的算法誤導。