回覆列表
  • 1 # 模里西斯的男人

    這個問題畢業考慮機器人的智慧程度,比如你讓一個小孩和一箇中學生去學習高中數學,肯定學習能力也不同,機器人也一樣,如果一個機器人有超級計算機那樣的大腦,那完全可以用秒計算

  • 2 # 邵坤

    人工智慧興起得時代,什麼神經網路、增強學習、深度學習等諸多牛掰的演算法讓人云裡霧裡,在學習各種各樣應用不同的演算法之前,不如緩一緩來了解一下如何來判斷一個演算法是好是壞。演算法好壞直接影響到程式執行的效率,曾經讀過一本關於中國象棋演算法設計的書籍,該書演算法設計的基本思路就是構建博弈樹進行深度遍歷搜素。理想的狀態就是搜尋到可以獲勝為止,但是象棋局面的複雜度搜尋起來足以讓你等到鬍子花白。所以作者採用了α-β搜尋剪枝的辦法來提高執行效率,這就使得博弈演算法變得比以往要好的多。

    怎麼來評估演算法的好壞,主要兩個方面的判斷:時間複雜度&空間複雜度。

    時間複雜度【O】的計算:(本質就是數程式執行次數)

    用常數1取代執行時間中的所有加法常數。在修改後的執行次數函式中,只保留最高階項。如果最高階項存在且不是1,則改為1。

    這樣得到的結果就是大O階。

    假設計算機執行一次基礎程式碼需要執行一次運算,那麼下面的main函式中執行玩需要執行兩次運算。

    加上for迴圈可以看出main函式中兩次迴圈後執行的運算次數為1+2*1+1 = 4次

    運算次數的函式f(n) = 4,根據上面時間複雜度的計算規則第一條便知,時間複雜度是O(1),而不是O(4)。

    時間複雜度的分類大致分為常數階、線性階、平方階、立方階、對數階等。比如某個函式的運算次數函式為f(n)=32 + 2n + 1,則時間複雜度為O(n3)。如下表:

    常見的時間複雜度如下:

    時間消耗比較:

    O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

    對於演算法的設計,資料量越大,對於時間複雜度的需求便越嚴格,否則時間的損耗都是不同數量級的差距。

    空間複雜度【S】的計算:(就是計算演算法所需要的儲存空間)

    公式:S(n) = O(f(n)),其中,n代表問題的規模,f(n)是語句關於n所佔儲存空間的函式。

    空間複雜度不知道該說些什麼好,其實在編寫程式碼的時候,我們要有一種空間使用的概念,而不是說只知道自己在敲程式碼。尤其涉及到硬體開發,比如STM32,FPGA,嵌入式開發之類,它們不像PC機,由於濫用資源就會導致程式溢位空間不足。

    根據你程式複雜度以及步驟才能詳細計算。

  • 中秋節和大豐收的關聯?
  • 漢語普通話語音中沒有v[v]這個音素,為什麼不能用[w]來代替[v]的發音?它們二者有什麼本質區別?