01アルゴリズムデータ構造/アルゴリズムアーキテクチャの概要

01アルゴリズムデータ構造/アルゴリズムアーキテクチャの概要

1.アルゴリズム

  • アルゴリズムの概要

    コンピュータプログラムは、基本的にコンピュータに指定されたタスクを実行するための正確な手順を指示するアルゴリズムであるので、情報を処理するコンピュータアルゴリズムの本質です。一般的に、アルゴリズム情報処理は、記憶装置またはアドレス入力データからデータを読み出す際に、出力デバイスまたは後のリコールのためのメモリアドレスに結果を書き込みます。

    アルゴリズムは、問題解決の方法やアイデアの存在とは無関係です。

    アルゴリズムの場合、言語は重要な考え方である、重要ではありません。

  • アルゴリズムのファイブ特性

    1. 入力:0またはアルゴリズムは、複数の入力を有します
    2. 出力:のアルゴリズム出力の少なくとも一つ以上
    3. 有限抵抗:限られたステップのアルゴリズム後に自動的に無限ループなしで閉じられ、各ステップは、許容される時間内に完了することができます
    4. 不確実性:アルゴリズムの各ステップはあいまい表示されない、明確な意味を持っています
    5. 実現可能性:アルゴリズムの各ステップは、可能なすべてのステップが実行の限られた数を完了するために、ことを意味し、実現可能です

2.プログラムのメリットを判断する方法

  • コンピュータリソースと効率(直感的ではない)を消費

  • 消費計算アルゴリズムの実行(それはマシンや実行環境に影響を与えられるよう、お勧めしません)

  • 時間の複雑さ(推奨)

3.時間計算

  • 実行数/量子化ステップのアルゴリズム:ルールの評価

  • 式:ランダウの記号

    • 最も重要な項目:最も重要な項目の発現の時間複雑
    • O(最も重要な項目):O(n)は、O(N ** 2)
  • 共通の時間の複雑さ:

    O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)  < O(n!) < O(n^n)

    コード例:次のアルゴリズムの時間計算量を計算します

    a=5
    b=6
    c=10
    for i in range(n):
       for j in range(n):
          x = i * i
          y = j * j
          z = i * j
    for k in range(n):
       w = a*k + 45
       v = b*b
    d = 33
    
    # 时间复杂度:4+3n**2+2n==>n**2

4.データ構造

  • 概念:組織のデータ(基本データタイプ(整数、浮動小数点、文字))については、データ構造として知られていました。どのようなデータ構造のセットは、どのような形の保存、保存するために解かれます。

データ構造体5のpythonのパフォーマンス分析

  • timeitモジュール:このモジュールは、コードのpython区間長/時間の実行の速度をテストするために使用することができます。

  • タイマクラス:クラスは、コードの実行速度を測定するように設計された長さ/時間はtimeitのPythonモジュールです。プロトタイプ:クラスtimeit.Timer(stmtは= 'パス'、セットアップ= 'パス')。

    • stmt引数:今後のテストコードブロック文という。
    • セットアップ:オペレーションのコードブロックのために必要な設定。
    • timeit関数:timeit.Timer.timeit(数= 100000)、関数は、時間の平均時間ステートメントの実行ブロック数を返します。
  • コード例:

    import timeit
    def test01():
        alist = []
        for i in range(1,1001):
            alist += [i]
        return alist
    def test02():
        alist = []
        for i in range(1,1001):
            alist.append(i)
        return alist
    def test03():
        alist = list(range(1,1001))
        return alist
    def test04():
        alist = [i for i in range(1,1001)]
        return alist
    if __name__ == '__main__':
        #stmt:待执行的代码块
        #setup:
        timer = timeit.Timer(stmt='test01()',setup='from __main__ import test01')
        print(timer.timeit(5000))
    
        timer1 = timeit.Timer(stmt='test02()',setup='from __main__ import test02')
        print(timer1.timeit(5000))
    
        timer2 = timeit.Timer(stmt='test03()',setup='from __main__ import test03')
        print(timer2.timeit(5000))
    
        timer3 = timeit.Timer(stmt='test04()',setup='from __main__ import test04')
        print(timer3.timeit(5000))
    
    """ 
    0.41899349999999913
    0.4362713999999954
    0.0754374999999925
    0.2028786999999994
    """  

6.まとめ

  • クエリが同じではありません時間の複雑さに基づいて、組織のデータの異なる形式を使用します。よってと認めアルゴリズムは実用的な問題を解決するために設計された、データ構造は、問題に対処するためのベクトルアルゴリズムです。

おすすめ

転載: www.cnblogs.com/liubing8/p/12059415.html