<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # **函數漸近增長:** 分析算法函數增長率是為了體現跟算法函數有關的因素。為算法的復雜度分析做基礎。 概念:給定兩個函數f(n)和g(n),如果存在一個整數N,使得對于所有的n>0,f(n)總是比g(n)大,那么我們說f(n)的增長漸近 快于g(n)。 概念似乎有點艱澀難懂,那接下來我們做幾個測試。 ### **1.測試一:假設四個算法的輸入規模都是n:** 1.算法A1要做2n+3次操作,可以這么理解:先執行n次循環,執行完畢后,再有一個n次循環,最后有3次運算; 2.算法A2要做2n次操作; 3.算法B1要做3n+1次操作,可以這個理解:先執行n次循環,再執行一個n次循環,再執行一個n次循環,最后有1 次運算。 4.算法B2要做3n次操作; 那么,上述算法,哪一個更快一些呢? ![](https://img.kancloud.cn/d4/6f/d46f0832cd793340a85cdb023aaf5e7c_953x100.jpg) ![](https://img.kancloud.cn/84/d8/84d8c3ecb998f5c77098e9288508f52f_964x419.jpg) 通過數據表格,比較算法A1和算法B1: 當輸入規模n=1時,A1需要執行5次,B1需要執行4次,所以A1的效率比B1的效率低; 當輸入規模n=2時,A1需要執行7次,B1需要執行7次,所以A1的效率和B1的效率一樣; 當輸入規模n>2時,A1需要的執行次數一直比B1需要執行的次數少,所以A1的效率比B1的效率高; 所以我們可以得出結論 當輸入規模n>2時,算法A1的漸近增長小于算法B1 的漸近增長 通過觀察折線圖,我們發現,隨著輸入規模的增大,算法A1和算法A2逐漸重疊到一塊,算法B1和算法B2逐漸重疊 到一塊,所以我們得出結論: **隨著輸入規模的增大,算法的常數操作可以忽略不計** ### **2.測試二:假設四個算法的輸入規模都是n:** 1.算法C1需要做4n+8次操作 2.算法C2需要做n次操作 3.算法D1需要做2n^2次操作 4.算法D2需要做n^2次操作 那么上述算法,哪個更快一些? ![](https://img.kancloud.cn/19/ce/19ce3e67f317d45c5874e95242ae29f7_945x534.jpg) 通過數據表格,對比算法C1和算法D1: 當輸入規模n<=3時,算法C1執行次數多于算法D1,因此算法C1效率低一些; 當輸入規模n>3時,算法C1執行次數少于算法D1,因此,算法D2效率低一些, 所以,總體上,算法C1要優于算法D1. 通過折線圖,對比對比算法C1和C2: 隨著輸入規模的增大,算法C1和算法C2幾乎重疊 通過折線圖,對比算法C系列和算法D系列: 隨著輸入規模的增大,即使去除n^2前面的常數因子,D系列的次數要遠遠高于C系列。 因此,可以得出結論: **隨著輸入規模的增大,與最高次項相乘的常數可以忽略** ### **3.測試三:假設四個算法的輸入規模都是n:** 算法E1: 2n^2+3n+1; 算法E2: n^2 算法F1: 2n^3+3n+1 算法F2: n^3 ![](https://img.kancloud.cn/97/10/97102f1ea8a8661143459f8aba3cfd56_942x124.jpg) ![](https://img.kancloud.cn/2c/ac/2cac3137310ce803ba3f6baa59d74ada_937x295.jpg) 通過數據表格,對比算法E1和算法F1: 當n=1時,算法E1和算法F1的執行次數一樣; 當n>1時,算法E1的執行次數遠遠小于算法F1的執行次數; 所以算法E1總體上是由于算法F1的。 通過折線圖我們會看到,算法F系列隨著n的增長會變得特塊,算法E系列隨著n的增長相比較算法F來說,變得比較 慢,所以可以得出結論: **最高次項的指數大的,隨著n的增長,結果也會變得增長特別快** ### **4.測試四:假設四個算法的輸入規模都是n:** 假設五個算法的輸入規模都是n: 算法G: n^3; 算法H: n^2; 算法I: n: 算法J: logn 算法K: 1 那么上述算法,哪個效率更高呢? ![](https://img.kancloud.cn/fc/1a/fc1ad53d4d9e0e5e46cdf0af3875c6f0_945x67.jpg) ![](https://img.kancloud.cn/1b/57/1b579e17455aef9748b301421b93a4f4_939x349.jpg) 通過觀察數據表格和折線圖,很容易可以得出結論: **算法函數中n最高次冪越小,算法效率越高 ** 總上所述,在我們比較算法隨著輸入規模的增長量時,可以有以下規則: 1.算法函數中的常數可以忽略; 2.算法函數中最高次冪的常數因子可以忽略; 3.算法函數中最高次冪越小,算法效率越高。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看