為什麼人腦能夠計算出時間複雜度BigO,而計算機無法自動計算BigO,本質區別是什麼?

時間 2021-05-05 17:49:53

1樓:

不,對於任意演算法的話,不可以。

人腦也不可以,這是乙個「不可知」的事情。

除非你把問題限制在某些特定的演算法,否則這是圖靈不可計算的。

因為:停機問題是不可計算的

所以你不能判定演算法的執行時間是否是無窮大。

所以你不能給演算法確定時間漸進上界,因為你甚至不知道這個上界是否是「無窮大「,更別提確定它的具體形式了。

2樓:Dour

你專門在電腦上寫乙個算複雜度的程式當然能算複雜度,但是基本沒人這麼做。

因為電腦主要還是執行人的命令的,人才是應該辨別哪個命令快,哪個慢,選取最合適的命令讓電腦執行。試想一下,人類既然已知各種排序演算法的複雜度,(如果求快的話)那為何不直接找乙個最快的排序演算法,讓電腦執行。難道讓電腦耗費更多的資源把所有的排序演算法的複雜度求出來,讓電腦自己做決定嗎?

這個就多此一舉了。

當然當人們想讓電腦處理更複雜,資料量更大的事情的時候就有必要讓電腦這麼做了,這個就需要求助於AI和機器學習的演算法了。

3樓:

這叫Rice's theorem

不要說具體的數量級,電腦連是有限還是無窮都算不出來,這叫停機問題。

人腦能算出來是因為人腦可以構建分析框架可以去分析,而計算機目前無法自動構建。但人腦也不是什麼都能算出來,有大量的近似模糊甚至錯誤之處。

4樓:tripack45

人腦也不能自動給出Big O。你把帶路徑壓縮的並查集給乙個沒有見過的人,有多大可能這個人一口氣能給出最緊的複雜度?不太可能吧。

但是不代表人不能給出乙個正確(但不一定最緊)的bound。

計算機自動給出複雜度Bound的方法並不是沒有,比如Jan Hoffman的工作Resource Aware ML (http://

raml.co/

) 不僅能給出asymtopic bound, 更能給出帶有具體的Bound,不過這個bound不一定是緊的就是了。

5樓:

人腦也不能算出任意程式的複雜度啊.....

相應的,寫的程式也可以算出一些程式的複雜度...

停機問題說的是不存在這樣的程式,能夠判定任意程式是否在有限次內結束...它沒有不允許我們寫乙個程式,判定一部分程式是否結束...

為什麼嚴格的多體波函式不能計算出超導態,而簡單的 BCS 平均場能得到超導態?

樹袋熊 1,確實可以把多體波函式寫成擁有序參量的形式。我們應該用U 1 相位標記這組多體波函式,假設為 每個波函式都給出乙個非零的序參量,且其對應的U 1 相位為 因為相位有無窮多種,這種波函式也就有無窮多種。2,理論或數值上取到的波函式很難擁有非零序參量。因為基態是簡併的,一般來說算出來的具體多體...

值是什麼?它是怎麼被計算出來的呢?

喚醒感覺和意識 是乙個無理數,它約等於3.14159265,是乙個圓的周長與它的直徑之比.計算圓周率的方法有很多,下面就簡單地介紹幾種 1.正多邊形的邊數越多,它看起來就越接近圓.根據這一結論,我們可以同時做出乙個圓的內接正n邊形和外切正n邊形,據說當n的值等於192時,我們就能夠得到 的近似值為3...

為什麼人們計算年齡常用虛歲

林佳樹小花 看到網上有說說虛歲是把媽媽懷孕的時間也算進去,這是古人的智慧型之類的云云,我想說這是不對的。虛歲的演算法生出來算一歲,過了春節加一歲。但是有一部分人生日小,比如在春節前幾天生,生下來虛一歲,過幾天就虛兩歲了,按照前面這個邏輯,難帶這些人被懷孕了24個月不成。所以虛歲跟媽媽懷孕並沒有關係,...